Author: rfeng
Date: Mon Jul  6 23:11:00 2009
New Revision: 791651

URL: http://svn.apache.org/viewvc?rev=791651&view=rev
Log:
Remove AutomaticBinding and replace it with a flag in the Contract model to 
indicate if a refernece or binding has one or more binding elements specified 
in which case it overrides the bindings from componentType or promoted contracts
Change the isCallback flag to forCallback to avoid confusion with the callback 
property

Removed:
    
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/AutomaticBinding.java
Modified:
    
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/AbstractContract.java
    
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/Contract.java
    
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseBuilderImpl.java
    
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentConfigurationBuilderImpl.java
    
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferenceEndpointReferenceBuilderImpl.java
    
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferenceWireBuilderImpl.java
    
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBindingURIBuilderImpl.java
    
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositePromotionBuilderImpl.java
    
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeReferenceConfigurationBuilderImpl.java
    
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeServiceConfigurationBuilderImpl.java
    
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ContractImpl.java
    
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ReferenceImpl.java
    
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/SCABindingImpl.java
    
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ServiceImpl.java
    
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/CompositeContext.java
    
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/CompositeContextImpl.java

Modified: 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/AbstractContract.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/AbstractContract.java?rev=791651&r1=791650&r2=791651&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/AbstractContract.java
 (original)
+++ 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/AbstractContract.java
 Mon Jul  6 23:11:00 2009
@@ -65,13 +65,13 @@
      * 
      * @return true for a callback contract, false otherwise
      */
-    boolean isCallback();
+    boolean isForCallback();
 
     /**
      * Sets a flag indicating whether this is a callback contract.
      * 
      * @param isCallback true for a callback contract, false otherwise
      */
-    void setIsCallback(boolean isCallback);
+    void setForCallback(boolean isCallback);
 
 }

Modified: 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/Contract.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/Contract.java?rev=791651&r1=791650&r2=791651&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/Contract.java
 (original)
+++ 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/Contract.java
 Mon Jul  6 23:11:00 2009
@@ -91,5 +91,20 @@
      * @return the interface contract
      */
     InterfaceContract getInterfaceContract(Binding binding);
+    
+    /**
+     * A flag to tell if there are any binding elements specified for this 
service or reference. 
+     * If true, they override the the bindings in the corresponding 
reference/service in the 
+     * component type or promoted reference/service.  
+     * @return
+     */
+    boolean isOverridingBindings();
+    
+    /**
+     * Set the flag depending on if there are any binding elements specified 
for this service or 
+     * reference.
+     * @param overridingBindings true if there are binding elements specified
+     */
+    void setOverridingBindings(boolean overridingBindings);
 
 }

Modified: 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseBuilderImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseBuilderImpl.java?rev=791651&r1=791650&r2=791651&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseBuilderImpl.java
 (original)
+++ 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseBuilderImpl.java
 Mon Jul  6 23:11:00 2009
@@ -31,13 +31,13 @@
 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.Contract;
 import org.apache.tuscany.sca.assembly.Implementation;
 import org.apache.tuscany.sca.assembly.Property;
 import org.apache.tuscany.sca.assembly.Reference;
 import org.apache.tuscany.sca.assembly.SCABinding;
 import org.apache.tuscany.sca.assembly.SCABindingFactory;
 import org.apache.tuscany.sca.assembly.Service;
-import org.apache.tuscany.sca.assembly.builder.AutomaticBinding;
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
 import org.apache.tuscany.sca.definitions.Definitions;
 import org.apache.tuscany.sca.interfacedef.InterfaceContract;
@@ -172,7 +172,7 @@
                 componentServices.put(uri, componentService);
 
                 // count how many non-callback there are
