You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by sl...@apache.org on 2008/07/23 15:13:47 UTC

svn commit: r679082 - in /tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly: ./ builder/impl/ impl/

Author: slaws
Date: Wed Jul 23 06:13:46 2008
New Revision: 679082

URL: http://svn.apache.org/viewvc?rev=679082&view=rev
Log:
TUSCANY-2324 - as a follow on from TUSCANY-2480 allow an interface contract to be retrieved from a reference based on the bindings that needs it. For component references information in the endpoint structure is used to find the correct interface contract. I've wrapped this in a method on the contract now though as we are not ready yet to make the endpoint structure more prominent. A piece of work is now required to make use of this information when bindings that required is are configured. 

Modified:
    tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/Contract.java
    tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseWireBuilderImpl.java
    tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ReferenceConfigurationUtil.java
    tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ComponentReferenceImpl.java
    tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ReferenceImpl.java
    tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ServiceImpl.java

Modified: tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/Contract.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/Contract.java?rev=679082&r1=679081&r2=679082&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/Contract.java (original)
+++ tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/Contract.java Wed Jul 23 06:13:46 2008
@@ -20,6 +20,7 @@
 
 import java.util.List;
 
+import org.apache.tuscany.sca.interfacedef.InterfaceContract;
 import org.apache.tuscany.sca.policy.PolicySetAttachPoint;
 
 /**
@@ -78,4 +79,17 @@
      */
     Object clone() throws CloneNotSupportedException;
     
+    /**
+     * Returns the interface contract given a binding. Important in the case where
+     * a reference with multiplicity > 1 has been promoted and has it's list of 
+     * resolved bindings extended by a promoting reference. Here the binding
+     * from the promoting reference may need the interface contract from the 
+     * promoting reference and not the promoted reference.
+     * TODO - remove this wrinkle with better endpoint support.  
+     * 
+     * @param binding the binding for which the interface contract is required
+     * @return the interface contract
+     */
+    InterfaceContract getInterfaceContract(Binding binding);    
+    
 }

Modified: tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseWireBuilderImpl.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseWireBuilderImpl.java?rev=679082&r1=679081&r2=679082&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseWireBuilderImpl.java (original)
+++ tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseWireBuilderImpl.java Wed Jul 23 06:13:46 2008
@@ -639,16 +639,13 @@
                     }
                 } else {
                     
-                    /* TODO - don't enable this yet as we have tests that 
-                              use relative URIs in bindings that don't refer to 
-                              targets 
+                    // create endpoints for manually configured bindings
                     Endpoint endpoint = endpointFactory.createEndpoint();
                     endpoint.setTargetName(uri);
                     endpoint.setSourceComponent(null); // TODO - fixed up at start
                     endpoint.setSourceComponentReference(componentReference);                        
-                    endpoint.getCandidateBindings().add(binding);
+                    endpoint.setSourceBinding(binding);
                     endpoints.add(endpoint); 
-                    */
                 }
             }
         }
@@ -679,8 +676,16 @@
 
             componentReference.getEndpoints().addAll(endpoints);
             
+            // 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.
+            boolean endpointsRequireAutomaticResolution = false;
+            for(Endpoint endpoint : endpoints){
+                endpointsRequireAutomaticResolution = endpoint.isUnresolved();
+            }
+            
             // build each endpoint 
