X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=system%2Fgeneral%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fsystem%2FAbstractComponent.java;h=9354a5c3f8dde26b52ec885c1fb67de039383cc5;hb=e055966cbba51cbf35546dbc50f29516cf6e304f;hp=5c96b5491f650288dce681a15337b389f71490d8;hpb=6f277575685808a5c5a76555dd3e839dc5255031;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..9354a5c3 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,6 +18,7 @@ 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; @@ -35,8 +37,9 @@ 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(); @@ -45,6 +48,11 @@ public abstract class AbstractComponent implements Component { _required.addAll(Arrays.asList(aRequired)); _running = new HashMap(); } + + @Override + public Status getStatus() { + return _status; + } @Override public final String getName() { @@ -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();