diff options
Diffstat (limited to 'sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder')
2 files changed, 33 insertions, 1 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 5bbc547932..57c674d623 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 @@ -40,7 +40,9 @@ 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.EventTarget; import org.apache.tuscany.sca.assembly.Implementation; +import org.apache.tuscany.sca.assembly.Multiplicity; import org.apache.tuscany.sca.assembly.Producer; import org.apache.tuscany.sca.assembly.Property; import org.apache.tuscany.sca.assembly.Reference; @@ -1351,6 +1353,17 @@ public abstract class BaseConfigurationBuilderImpl { for (Producer producer : impl.getProducers()) { Reference reference = assemblyFactory.createReference(); reference.setName(producer.getName()); + // Add a pointer back to the Producer... Mike Edwards, 03/11/2008 + reference.setProducer(producer); + // For a Producer, the multiplicity is inherently 0..n Mike Edwards, 03/11/2008 + reference.setMultiplicity(Multiplicity.ONE_ONE); + // Copy through any target attribute Mike Edwards, 03/11/2008 + for( EventTarget target : producer.getTargets()) { + ComponentService targetService = assemblyFactory.createComponentService(); + targetService.setName( target.getName() ); + targetService.setUnresolved( true ); + reference.getTargets().add( targetService ); + } // end for reference.setInterfaceContract(producer.getInterfaceContract()); if (producer.getInterfaceContract() != null && producer.getInterfaceContract().getInterface() != null) producer.getInterfaceContract().getInterface().setRemotable(true); @@ -1370,6 +1383,8 @@ public abstract class BaseConfigurationBuilderImpl { for (Consumer consumer : impl.getConsumers()) { Service service = assemblyFactory.createService(); service.setName(consumer.getName()); + // Add a pointer back to the consumer... Mike Edwards, 03/11/2008 + service.setConsumer(consumer); service.setInterfaceContract(consumer.getInterfaceContract()); service.setType(consumer.getType()); service.getApplicablePolicySets().addAll(consumer.getApplicablePolicySets()); @@ -1388,6 +1403,18 @@ public abstract class BaseConfigurationBuilderImpl { for (Producer producer : component.getProducers()) { ComponentReference reference = assemblyFactory.createComponentReference(); reference.setName(producer.getName()); + // Add a pointer back to the Producer... Mike Edwards, 03/11/2008 + reference.setProducer(producer); + // For a Producer, the multiplicity is inherently 0..n Mike Edwards, 03/11/2008 + // FIXME (0..n implies an array in the implementation code - can't have this) + reference.setMultiplicity(Multiplicity.ONE_ONE); + // Copy through any target attribute Mike Edwards, 03/11/2008 + for( EventTarget target : producer.getTargets()) { + ComponentService targetService = assemblyFactory.createComponentService(); + targetService.setName( target.getName() ); + targetService.setUnresolved( true ); + reference.getTargets().add( targetService ); + } // end for reference.setInterfaceContract(producer.getInterfaceContract()); if (producer.getInterfaceContract() != null && producer.getInterfaceContract().getInterface() != null) producer.getInterfaceContract().getInterface().setRemotable(true); @@ -1408,6 +1435,8 @@ public abstract class BaseConfigurationBuilderImpl { for (Consumer consumer : component.getConsumers()) { ComponentService service = assemblyFactory.createComponentService(); service.setName(consumer.getName()); + // Add a pointer back to the consumer... Mike Edwards, 03/11/2008 + service.setConsumer(consumer); service.setInterfaceContract(consumer.getInterfaceContract()); service.setType(consumer.getType()); service.getApplicablePolicySets().addAll(consumer.getApplicablePolicySets()); diff --git a/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseWireBuilderImpl.java b/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseWireBuilderImpl.java index b2f662918c..d0c3080da0 100644 --- a/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseWireBuilderImpl.java +++ b/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseWireBuilderImpl.java @@ -430,6 +430,9 @@ class BaseWireBuilderImpl { // Check that the target component service provides // a superset of the component reference interface if (componentReference.getInterfaceContract() == null || + // Handling for Producers and Consumers Mike Edwards, 03/11/2008 + // TODO - need to validate overlap of event types on producer and consumer + ( componentReference.isProducer() && targetComponentService.isConsumer() ) || interfaceContractMapper.isCompatible(componentReference.getInterfaceContract(), targetComponentService.getInterfaceContract())) { Endpoint endpoint = endpointFactory.createEndpoint(); @@ -685,7 +688,7 @@ class BaseWireBuilderImpl { // the result of calculating the endpoints is either that bindings have been // configured manually using a URI or that targets have been provided and the - // endpoint remains unresolved. So all endpoints should be either resved or uresolved. + // endpoint remains unresolved. So all endpoints should be either resolved or uresolved. boolean endpointsRequireAutomaticResolution = false; for(Endpoint endpoint : endpoints){ endpointsRequireAutomaticResolution = endpoint.isUnresolved(); |