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=323116ae80daecd6e064abe014a080c5cd03b123;hp=5d89e4a46f839078c7adc5876bae684a3d2cdb8f;hpb=ebb4c1d01787f66e5dc2dd73780663b950122334;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 5d89e4a4..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 @@ -89,12 +89,12 @@ public abstract class AbstractComponent implements Component { } @Override - public final ProvidedInterface[] getProvidedServices() { + public final ProvidedInterface[] getProvidedInterfaces() { return _provided.toArray(new ProvidedInterface[0]); } @Override - public final RequiredInterface[] getRequiredServices() { + public final RequiredInterface[] getRequiredInterfaces() { return _required.toArray(new RequiredInterface[0]); } @@ -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() {