You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2007/07/13 01:51:58 UTC

svn commit: r555820 - /incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBuilderImpl.java

Author: rfeng
Date: Thu Jul 12 16:51:57 2007
New Revision: 555820

URL: http://svn.apache.org/viewvc?view=rev&rev=555820
Log:
Fix the reference target/binding override/promotion

Modified:
    incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBuilderImpl.java

Modified: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBuilderImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBuilderImpl.java?view=diff&rev=555820&r1=555819&r2=555820
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBuilderImpl.java (original)
+++ incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBuilderImpl.java Thu Jul 12 16:51:57 2007
@@ -1243,7 +1243,10 @@
 
                             // Wire the promoted reference to the actual
                             // non-composite component services
-                            promotedReference.getTargets().clear();
+                            if (promotedReference.getMultiplicity() == Multiplicity.ONE_ONE || promotedReference
+                                    .getMultiplicity() == Multiplicity.ONE_ONE) {
+                                promotedReference.getTargets().clear();
+                            }
                             for (ComponentService target : componentReference.getTargets()) {
                                 if (target.getService() instanceof CompositeService) {
 
@@ -1291,15 +1294,16 @@
         Multiplicity multiplicity = promotedReference.getMultiplicity();
         if(multiplicity == Multiplicity.ZERO_N || multiplicity == Multiplicity.ONE_N) {
             // Merging for 0..N or 1..N
+            promotedReference.getBindings().clear();
             promotedReference.getBindings().addAll(reference.getBindings());
         } else {
             // Override the configuration of the promoted reference for 0..1 or 1..1
             SCABinding scaBinding = promotedReference.getBinding(SCABinding.class);
             promotedReference.getBindings().clear();
             // FIXME: [rfeng] I don't think we should keep the SCABinding
-            if (scaBinding != null) {
-                promotedReference.getBindings().add(scaBinding);
-            }
+//            if (scaBinding != null) {
+//                promotedReference.getBindings().add(scaBinding);
+//            }
             promotedReference.getBindings().addAll(reference.getBindings());
         }
     }
@@ -1461,6 +1465,7 @@
     // Choose a binding for the reference based on the bindings available on the service 
     protected Binding resolveBindings(ComponentReference reference, ComponentService service) {
         List<Binding> refBindings = new ArrayList<Binding>(reference.getBindings());
+        // Find the corresponding bindings from the service side
         for(Binding binding: reference.getBindings()){
             for(Binding serviceBinding: service.getBindings()) {
                 if(binding.getClass() == serviceBinding.getClass()) {
@@ -1470,13 +1475,16 @@
             }
         }
         if(refBindings.isEmpty()) {
+            // No matching binding
            return null; 
         } else {
             for(Binding binding: refBindings) {
+                // If binding.sca is present, 
                 if(SCABinding.class.isInstance(binding)) {
                     return binding;
                 }
             }
+            // Use the first one
             return refBindings.get(0);
         }
         



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org