Author: edwardsmj
Date: Thu Nov  6 08:45:57 2008
New Revision: 711904

URL: http://svn.apache.org/viewvc?rev=711904&view=rev
Log:
Changes to enable consumers and producers to be connected via binding.sca

Modified:
    
tuscany/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/Consumer.java
    
tuscany/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/Reference.java
    
tuscany/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/Service.java
    
tuscany/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseConfigurationBuilderImpl.java
    
tuscany/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseWireBuilderImpl.java
    
tuscany/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ConsumerImpl.java
    
tuscany/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ReferenceImpl.java
    
tuscany/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ServiceImpl.java

Modified: 
tuscany/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/Consumer.java
URL: 
http://svn.apache.org/viewvc/tuscany/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/Consumer.java?rev=711904&r1=711903&r2=711904&view=diff
==============================================================================
--- 
tuscany/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/Consumer.java
 (original)
+++ 
tuscany/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/Consumer.java
 Thu Nov  6 08:45:57 2008
@@ -19,6 +19,7 @@
 package org.apache.tuscany.sca.assembly;
 
 import java.util.List;
+import java.util.Set;
 
 
 /**
@@ -31,8 +32,24 @@
     
     List<EventSource> getSources();
     
-    String getOperationName();
+    // Operation related information
+    /**
+     * Adds an operation to the consumer along with a list of the accepted 
event types.
+     * If the event types are null, then any event type is accepted
+     */
+    void addOperation( String operationName, String eventTypes );
     
-    void setOperationName(String operationName);
+    /**
+     * Gets the operations for this consumer, by name
+     * @return
+     */
+    Set<String> getOperations();
+    
+    /**
+     * Returns the operation which handles a given event type for this consumer
+     * @param eventType - the event type name, which can be null (meaning "any 
event type")
+     * @return the operation which handles this event type - null if no 
operation handles the event type
+     */
+    String getOperationByEventType( String eventType );
 
 }

Modified: 
tuscany/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/Reference.java
URL: 
http://svn.apache.org/viewvc/tuscany/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/Reference.java?rev=711904&r1=711903&r2=711904&view=diff
==============================================================================
--- 
tuscany/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/Reference.java
 (original)
+++ 
tuscany/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/Reference.java
 Thu Nov  6 08:45:57 2008
@@ -70,5 +70,24 @@
      * @return the targets of this reference.
      */
     List<ComponentService> getTargets();
+    
+       /**
+        * Allows this Reference to be set as a Producer
+        * @param aProducer - the producer to set for this Reference
+        */
+       void setProducer( Producer aProducer );
+       
+       /**
+        * Gets the producer for this Reference
+        * @return the Producer - null if no Producer is set
+        */
+       Producer getProducer();
+       
+       /**
+        * Returns whether this Reference is a Producer
+        * @return true if the Reference is a producer, false otherwise
+        */
+       boolean isProducer();
+
 
 }

Modified: 
tuscany/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/Service.java
URL: 
http://svn.apache.org/viewvc/tuscany/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/Service.java?rev=711904&r1=711903&r2=711904&view=diff
==============================================================================
--- 
tuscany/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/Service.java
 (original)
+++ 
tuscany/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/Service.java
 Thu Nov  6 08:45:57 2008
@@ -25,5 +25,23 @@
  * @version $Rev$ $Date$
  */
 public interface Service extends AbstractService, Contract {
+       
+       /**
+        * Allows this Service to be set as a Consumer
+        * @param aConsumer - the consumer to set for this Service
+        */
+       void setConsumer( Consumer aConsumer );
+       
+       /**
+        * Gets the consumer for this Service
+        * @return the Consumer - null if no Consumer is set
+        */
+       Consumer getConsumer();
+       
+       /**
+        * Returns whether this Service is a Consumer
+        * @return true if the Service is a consumer, false otherwise
+        */
+       boolean isConsumer();
 
 }

Modified: 
tuscany/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseConfigurationBuilderImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseConfigurationBuilderImpl.java?rev=711904&r1=711903&r2=711904&view=diff
==============================================================================
--- 
tuscany/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseConfigurationBuilderImpl.java
 (original)
+++ 
tuscany/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseConfigurationBuilderImpl.java
 Thu Nov  6 08:45:57 2008
@@ -40,7 +40,9 @@
 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 @@
                    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 @@
                 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 @@
                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 @@
                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());

Modified: 
tuscany/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseWireBuilderImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseWireBuilderImpl.java?rev=711904&r1=711903&r2=711904&view=diff
==============================================================================
--- 
tuscany/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseWireBuilderImpl.java
 (original)
+++ 
tuscany/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseWireBuilderImpl.java
 Thu Nov  6 08:45:57 2008
@@ -430,6 +430,9 @@
                     // 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 @@
             
             // 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();

Modified: 
tuscany/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ConsumerImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ConsumerImpl.java?rev=711904&r1=711903&r2=711904&view=diff
==============================================================================
--- 
tuscany/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ConsumerImpl.java
 (original)
+++ 
tuscany/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ConsumerImpl.java
 Thu Nov  6 08:45:57 2008
@@ -20,6 +20,10 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.Set;
+import java.util.Map.Entry;
 
 import org.apache.tuscany.sca.assembly.Binding;
 import org.apache.tuscany.sca.assembly.Callback;
@@ -38,6 +42,7 @@
     
     private String name;
     private String theOperationName;
