Added missing test case.
[utils] / system / general / src / main / java / org / wamblee / system / AbstractComponent.java
index 5c96b5491f650288dce681a15337b389f71490d8..9354a5c3f8dde26b52ec885c1fb67de039383cc5 100644 (file)
@@ -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<InterfaceDescriptor> _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<InterfaceDescriptor>();
@@ -45,6 +48,11 @@ public abstract class AbstractComponent implements Component {
                _required.addAll(Arrays.asList(aRequired));
                _running = new HashMap<InterfaceDescriptor, Service>();
        }
+       
+       @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();