*
* @author Erik Brakkee
*/
-public class CompositeSystem extends AbstractSubSystem {
+public class CompositeSystem extends AbstractComponent {
private static final Log LOG = LogFactory.getLog(CompositeSystem.class);
- private SubSystem[] _systems;
+ private Component[] _systems;
/**
* Construcst the composite system.
* @param aProvided Provided services of the system.
* @param aRequired Required services by the system.
*/
- public CompositeSystem(String aName, ServiceRegistry aRegistry, SubSystem[] aSystems,
- ServiceDescriptor[] aProvided, ServiceDescriptor[] aRequired) {
+ public CompositeSystem(String aName, ServiceRegistry aRegistry, Component[] aSystems,
+ InterfaceDescriptor[] aProvided, InterfaceDescriptor[] aRequired) {
super(aName, aRegistry, aProvided, aRequired);
_systems = aSystems;
validate();
* Also logs a warning in case of superfluous requirements.
*/
private void validate() {
- List<ServiceDescriptor> provided = new ArrayList<ServiceDescriptor>();
- for (SubSystem system : _systems) {
+ List<InterfaceDescriptor> provided = new ArrayList<InterfaceDescriptor>();
+ for (Component system : _systems) {
provided.addAll(Arrays.asList(system.getProvidedServices()));
}
- List<ServiceDescriptor> required = new ArrayList<ServiceDescriptor>();
- for (SubSystem system : _systems) {
+ List<InterfaceDescriptor> required = new ArrayList<InterfaceDescriptor>();
+ for (Component system : _systems) {
required.addAll(Arrays.asList(system.getRequiredServices()));
}
- for (ServiceDescriptor service : getProvidedServices()) {
+ for (InterfaceDescriptor service : getProvidedServices()) {
if (!(provided.contains(service))) {
throw new SystemAssemblyException(getName() + ": Service '" + service
+ "' is not provided by any of the subsystems");
}
}
- for (ServiceDescriptor service : getRequiredServices()) {
+ for (InterfaceDescriptor service : getRequiredServices()) {
if (!(required.contains(service))) {
info("Service '"
+ service
}
}
- List<ServiceDescriptor> reallyRequired = new ArrayList<ServiceDescriptor>(
+ List<InterfaceDescriptor> reallyRequired = new ArrayList<InterfaceDescriptor>(
required);
- for (ServiceDescriptor service : provided) {
+ for (InterfaceDescriptor service : provided) {
reallyRequired.remove(service);
}
- for (ServiceDescriptor service: getRequiredServices()) {
+ for (InterfaceDescriptor service: getRequiredServices()) {
reallyRequired.remove(service);
}
- for (ServiceDescriptor service: reallyRequired) {
+ for (InterfaceDescriptor service: reallyRequired) {
throw new SystemAssemblyException(getName() + ": " + "Service '" + service + "' is not provided internally and is not indicated as required for this sub system");
}
}
@Override
protected void doStart(String aContext, Service[] aRequiredServices) {
- List<ProvidedServiceDescriptor> descriptors = new ArrayList<ProvidedServiceDescriptor>();
+ List<ProvidedInterfaceDescriptor> descriptors = new ArrayList<ProvidedInterfaceDescriptor>();
for (Service service : aRequiredServices) {
descriptors.add(service.getDescriptor());
}
SystemAssembler assembler = new SystemAssembler(aContext + "." + getName(), _systems,
- descriptors.toArray(new ProvidedServiceDescriptor[0]));
+ descriptors.toArray(new ProvidedInterfaceDescriptor[0]));
assembler.start(getRegistry(), aRequiredServices);
}