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.
private static final Log LOG = LogFactory.getLog(AbstractComponent.class);
+ private Status _status;
private String _name;
private ServiceRegistry _registry;
private List<InterfaceDescriptor> _provided;
*/
protected AbstractComponent(String aName, ServiceRegistry aRegistry, InterfaceDescriptor[] aProvided,
InterfaceDescriptor[] aRequired) {
+ _status = Status.NOT_STARTED;
_name = aName;
_registry = aRegistry;
_provided = new ArrayList<InterfaceDescriptor>();
_required.addAll(Arrays.asList(aRequired));
_running = new HashMap<InterfaceDescriptor, Service>();
}
+
+ @Override
+ public Status getStatus() {
+ return _status;
+ }
@Override
public final String getName() {
LOG.info("Initializing '" + aContext + "." + _name + "' with "
+ Arrays.asList(aRequiredServices));
doStart(aContext + "." + getName(), aRequiredServices);
+ _status = Status.RUNNING;
return _running.values().toArray(new Service[0]);
}
for (Service svc: _running.values()) {
getRegistry().remove(svc);
}
+ _status = Status.STOPPED;
}
protected abstract void doStop();