-                if (!componentService.isCallback()) {
+                if (!componentService.isForCallback()) {
 
                     if (nonCallbackServiceCount == 0) {
                         nonCallbackService = componentService;
@@ -221,7 +221,7 @@
 
                 // count how many non-callback, non-promoted services there are
                 // if there is only one the component name also acts as the 
service name
-                if ((!componentService.isCallback()) && (!promotedService)) {
+                if ((!componentService.isForCallback()) && (!promotedService)) 
{
 
                     // Check how many non callback non-promoted services we 
have
                     if (nonCallbackServices == 0) {
@@ -450,7 +450,7 @@
 
         // Connect each component reference to the corresponding reference
         for (ComponentReference componentReference : 
component.getReferences()) {
-            if (componentReference.getReference() != null || 
componentReference.isCallback()) {
+            if (componentReference.getReference() != null || 
componentReference.isForCallback()) {
                 continue;
             }
             Reference reference = references.get(componentReference.getName());
@@ -468,7 +468,7 @@
             for (Reference reference : 
component.getImplementation().getReferences()) {
                 if (!componentReferences.containsKey(reference.getName())) {
                     ComponentReference componentReference = 
assemblyFactory.createComponentReference();
-                    componentReference.setIsCallback(reference.isCallback());
+                    
componentReference.setForCallback(reference.isForCallback());
                     componentReference.setName(reference.getName());
                     componentReference.setReference(reference);
                     component.getReferences().add(componentReference);
@@ -557,7 +557,7 @@
 
         // Connect each component service to the corresponding service
         for (ComponentService componentService : component.getServices()) {
-            if (componentService.getService() != null || 
componentService.isCallback()) {
+            if (componentService.getService() != null || 
componentService.isForCallback()) {
                 continue;
             }
             Service service = services.get(componentService.getName());
@@ -574,7 +574,7 @@
             for (Service service : 
component.getImplementation().getServices()) {
                 if (!componentServices.containsKey(service.getName())) {
                     ComponentService componentService = 
assemblyFactory.createComponentService();
-                    componentService.setIsCallback(service.isCallback());
+                    componentService.setForCallback(service.isForCallback());
                     String name = service.getName();
                     componentService.setName(name);
                     componentService.setService(service);
@@ -625,14 +625,22 @@
         }
     }
 
-    protected SCABinding createSCABinding(Definitions definitions) {
-        SCABinding scaBinding = scaBindingFactory.createSCABinding();
-
-        // mark the bindings that are added automatically so that they can
-        // be disregarded for overriding purposes
-        if (scaBinding instanceof AutomaticBinding) {
-            ((AutomaticBinding)scaBinding).setIsAutomatic(true);
+    protected void attachSCABinding(Contract contract, Definitions 
definitions) {
+        if (!contract.getBindings().isEmpty()) {
+            contract.setOverridingBindings(true);
+            // No need to set binding.sca
+            return;
+        }
+        contract.setOverridingBindings(false);
+        
+        // Only add binding.sca for services
+        // FIXME: The latest OASIS spec only adds binding.sca to services
+        /*
+        if (!(contract instanceof Service)) {
+            return;
         }
+        */
+        SCABinding scaBinding = scaBindingFactory.createSCABinding();
 
         if (definitions != null) {
             for (ExtensionType attachPointType : 
definitions.getBindingTypes()) {
@@ -642,6 +650,6 @@
             }
         }
 
-        return scaBinding;
+        contract.getBindings().add(scaBinding);
     }
 }

Modified: 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentConfigurationBuilderImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentConfigurationBuilderImpl.java?rev=791651&r1=791650&r2=791651&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentConfigurationBuilderImpl.java
 (original)
+++ 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentConfigurationBuilderImpl.java
 Mon Jul  6 23:11:00 2009
@@ -38,7 +38,6 @@
 import org.apache.tuscany.sca.assembly.Implementation;
 import org.apache.tuscany.sca.assembly.Property;
 import org.apache.tuscany.sca.assembly.Reference;
-import org.apache.tuscany.sca.assembly.SCABinding;
 import org.apache.tuscany.sca.assembly.SCABindingFactory;
 import org.apache.tuscany.sca.assembly.Service;
 import org.apache.tuscany.sca.assembly.builder.ComponentPreProcessor;
@@ -127,19 +126,13 @@
             // Set default binding names 
 
             // Create default SCA binding
-            if (service.getBindings().isEmpty()) {
-                SCABinding scaBinding = createSCABinding(definitions);
-                service.getBindings().add(scaBinding);
-            }
+            attachSCABinding(service, definitions);
         }
 
         // Initialize reference bindings
         for (Reference reference : composite.getReferences()) {
             // Create default SCA binding
-            if (reference.getBindings().isEmpty()) {
-                SCABinding scaBinding = createSCABinding(definitions);
-                reference.getBindings().add(scaBinding);
-            }
+            attachSCABinding(reference, definitions);
         }
 
         // Initialize all component services and references
@@ -199,20 +192,14 @@
             for (ComponentService componentService : component.getServices()) {
 
                 // Create default SCA binding
-                if (componentService.getBindings().isEmpty()) {
-                    SCABinding scaBinding = createSCABinding(definitions);
-                    componentService.getBindings().add(scaBinding);
-                }
+                attachSCABinding(componentService, definitions);
             }
 
             // Initialize reference bindings
             for (ComponentReference componentReference : 
component.getReferences()) {
 
                 // Create default SCA binding
-                if (componentReference.getBindings().isEmpty()) {
-                    SCABinding scaBinding = createSCABinding(definitions);
-                    componentReference.getBindings().add(scaBinding);
-                }
+                attachSCABinding(componentReference, definitions);
             }
         }
     }
@@ -250,7 +237,7 @@
      */
     private ComponentService createCallbackService(Component component, 
ComponentReference reference) {
         ComponentService componentService = 
assemblyFactory.createComponentService();
-        componentService.setIsCallback(true);
+        componentService.setForCallback(true);
         componentService.setName(reference.getName());
         try {
             InterfaceContract contract = 
(InterfaceContract)reference.getInterfaceContract().clone();
@@ -273,12 +260,12 @@
                 // Set the promoted component from the promoted component of 
the composite reference
                 implCompService
                     
.setPromotedComponent(((CompositeReference)implReference).getPromotedComponents().get(0));
-                implCompService.setIsCallback(true);
+                implCompService.setForCallback(true);
                 // Set the promoted service
                 ComponentService promotedService = 
assemblyFactory.createComponentService();
                 
promotedService.setName(((CompositeReference)implReference).getPromotedReferences().get(0).getName());
                 promotedService.setUnresolved(true);
-                promotedService.setIsCallback(true);
+                promotedService.setForCallback(true);
                 implCompService.setPromotedService(promotedService);
                 implService = implCompService;
                 // Add the composite service to the composite implementation 
artifact
@@ -343,7 +330,7 @@
      */
     private ComponentReference createCallbackReference(Component component, 
ComponentService service) {
         ComponentReference componentReference = 
assemblyFactory.createComponentReference();
-        componentReference.setIsCallback(true);
+        componentReference.setForCallback(true);
         componentReference.setName(service.getName());
         try {
             InterfaceContract contract = 
(InterfaceContract)service.getInterfaceContract().clone();

Modified: 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferenceEndpointReferenceBuilderImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferenceEndpointReferenceBuilderImpl.java?rev=791651&r1=791650&r2=791651&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferenceEndpointReferenceBuilderImpl.java
 (original)
+++ 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferenceEndpointReferenceBuilderImpl.java
 Mon Jul  6 23:11:00 2009
@@ -228,7 +228,7 @@
                 if (uri == null) {
                     // Regular forward references are UNWIRED with no endpoint 
if they have an SCABinding with NO targets
                     // and NO URI set - but Callbacks with an SCABinding are 
wired and need an endpoint
-                    if (!reference.isCallback() && (binding instanceof 
SCABinding))
+                    if (!reference.isForCallback() && (binding instanceof 
SCABinding))
                         continue;
 
                     // create endpoint reference for manually configured 
bindings with a resolved endpoint to
@@ -423,7 +423,7 @@
                                                   Map<String, 
ComponentService> componentServices,
                                                   List<Endpoint> endpoints) {
         // Only if this reference is a callback are there any endpoints of 
this kind
-        if (reference.isCallback()) {
+        if (reference.isForCallback()) {
             // add an unresolved endpoint reference with an unresolved 
endpoint to go with it
             // there will be one of these for each binding on the reference
             for (Binding binding : reference.getBindings()) {
@@ -549,7 +549,7 @@
                 if (uri == null) {
                     // Regular forward references are UNWIRED with no endpoint 
if they have an SCABinding with NO targets
                     // and NO URI set - but Callbacks with an SCABinding are 
wired and need an endpoint
-                    if (!reference.isCallback() && (binding instanceof 
SCABinding))
+                    if (!reference.isForCallback() && (binding instanceof 
SCABinding))
                         continue;
 
                     // create an unwired endpoint containing the binding

Modified: 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferenceWireBuilderImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferenceWireBuilderImpl.java?rev=791651&r1=791650&r2=791651&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferenceWireBuilderImpl.java
 (original)
+++ 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferenceWireBuilderImpl.java
 Mon Jul  6 23:11:00 2009
@@ -100,7 +100,7 @@
                             break;
                         }
                     }
-                    if (!promoted && !componentReference.isCallback()) {
+                    if (!promoted && !componentReference.isForCallback()) {
                         warning(monitor,
                                 "ReferenceWithoutTargets",
                                 composite,

Modified: 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBindingURIBuilderImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBindingURIBuilderImpl.java?rev=791651&r1=791650&r2=791651&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBindingURIBuilderImpl.java
 (original)
+++ 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBindingURIBuilderImpl.java
 Mon Jul  6 23:11:00 2009
@@ -40,7 +40,6 @@
 import org.apache.tuscany.sca.assembly.Implementation;
 import org.apache.tuscany.sca.assembly.Property;
 import org.apache.tuscany.sca.assembly.Reference;
-import org.apache.tuscany.sca.assembly.SCABinding;
 import org.apache.tuscany.sca.assembly.SCABindingFactory;
 import org.apache.tuscany.sca.assembly.Service;
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
@@ -168,10 +167,7 @@
             // Set default binding names
 
             // Create default SCA binding
-            if (service.getBindings().isEmpty()) {
-                SCABinding scaBinding = createSCABinding(definitions);
-                service.getBindings().add(scaBinding);
-            }
+            attachSCABinding(service, definitions);
 
             // Initialize binding names and URIs
             for (Binding binding : service.getBindings()) {
@@ -211,10 +207,7 @@
             for (ComponentService service : component.getServices()) {
 
                 // Create default SCA binding
-                if (service.getBindings().isEmpty()) {
-                    SCABinding scaBinding = createSCABinding(definitions);
-                    service.getBindings().add(scaBinding);
-                }
+                attachSCABinding(service, definitions);
 
                 // Initialize binding names and URIs
                 for (Binding binding : service.getBindings()) {

Modified: 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositePromotionBuilderImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositePromotionBuilderImpl.java?rev=791651&r1=791650&r2=791651&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositePromotionBuilderImpl.java
 (original)
+++ 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositePromotionBuilderImpl.java
 Mon Jul  6 23:11:00 2009
@@ -125,7 +125,7 @@
                 String promotedComponentName = 
compositeService.getPromotedComponent().getName();
                 String promotedServiceName;
                 if (componentService.getName() != null) {
-                    if (compositeService.isCallback()) {
+                    if (compositeService.isForCallback()) {
                         // For callbacks the name already has the form 
"componentName"/"servicename"
                         promotedServiceName = componentService.getName();
                     } else {

Modified: 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeReferenceConfigurationBuilderImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeReferenceConfigurationBuilderImpl.java?rev=791651&r1=791650&r2=791651&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeReferenceConfigurationBuilderImpl.java
 (original)
+++ 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeReferenceConfigurationBuilderImpl.java
 Mon Jul  6 23:11:00 2009
@@ -23,13 +23,14 @@
 
 import org.apache.tuscany.sca.assembly.AssemblyFactory;
 import org.apache.tuscany.sca.assembly.Binding;
+import org.apache.tuscany.sca.assembly.Callback;
 import org.apache.tuscany.sca.assembly.Component;
 import org.apache.tuscany.sca.assembly.ComponentReference;
 import org.apache.tuscany.sca.assembly.Composite;
 import org.apache.tuscany.sca.assembly.CompositeReference;
+import org.apache.tuscany.sca.assembly.Contract;
 import org.apache.tuscany.sca.assembly.Implementation;
 import org.apache.tuscany.sca.assembly.Reference;
-import org.apache.tuscany.sca.assembly.builder.AutomaticBinding;
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
 import org.apache.tuscany.sca.definitions.Definitions;
@@ -68,9 +69,9 @@
                     ComponentReference promotedReference = promotedRefs.get(0);
 
                     // Set the bindings using the top level bindings to 
override the lower level bindings
-                    if 
(bindingsSpecifiedManually(compositeReference.getBindings())) {
+                    if (compositeReference.isOverridingBindings()) {
                         compositeReference.setPromotionOverride(true);
-                    } else if 
(bindingsSpecifiedManually(promotedReference.getBindings())) {
+                    } else if (promotedReference.isOverridingBindings()) {
                         compositeReference.getBindings().clear();
                         for (Binding binding : 
promotedReference.getBindings()) {
                             try {
@@ -82,11 +83,9 @@
                     }
                     if (compositeReference.getInterfaceContract() != null && 
compositeReference.getInterfaceContract()
                         .getCallbackInterface() != null) {
-                        if (compositeReference.getCallback() != null && 
bindingsSpecifiedManually(compositeReference
-                            .getCallback().getBindings())) {
-                            compositeReference.setPromotionOverride(true);
-                        } else if (promotedReference.getCallback() != null && 
bindingsSpecifiedManually(promotedReference
-                            .getCallback().getBindings())) {
+                        if (isCallbackOverridingBindings(compositeReference)) {
+                        compositeReference.setPromotionOverride(true);
+                        } else if 
(isCallbackOverridingBindings(promotedReference)) {
                             if (compositeReference.getCallback() != null) {
                                 
compositeReference.getCallback().getBindings().clear();
                             } else {
@@ -106,9 +105,8 @@
                     // Because the component reference bindings can all be 
different, we don't
                     // copy any of them up to this composite reference, which 
will therefore always
                     // have its own binding, even if it's only the default SCA 
binding.
-                    if 
(bindingsSpecifiedManually(compositeReference.getBindings()) || 
(compositeReference
-                        .getCallback() != null && 
bindingsSpecifiedManually(compositeReference.getCallback()
-                        .getBindings()))) {
+                    if (compositeReference.isOverridingBindings() || 
(compositeReference
+                        .getCallback() != null && 
!compositeReference.getCallback().getBindings().isEmpty())) {
                         compositeReference.setPromotionOverride(true);
                     }
                 }
@@ -139,8 +137,8 @@
                                 ComponentReference promotedReference = 
promotedRefs.get(0);
 
                                 // Set the bindings using the top level 
bindings to override the lower level bindings
-                                if 
(!bindingsSpecifiedManually(compositeReference.getBindings()) && 
bindingsSpecifiedManually(promotedReference
-                                    .getBindings())) {
+                                if (!compositeReference.isOverridingBindings() 
&& promotedReference
+                                    .isOverridingBindings()) {
                                     compositeReference.getBindings().clear();
                                     for (Binding binding : 
promotedReference.getBindings()) {
                                         try {
@@ -150,17 +148,16 @@
                                         }
                                     }
                                 }
-                                if 
(bindingsSpecifiedManually(componentReference.getBindings())) {
+                                if (componentReference.isOverridingBindings()) 
{
                                     
componentReference.setPromotionOverride(true);
-                                } else if 
(bindingsSpecifiedManually(compositeReference.getBindings())) {
+                                } else if 
(compositeReference.isOverridingBindings()) {
                                     componentReference.getBindings().clear();
                                     
componentReference.getBindings().addAll(compositeReference.getBindings());
                                 }
                                 if (componentReference.getInterfaceContract() 
!= null && componentReference
                                     
.getInterfaceContract().getCallbackInterface() != null) {
-                                    if (!(compositeReference.getCallback() != 
null && bindingsSpecifiedManually(compositeReference
-                                        .getCallback().getBindings())) && 
promotedReference.getCallback() != null
-                                        && 
bindingsSpecifiedManually(promotedReference.getCallback().getBindings())) {
+                                    if 
(!isCallbackOverridingBindings(compositeReference) 
+                                        && 
isCallbackOverridingBindings(promotedReference)) {
                                         if (compositeReference.getCallback() 
!= null) {
                                             
compositeReference.getCallback().getBindings().clear();
                                         } else {
@@ -169,11 +166,10 @@
                                         
compositeReference.getCallback().getBindings().addAll(promotedReference
                                             .getCallback().getBindings());
                                     }
-                                    if (componentReference.getCallback() != 
null && bindingsSpecifiedManually(componentReference
-                                        .getCallback().getBindings())) {
+                                    if (componentReference.getCallback() != 
null && !componentReference
+                                        
.getCallback().getBindings().isEmpty()) {
                                         
componentReference.setPromotionOverride(true);
-                                    } else if 
(compositeReference.getCallback() != null && 
bindingsSpecifiedManually(compositeReference
-                                        .getCallback().getBindings())) {
+                                    } else if 
(isCallbackOverridingBindings(compositeReference)) {
                                         if (componentReference.getCallback() 
!= null) {
                                             
componentReference.getCallback().getBindings().clear();
                                         } else {
@@ -194,9 +190,8 @@
                                 // Because the lower-level component reference 
bindings can all be different,
                                 // we don't copy any of them up to this 
component reference, which will therefore
                                 // always have its own binding, even if it's 
only the default SCA binding.
-                                if 
(bindingsSpecifiedManually(componentReference.getBindings()) || 
(componentReference
-                                    .getCallback() != null && 
bindingsSpecifiedManually(componentReference
-                                    .getCallback().getBindings()))) {
+                                if (componentReference.isOverridingBindings() 
+                                    || 
isCallbackOverridingBindings(componentReference)) {
                                     
componentReference.setPromotionOverride(true);
                                 }
                             }
@@ -206,26 +201,10 @@
             }
         }
     }
-
-    /**
-     * If the bindings are specified in the composite file return true as they 
should 
-     * otherwise return false
-     *  
-     * @param bindings
-     * @return true if the bindings were specified manually
-     */
-    private boolean bindingsSpecifiedManually(List<Binding> bindings) {
-
-        if (bindings.size() > 1) {
-            return true;
-        } else if (bindings.size() == 1 && bindings.get(0) instanceof 
AutomaticBinding
-            && ((AutomaticBinding)bindings.get(0)).getIsAutomatic()) {
-            return false;
-        } else if (bindings.size() == 1) {
-            return true;
-        } else {
-            return false;
-        }
+    
+    private boolean isCallbackOverridingBindings(Contract contract) {
+        Callback callback = contract.getCallback();
+        return callback != null && !callback.getBindings().isEmpty();
     }
 
 }

Modified: 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeServiceConfigurationBuilderImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeServiceConfigurationBuilderImpl.java?rev=791651&r1=791650&r2=791651&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeServiceConfigurationBuilderImpl.java
 (original)
+++ 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeServiceConfigurationBuilderImpl.java
 Mon Jul  6 23:11:00 2009
@@ -19,17 +19,16 @@
 
 package org.apache.tuscany.sca.assembly.builder.impl;
 
-import java.util.List;
-
 import org.apache.tuscany.sca.assembly.AssemblyFactory;
 import org.apache.tuscany.sca.assembly.Binding;
+import org.apache.tuscany.sca.assembly.Callback;
 import org.apache.tuscany.sca.assembly.Component;
 import org.apache.tuscany.sca.assembly.ComponentService;
 import org.apache.tuscany.sca.assembly.Composite;
 import org.apache.tuscany.sca.assembly.CompositeService;
+import org.apache.tuscany.sca.assembly.Contract;
 import org.apache.tuscany.sca.assembly.Implementation;
 import org.apache.tuscany.sca.assembly.Service;
-import org.apache.tuscany.sca.assembly.builder.AutomaticBinding;
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
 import org.apache.tuscany.sca.definitions.Definitions;
@@ -66,8 +65,7 @@
             if (promotedService != null) {
 
                 // Set the bindings using the top level bindings to override 
the lower level bindings
-                if (!bindingsSpecifiedManually(compositeService.getBindings()) 
&& bindingsSpecifiedManually(promotedService
-                    .getBindings())) {
+                if (!compositeService.isOverridingBindings() && 
promotedService.isOverridingBindings()) {
                     compositeService.getBindings().clear();
                     for (Binding binding : promotedService.getBindings()) {
                         try {
@@ -79,9 +77,8 @@
                 }
                 if (compositeService.getInterfaceContract() != null && 
compositeService.getInterfaceContract()
                     .getCallbackInterface() != null) {
-                    if (!(compositeService.getCallback() != null && 
bindingsSpecifiedManually(compositeService
-                        .getCallback().getBindings())) && 
promotedService.getCallback() != null
-                        && 
bindingsSpecifiedManually(promotedService.getCallback().getBindings())) {
+                    if (!isCallbackOverridingBindings(compositeService) 
+                        && isCallbackOverridingBindings(promotedService)) {
                         if (compositeService.getCallback() != null) {
                             
compositeService.getCallback().getBindings().clear();
                         } else {
@@ -121,8 +118,7 @@
                         if (promotedService != null) {
 
                             // Set the bindings using the top level bindings 
to override the lower level bindings
-                            if 
(!bindingsSpecifiedManually(compositeService.getBindings()) && 
bindingsSpecifiedManually(promotedService
-                                .getBindings())) {
+                            if (!compositeService.isOverridingBindings() && 
promotedService.isOverridingBindings()) {
                                 compositeService.getBindings().clear();
                                 for (Binding binding : 
promotedService.getBindings()) {
                                     try {
@@ -132,16 +128,14 @@
                                     }
                                 }
                             }
-                            if 
(!bindingsSpecifiedManually(componentService.getBindings()) && 
bindingsSpecifiedManually(compositeService
-                                .getBindings())) {
+                            if (!componentService.isOverridingBindings() && 
compositeService.isOverridingBindings()) {
                                 componentService.getBindings().clear();
                                 
componentService.getBindings().addAll(compositeService.getBindings());
                             }
                             if (componentService.getInterfaceContract() != 
null && componentService
                                 .getInterfaceContract().getCallbackInterface() 
!= null) {
-                                if (!(compositeService.getCallback() != null 
&& bindingsSpecifiedManually(compositeService
-                                    .getCallback().getBindings())) && 
promotedService.getCallback() != null
-                                    && 
bindingsSpecifiedManually(promotedService.getCallback().getBindings())) {
+                                if 
(!isCallbackOverridingBindings(compositeService) 
+                                    && 
isCallbackOverridingBindings(promotedService)) {
                                     if (compositeService.getCallback() != 
null) {
                                         
compositeService.getCallback().getBindings().clear();
                                     } else {
@@ -155,9 +149,7 @@
                                         }
                                     }
                                 }
-                                if (!(componentService.getCallback() != null 
&& bindingsSpecifiedManually(componentService
-                                    .getCallback().getBindings())) && 
compositeService.getCallback() != null
-                                    && 
bindingsSpecifiedManually(compositeService.getCallback().getBindings())) {
+                                if 
(!(isCallbackOverridingBindings(componentService)) && 
isCallbackOverridingBindings(compositeService)) {
                                     if (componentService.getCallback() != 
null) {
                                         
componentService.getCallback().getBindings().clear();
                                     } else {
@@ -173,26 +165,10 @@
             }
         }
     }
-
-    /**
-     * If the bindings are specified in the composite file return true as they 
should 
-     * otherwise return false
-     *  
-     * @param bindings
-     * @return true if the bindings were specified manually
-     */
-    private boolean bindingsSpecifiedManually(List<Binding> bindings) {
-
-        if (bindings.size() > 1) {
-            return true;
-        } else if (bindings.size() == 1 && bindings.get(0) instanceof 
AutomaticBinding
-            && ((AutomaticBinding)bindings.get(0)).getIsAutomatic()) {
-            return false;
-        } else if (bindings.size() == 1) {
-            return true;
-        } else {
-            return false;
-        }
+    
+    private boolean isCallbackOverridingBindings(Contract contract) {
+        Callback callback = contract.getCallback();
+        return callback != null && !callback.getBindings().isEmpty();
     }
 
 }

Modified: 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ContractImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ContractImpl.java?rev=791651&r1=791650&r2=791651&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ContractImpl.java
 (original)
+++ 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ContractImpl.java
 Mon Jul  6 23:11:00 2009
@@ -66,11 +66,11 @@
         return requiredIntents;
     }
 
-    public boolean isCallback() {
+    public boolean isForCallback() {
         return isCallback;
     }
 
-    public void setIsCallback(boolean isCallback) {
+    public void setForCallback(boolean isCallback) {
         this.isCallback = isCallback;
     }
 

Modified: 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ReferenceImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ReferenceImpl.java?rev=791651&r1=791650&r2=791651&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ReferenceImpl.java
 (original)
+++ 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ReferenceImpl.java
 Mon Jul  6 23:11:00 2009
@@ -41,6 +41,7 @@
     private List<ComponentService> targets = new ArrayList<ComponentService>();
     private Callback callback;
     private boolean promotionOverride;
+    private boolean overridingBindings;
     private List<EndpointReference> endpointReferences = new 
ArrayList<EndpointReference>();
 
     /**
@@ -132,4 +133,12 @@
     public String toString() {
         return getName();
     }
+
+    public boolean isOverridingBindings() {
+        return overridingBindings;
+    }
+
+    public void setOverridingBindings(boolean overridingBindings) {
+        this.overridingBindings = overridingBindings;
+    }
 }

Modified: 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/SCABindingImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/SCABindingImpl.java?rev=791651&r1=791650&r2=791651&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/SCABindingImpl.java
 (original)
+++ 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/SCABindingImpl.java
 Mon Jul  6 23:11:00 2009
@@ -30,7 +30,6 @@
 import org.apache.tuscany.sca.assembly.Extension;
 import org.apache.tuscany.sca.assembly.OptimizableBinding;
 import org.apache.tuscany.sca.assembly.SCABinding;
-import org.apache.tuscany.sca.assembly.builder.AutomaticBinding;
 import org.apache.tuscany.sca.policy.ExtensionType;
 import org.apache.tuscany.sca.policy.Intent;
 import org.apache.tuscany.sca.policy.PolicySet;
@@ -41,7 +40,7 @@
  *
  * @version $Rev$ $Date$
  */
-public class SCABindingImpl implements SCABinding, Extensible, PolicySubject, 
OptimizableBinding, AutomaticBinding {
+public class SCABindingImpl implements SCABinding, Extensible, PolicySubject, 
OptimizableBinding {
     private String name;
     private String uri;
     private List<Object> extensions = new ArrayList<Object>();
@@ -55,8 +54,6 @@
     private Binding targetBinding;
     private List<PolicySet> applicablePolicySets = new ArrayList<PolicySet>();
 
-    private boolean isAutomatic = false;
-
     public List<PolicySet> getApplicablePolicySets() {
         return applicablePolicySets;
     }
@@ -160,14 +157,6 @@
         this.requiredIntents = intents;
     }
 
-    public void setIsAutomatic(boolean isAutomatic) {
-        this.isAutomatic = isAutomatic;
-    }
-
-    public boolean getIsAutomatic() {
-        return this.isAutomatic;
-    }
-
     @Override
     public Object clone() throws CloneNotSupportedException {
         return super.clone();

Modified: 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ServiceImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ServiceImpl.java?rev=791651&r1=791650&r2=791651&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ServiceImpl.java
 (original)
+++ 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ServiceImpl.java
 Mon Jul  6 23:11:00 2009
@@ -35,6 +35,7 @@
  */
 public class ServiceImpl extends AbstractServiceImpl implements Service, 
Cloneable {
     private List<Binding> bindings = new ArrayList<Binding>();
+    private boolean overridingBindings;
     private Callback callback;
     private List<Endpoint> endpoints = new ArrayList<Endpoint>();
 
@@ -94,4 +95,12 @@
     public List<Endpoint> getEndpoints() {
         return endpoints;
     }
+
+    public boolean isOverridingBindings() {
+        return overridingBindings;
+    }
+
+    public void setOverridingBindings(boolean overridingBindings) {
+        this.overridingBindings = overridingBindings;
+    }
 }

Modified: 
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/CompositeContext.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/CompositeContext.java?rev=791651&r1=791650&r2=791651&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/CompositeContext.java
 (original)
+++ 
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/CompositeContext.java
 Mon Jul  6 23:11:00 2009
@@ -186,7 +186,7 @@
         List<ComponentService> services = component.getServices();
         List<ComponentService> regularServices = new 
ArrayList<ComponentService>();
         for (ComponentService service : services) {
-            if (service.isCallback()) {
+            if (service.isForCallback()) {
                 continue;
             }
             String name = service.getName();

Modified: 
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/CompositeContextImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/CompositeContextImpl.java?rev=791651&r1=791650&r2=791651&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/CompositeContextImpl.java
 (original)
+++ 
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/CompositeContextImpl.java
 Mon Jul  6 23:11:00 2009
@@ -308,7 +308,7 @@
         List<ComponentService> services = component.getServices();
         List<ComponentService> regularServices = new 
ArrayList<ComponentService>();
         for (ComponentService service : services) {
-            if (service.isCallback()) {
+            if (service.isForCallback()) {
                 continue;
             }
             String name = service.getName();


Reply via email to