diff options
Diffstat (limited to 'sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseConfigurationBuilderImpl.java')
-rw-r--r-- | sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseConfigurationBuilderImpl.java | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseConfigurationBuilderImpl.java b/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseConfigurationBuilderImpl.java index 6f856986ad..0a4bd1939e 100644 --- a/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseConfigurationBuilderImpl.java +++ b/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseConfigurationBuilderImpl.java @@ -36,8 +36,12 @@ import org.apache.tuscany.sca.assembly.ComponentProperty; import org.apache.tuscany.sca.assembly.ComponentReference; import org.apache.tuscany.sca.assembly.ComponentService; import org.apache.tuscany.sca.assembly.Composite; +import org.apache.tuscany.sca.assembly.Consumer; import org.apache.tuscany.sca.assembly.Contract; +import org.apache.tuscany.sca.assembly.EventBinding; +import org.apache.tuscany.sca.assembly.EventBindingFactory; import org.apache.tuscany.sca.assembly.Implementation; +import org.apache.tuscany.sca.assembly.Producer; import org.apache.tuscany.sca.assembly.Property; import org.apache.tuscany.sca.assembly.Reference; import org.apache.tuscany.sca.assembly.SCABinding; @@ -67,6 +71,7 @@ public abstract class BaseConfigurationBuilderImpl { private AssemblyFactory assemblyFactory; private SCABindingFactory scaBindingFactory; + private EventBindingFactory eventBindingFactory; private Monitor monitor; private InterfaceContractMapper interfaceContractMapper; private SCADefinitions policyDefinitions; @@ -75,6 +80,7 @@ public abstract class BaseConfigurationBuilderImpl { protected BaseConfigurationBuilderImpl(AssemblyFactory assemblyFactory, SCABindingFactory scaBindingFactory, + EventBindingFactory eventBindingFactory, DocumentBuilderFactory documentBuilderFactory, TransformerFactory transformerFactory, InterfaceContractMapper interfaceContractMapper, @@ -82,6 +88,7 @@ public abstract class BaseConfigurationBuilderImpl { Monitor monitor) { this.assemblyFactory = assemblyFactory; this.scaBindingFactory = scaBindingFactory; + this.eventBindingFactory = eventBindingFactory; this.documentBuilderFactory = documentBuilderFactory; this.transformerFactory = transformerFactory; this.interfaceContractMapper = interfaceContractMapper; @@ -110,6 +117,8 @@ public abstract class BaseConfigurationBuilderImpl { */ private void configureComponents(Composite composite, String uri) { String parentURI = uri; + + configureProducersAndConsumers(composite); // Process nested composites recursively for (Component component : composite.getComponents()) { @@ -1334,4 +1343,81 @@ public abstract class BaseConfigurationBuilderImpl { return URI.create(baseURI.toString() + str).normalize(); } + private void configureProducersAndConsumers(Composite composite) { + + for (Component component : composite.getComponents()) { + Implementation impl = component.getImplementation(); + for (Producer producer : impl.getProducers()) { + Reference reference = assemblyFactory.createReference(); + reference.setName(producer.getName()); + reference.setInterfaceContract(producer.getInterfaceContract()); + if (producer.getInterfaceContract() != null && producer.getInterfaceContract().getInterface() != null) + producer.getInterfaceContract().getInterface().setRemotable(true); + reference.setType(producer.getType()); + reference.getApplicablePolicySets().addAll(producer.getApplicablePolicySets()); + reference.getPolicySets().addAll(producer.getPolicySets()); + reference.getRequiredIntents().addAll(producer.getRequiredIntents()); + for (Binding binding : producer.getBindings()) { + EventBinding eventBinding = eventBindingFactory.createEventBinding(); + eventBinding.setBaseBinding(binding); + reference.getBindings().add(binding);// FIXME: remove + reference.getBindings().add(eventBinding); + } + impl.getReferences().add(reference); + } + + for (Producer producer : component.getProducers()) { + ComponentReference reference = assemblyFactory.createComponentReference(); + reference.setName(producer.getName()); + reference.setInterfaceContract(producer.getInterfaceContract()); + if (producer.getInterfaceContract() != null && producer.getInterfaceContract().getInterface() != null) + producer.getInterfaceContract().getInterface().setRemotable(true); + reference.setType(producer.getType()); + reference.getApplicablePolicySets().addAll(producer.getApplicablePolicySets()); + reference.getPolicySets().addAll(producer.getPolicySets()); + reference.getRequiredIntents().addAll(producer.getRequiredIntents()); + for (Binding binding : producer.getBindings()) { + EventBinding eventBinding = eventBindingFactory.createEventBinding(); + eventBinding.setBaseBinding(binding); + reference.getBindings().add(binding);// FIXME: remove + reference.getBindings().add(eventBinding); + } + component.getReferences().add(reference); + } + + for (Consumer consumer : impl.getConsumers()) { + Service service = assemblyFactory.createService(); + service.setName(consumer.getName()); + service.setInterfaceContract(consumer.getInterfaceContract()); + service.setType(consumer.getType()); + service.getApplicablePolicySets().addAll(consumer.getApplicablePolicySets()); + service.getPolicySets().addAll(consumer.getPolicySets()); + service.getRequiredIntents().addAll(consumer.getRequiredIntents()); + for (Binding binding : consumer.getBindings()) { + EventBinding eventBinding = eventBindingFactory.createEventBinding(); + eventBinding.setBaseBinding(binding); + service.getBindings().add(binding);// FIXME: remove + service.getBindings().add(eventBinding); + } + impl.getServices().add(service); + } + + for (Consumer consumer : component.getConsumers()) { + ComponentService service = assemblyFactory.createComponentService(); + service.setName(consumer.getName()); + service.setInterfaceContract(consumer.getInterfaceContract()); + service.setType(consumer.getType()); + service.getApplicablePolicySets().addAll(consumer.getApplicablePolicySets()); + service.getPolicySets().addAll(consumer.getPolicySets()); + service.getRequiredIntents().addAll(consumer.getRequiredIntents()); + for (Binding binding : consumer.getBindings()) { + EventBinding eventBinding = eventBindingFactory.createEventBinding(); + eventBinding.setBaseBinding(binding); + service.getBindings().add(binding); // FIXME: remove + service.getBindings().add(eventBinding); + } + component.getServices().add(service); + } + } + } } |