-            if (!endpoints.isEmpty()) { 
+            if (endpointsRequireAutomaticResolution) { 
 
                 for(Endpoint endpoint : endpoints){
                     endpointBuilder.build(endpoint);

Modified: tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ReferenceConfigurationUtil.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ReferenceConfigurationUtil.java?rev=679082&r1=679081&r2=679082&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ReferenceConfigurationUtil.java (original)
+++ tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ReferenceConfigurationUtil.java Wed Jul 23 06:13:46 2008
@@ -185,9 +185,11 @@
                 for (Binding binding : reference.getBindings()) {
                     if ((!(binding instanceof OptimizableBinding)) || binding.getURI() != null) {
                         promotedReference.getBindings().add(binding);
-                        
                         // TUSCANY-2324: ensure that the promoted reference can identify the
                         //               correct interface contract for this binding
+                        // TODO - Remove and use Reference.getInterfaceContract(binding)
+                        //        in any binding that needs to use the interface contract
+                        //        from the promoting reference
                         promotedReference.setInterfaceContract(reference.getInterfaceContract());
                     }
                 }
@@ -209,11 +211,12 @@
                 for (Binding binding : reference.getBindings()) {
                     if ((!(binding instanceof OptimizableBinding)) || binding.getURI() != null) {
                         promotedReference.getBindings().add(binding);
-                        
                         // TUSCANY-2324: ensure that the promoted reference can identify the
                         //               correct interface contract for this binding
-                        // TODO: no such interface exists yet!
-                        //promotedReference.setInterfaceContract(binding, reference.getInterfaceContract());                        
+                        // TODO: use Reference.getInterfaceContract(binding) when the interface contract is required
+                        //        in any binding that needs to use the interface contract
+                        //        from the promoting reference
+                        //promotedReference.setInterfaceContract(binding, reference.getInterfaceContract());                             
                     }
                 }
             }            

Modified: tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ComponentReferenceImpl.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ComponentReferenceImpl.java?rev=679082&r1=679081&r2=679082&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ComponentReferenceImpl.java (original)
+++ tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ComponentReferenceImpl.java Wed Jul 23 06:13:46 2008
@@ -22,11 +22,13 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.tuscany.sca.assembly.Binding;
 import org.apache.tuscany.sca.assembly.ComponentReference;
 import org.apache.tuscany.sca.assembly.ComponentService;
 import org.apache.tuscany.sca.assembly.CompositeReference;
 import org.apache.tuscany.sca.assembly.Endpoint;
 import org.apache.tuscany.sca.assembly.Reference;
+import org.apache.tuscany.sca.interfacedef.InterfaceContract;
 
 /**
  * Represents a component reference
@@ -88,4 +90,23 @@
     public List<Endpoint> getEndpoints(){
         return endpoints;
     }
+    
+    /**
+     * Use endpoint information to work out what the interface contract for the
+     * binding is. 
+     */
+    public InterfaceContract getInterfaceContract(Binding binding){
+        InterfaceContract interfaceContract = null;
+        
+        for (Endpoint theEndpoint : endpoints){
+            if (theEndpoint.getSourceBinding() == binding){
+                interfaceContract = theEndpoint.getSourceComponentReference().getInterfaceContract();
+            }
+        }
+        
+        if (interfaceContract == null){
+            interfaceContract = getInterfaceContract();
+        }
+        return interfaceContract;
+    } 
 }

Modified: tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ReferenceImpl.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ReferenceImpl.java?rev=679082&r1=679081&r2=679082&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ReferenceImpl.java (original)
+++ tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ReferenceImpl.java Wed Jul 23 06:13:46 2008
@@ -26,6 +26,7 @@
 import org.apache.tuscany.sca.assembly.Callback;
 import org.apache.tuscany.sca.assembly.ComponentService;
 import org.apache.tuscany.sca.assembly.Reference;
+import org.apache.tuscany.sca.interfacedef.InterfaceContract;
 import org.apache.tuscany.sca.policy.PolicySet;
 
 /**
@@ -121,5 +122,12 @@
     public void setPolicySets(List<PolicySet> policySets) {
         this.policySets = policySets; 
     }
+    
+    /**
+     * By default return the interface contract for the reference
+     */
+    public InterfaceContract getInterfaceContract(Binding binding){
+        return getInterfaceContract();
+    }      
 
 }

Modified: tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ServiceImpl.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ServiceImpl.java?rev=679082&r1=679081&r2=679082&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ServiceImpl.java (original)
+++ tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ServiceImpl.java Wed Jul 23 06:13:46 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.interfacedef.InterfaceContract;
 import org.apache.tuscany.sca.policy.PolicySet;
 
 /**
@@ -95,5 +96,12 @@
     public void setPolicySets(List<PolicySet> policySets) {
         this.policySets = policySets; 
     }
+    
+    /**
+     * By default return the interface contract for the service
+     */
+    public InterfaceContract getInterfaceContract(Binding binding){
+        return getInterfaceContract();
+    }     
 
 }