+    private Map< String, String > operations = new HashMap< String, String >();
     private EventTypes theEventTypes = new EventTypesImpl();
     private ArrayList<Binding> bindings = new ArrayList<Binding>();
     private ArrayList<EventSource> sourceList = new ArrayList<EventSource>();
@@ -73,6 +78,42 @@
        return theEventTypes;
     } // end getEventType
     
+    // Operation related methods...
+    /**
+     * Adds an operation to the Consumer, with a list of the accepted event 
types
+     */
+    public void addOperation( String operationName, String eventTypes ) {
+       operations.put(operationName, eventTypes);
+    } // end addOperation
+    
+    /**
+     * Returns the set of operations for this consumer
+     */
+    public Set<String> getOperations() {
+       return operations.keySet();
+    } // add operation
+    
+    /**
+     * Gets the name of the operation which handles a specific event type.
+     * Returns null if no operation handles the specified event type.
+     * eventType = null implies "handles any event type"
+     */
+    public String getOperationByEventType( String eventType ) {
+       String anyOperation = null;
+       for( Entry<String, String> entry : operations.entrySet() ) {
+               String value = entry.getValue();
+               if( value == null ) {
+                       if( eventType == null ) return entry.getKey();
+                       // If the operation is marked as handling "any" event 
type, use this UNLESS there is another
+                       // operation which specifically takes the requested 
event type...
+                       anyOperation = entry.getKey();
+               } else if( eventType != null ){
+                       if (value.contains(eventType)) return entry.getKey();
+               } // end if
+       } //
+       return anyOperation;
+    } // end getOperationByEventType
+    
     public void setOperationName( String operationName ) {
        theOperationName = operationName;
     } // end setOperationName

Modified: 
tuscany/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ReferenceImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ReferenceImpl.java?rev=711904&r1=711903&r2=711904&view=diff
==============================================================================
--- 
tuscany/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ReferenceImpl.java
 (original)
+++ 
tuscany/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ReferenceImpl.java
 Thu Nov  6 08:45:57 2008
@@ -25,6 +25,7 @@
 import org.apache.tuscany.sca.assembly.Binding;
 import org.apache.tuscany.sca.assembly.Callback;
 import org.apache.tuscany.sca.assembly.ComponentService;
+import org.apache.tuscany.sca.assembly.Producer;
 import org.apache.tuscany.sca.assembly.Reference;
 import org.apache.tuscany.sca.interfacedef.InterfaceContract;
 import org.apache.tuscany.sca.policy.PolicySet;
@@ -42,6 +43,7 @@
     private Callback callback;
     private List<PolicySet> applicablePolicySets = new ArrayList<PolicySet>();
     private boolean promotionOverride;
+    private Producer theProducer = null;
 
     public List<PolicySet> getApplicablePolicySets() {
         return applicablePolicySets;
@@ -129,5 +131,30 @@
     public InterfaceContract getInterfaceContract(Binding binding){
         return getInterfaceContract();
     }      
+    
+       /**
+        * Allows this Reference to be set as a Producer
+        * @param aProducer - the producer to set for this Reference
+        */
+       public void setProducer( Producer aProducer ) {
+               theProducer = aProducer;
+       } // end setProducer
+       
+       /**
+        * Gets the producer for this Reference
+        * @return the Producer - null if no Producer is set
+        */
+       public Producer getProducer() {
+               return theProducer;
+       } // end getProducer
+       
+       /**
+        * Returns whether this Reference is a Producer
+        * @return true if the Reference is a producer, false otherwise
+        */
+       public boolean isProducer() {
+               return (!(theProducer == null ));
+       } // end isProducer
+
 
 }

Modified: 
tuscany/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ServiceImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ServiceImpl.java?rev=711904&r1=711903&r2=711904&view=diff
==============================================================================
--- 
tuscany/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ServiceImpl.java
 (original)
+++ 
tuscany/sandbox/event/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ServiceImpl.java
 Thu Nov  6 08:45:57 2008
@@ -25,6 +25,7 @@
 import org.apache.tuscany.sca.assembly.Binding;
 import org.apache.tuscany.sca.assembly.Callback;
 import org.apache.tuscany.sca.assembly.Service;
+import org.apache.tuscany.sca.assembly.Consumer;
 import org.apache.tuscany.sca.interfacedef.InterfaceContract;
 import org.apache.tuscany.sca.policy.PolicySet;
 
@@ -38,6 +39,7 @@
     private List<PolicySet> policySets = new ArrayList<PolicySet>();
     private Callback callback;
     private List<PolicySet> applicablePolicySets = new ArrayList<PolicySet>();
+    private Consumer theConsumer = null;
     
     public List<PolicySet> getApplicablePolicySets() {
         return applicablePolicySets;
@@ -103,5 +105,29 @@
     public InterfaceContract getInterfaceContract(Binding binding){
         return getInterfaceContract();
     }     
+    
+       /**
+        * Allows this Service to be set as a Consumer
+        * @param aConsumer - the consumer to set for this Service
+        */
+       public void setConsumer( Consumer aConsumer ) {
+               theConsumer = aConsumer;
+       } // end setConsumer
+       
+       /**
+        * Gets the consumer for this Service
+        * @return the Consumer - null if no Consumer is set
+        */
+       public Consumer getConsumer() {
+               return theConsumer;
+       } // end getConsumer
+       
+       /**
+        * Returns whether this Service is a Consumer
+        * @return true if the Service is a consumer, false otherwise
+        */
+       public boolean isConsumer() {
+               return ( !( theConsumer == null ) );
+       } // end isConsumer
 
 }


Reply via email to