this(aName, new ProvidedInterface[0], new RequiredInterface[0]);
}
- protected AbstractComponent addProvidedInterface(ProvidedInterface aProvided) {
+ public AbstractComponent addProvidedInterface(ProvidedInterface aProvided) {
_provided.add(aProvided);
return this;
}
- protected AbstractComponent addRequiredInterface(RequiredInterface aRequired) {
+ public AbstractComponent addRequiredInterface(RequiredInterface aRequired) {
_required.add(aRequired);
return this;
}
}
}
+ @Override
public String getContext() {
return _context;
}
@Override
public final Type start(Scope aScope) {
- LOG.info("Initializing '" + getQualifiedName() + "'");
+ LOG.info("Initialization starting '" + getQualifiedName() + "'");
List<ProvidedInterface> oldRemaining = _remaining.get();
_remaining.set(new ArrayList<ProvidedInterface>(Arrays.asList(getProvidedInterfaces())));
try {
Type runtime = doStart(aScope);
checkNotStartedInterfaces();
+ LOG.info("Initialization finished '" + getQualifiedName() + "'");
return runtime;
} finally {
_remaining.set(oldRemaining);
Object aService, Scope aScope) {
LOG.info("Interface '" + getQualifiedName() + "."
+ aDescriptor.getName() + "' started.");
- _remaining.get().remove(aDescriptor);
+ if ( !_remaining.get().remove(aDescriptor) ) {
+ throw new SystemAssemblyException("Component '" + getQualifiedName() + "' started an unexpected interface '" +
+ aDescriptor + "' that was not registerd as a provided interface before");
+ }
aScope.publishInterface(aDescriptor, aService);
}
@Override
public void stop(Type aRuntime) {
+ LOG.info("Stopping initiated '" + getQualifiedName() + "'");
doStop(aRuntime);
+ LOG.info("Stopping completed '" + getQualifiedName() + "'");
}
protected abstract void doStop(Type aRuntime);