X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=system%2Fgeneral%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fsystem%2FAbstractComponent.java;h=885cad6e1056980a5b2c769b2b9866ce8d7842fc;hb=31eaf22e775e8f809aed21c0d0e0eff5aaf0a916;hp=5c96b5491f650288dce681a15337b389f71490d8;hpb=6528585feb4b95cd50d63d5f4230b5eeb3e606d9;p=utils diff --git a/system/general/src/main/java/org/wamblee/system/AbstractComponent.java b/system/general/src/main/java/org/wamblee/system/AbstractComponent.java index 5c96b549..885cad6e 100644 --- a/system/general/src/main/java/org/wamblee/system/AbstractComponent.java +++ b/system/general/src/main/java/org/wamblee/system/AbstractComponent.java @@ -9,6 +9,7 @@ import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.wamblee.system.Component.Status; /** * Abstract subsystem class making it easy to implement new subsystems. @@ -17,11 +18,12 @@ public abstract class AbstractComponent implements Component { private static final Log LOG = LogFactory.getLog(AbstractComponent.class); + private Status _status; private String _name; private ServiceRegistry _registry; - private List _provided; - private List _required; - private Map _running; + private List _provided; + private List _required; + private Map _running; /** * Constructs the subsystem. @@ -35,15 +37,21 @@ public abstract class AbstractComponent implements Component { * @param aRequired * Required services. */ - protected AbstractComponent(String aName, ServiceRegistry aRegistry, InterfaceDescriptor[] aProvided, - InterfaceDescriptor[] aRequired) { + protected AbstractComponent(String aName, ServiceRegistry aRegistry, ProvidedInterfaceDescriptor[] aProvided, + RequiredInterfaceDescriptor[] aRequired) { + _status = Status.NOT_STARTED; _name = aName; _registry = aRegistry; - _provided = new ArrayList(); + _provided = new ArrayList(); _provided.addAll(Arrays.asList(aProvided)); - _required = new ArrayList(); + _required = new ArrayList(); _required.addAll(Arrays.asList(aRequired)); - _running = new HashMap(); + _running = new HashMap(); + } + + @Override + public Status getStatus() { + return _status; } @Override @@ -71,6 +79,7 @@ public abstract class AbstractComponent implements Component { LOG.info("Initializing '" + aContext + "." + _name + "' with " + Arrays.asList(aRequiredServices)); doStart(aContext + "." + getName(), aRequiredServices); + _status = Status.RUNNING; return _running.values().toArray(new Service[0]); } @@ -110,6 +119,7 @@ public abstract class AbstractComponent implements Component { for (Service svc: _running.values()) { getRegistry().remove(svc); } + _status = Status.STOPPED; } protected abstract void doStop();