X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=system%2Fgeneral%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fsystem%2Fcore%2FAbstractComponent.java;h=9bad650d23cb47d42da9cb29dec850b166aafcff;hb=8a6ee427cf3de42d9dd9d8fea09ee9fd059ee53e;hp=d86277d880a16068c33dfa0d00f73a2b7487eae4;hpb=98dc838908507748b413ad0d93e9050cbb6ecdeb;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..9bad650d 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,17 +132,35 @@ 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() {