Added getStatus() method and now also testing for the correct status.
[utils] / system / general / src / main / java / org / wamblee / system / AbstractComponent.java
index 5c96b5491f650288dce681a15337b389f71490d8..47c82862683bc08881b1f42caacdd483f6d11df2 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;
@@ -37,6 +39,7 @@ public abstract class AbstractComponent implements Component {
         */
        protected AbstractComponent(String aName, ServiceRegistry aRegistry, InterfaceDescriptor[] aProvided,
                        InterfaceDescriptor[] 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();