X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=system%2Fgeneral%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fsystem%2Fcore%2FAbstractComponent.java;h=b202f285412040a8a42b13bc9aba4a3684f26636;hb=d26bc47d9b0d293ae3d2bd38975f24310fc9be6e;hp=d86277d880a16068c33dfa0d00f73a2b7487eae4;hpb=f4bb0b383ded9c7303a5d81cc6ee87df530d6716;p=utils diff --git a/system/general/src/main/java/org/wamblee/system/core/AbstractComponent.java b/system/general/src/main/java/org/wamblee/system/core/AbstractComponent.java index d86277d8..b202f285 100644 --- a/system/general/src/main/java/org/wamblee/system/core/AbstractComponent.java +++ b/system/general/src/main/java/org/wamblee/system/core/AbstractComponent.java @@ -124,7 +124,7 @@ public abstract class AbstractComponent implements Component { * @param aService * Service. */ - protected final void addService( + protected final void addInterface( ProvidedInterface aDescriptor, Object aService) { LOG.info("Interface '" + getQualifiedName() + "." + aDescriptor.getName() + "' started."); _running.add(aDescriptor); @@ -132,21 +132,39 @@ public abstract class AbstractComponent implements Component { } @Override - public ProvidedInterface[] getRunningServices() { + public ProvidedInterface[] getRunningInterfaces() { return _running.toArray(new ProvidedInterface[0]); } @Override public void stop() { - doStop(); + doStop(); + if ( _running.size() > 0 ) { + // programming error. + throw new RuntimeException(getQualifiedName() + ": still services running after the stop call."); + } _status = Status.STOPPED; } - protected abstract void doStop(); + protected abstract void doStop(); + + /** + * Implementations must call this method to indicate that a running service has + * been stopped. + * + * @param aService + * Service. + */ + protected final void removeInterface( + ProvidedInterface aDescriptor) { + LOG.info("Interface '" + getQualifiedName() + "." + aDescriptor.getName() + "' stopped."); + _running.remove(aDescriptor); + aDescriptor.publish(null); + } @Override public String toString() { - return _name; + return getQualifiedName(); } }