Modified: 
tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeServiceConfigurationBuilderImpl.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/CompositeServiceConfigurationBuilderImpl.java?rev=678491&r1=678490&r2=678491&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeServiceConfigurationBuilderImpl.java
 (original)
+++ 
tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeServiceConfigurationBuilderImpl.java
 Mon Jul 21 10:37:59 2008
@@ -19,32 +19,176 @@
 
 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.Component;
+import org.apache.tuscany.sca.assembly.ComponentService;
 import org.apache.tuscany.sca.assembly.Composite;
-import org.apache.tuscany.sca.assembly.SCABindingFactory;
+import org.apache.tuscany.sca.assembly.CompositeService;
+import org.apache.tuscany.sca.assembly.Service;
+import org.apache.tuscany.sca.assembly.Implementation;
+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.SCADefinitions;
-import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper;
-import org.apache.tuscany.sca.monitor.Monitor;
 
 /**
  * A composite builder that handles the configuration of composite services.
  *
  * @version $Rev$ $Date$
  */
-public class CompositeServiceConfigurationBuilderImpl extends 
BaseConfigurationBuilderImpl implements CompositeBuilder {
+public class CompositeServiceConfigurationBuilderImpl implements 
CompositeBuilder {
+    private AssemblyFactory assemblyFactory;
 
-    public CompositeServiceConfigurationBuilderImpl(AssemblyFactory 
assemblyFactory,
-                                             SCABindingFactory 
scaBindingFactory,
-                                             InterfaceContractMapper 
interfaceContractMapper,
-                                             SCADefinitions policyDefinitions,
-                                             Monitor monitor) {
-        super(assemblyFactory, scaBindingFactory, interfaceContractMapper, 
policyDefinitions, monitor);
+    public CompositeServiceConfigurationBuilderImpl(AssemblyFactory 
assemblyFactory) {
+        this.assemblyFactory = assemblyFactory;
     }
 
     public void build(Composite composite) throws CompositeBuilderException {
-        configureCompositeServices(composite);
+
+        // Process nested composites recursively
+        configureNestedCompositeServices(composite);
+
+        // Process top level composite services
+        for (Service service : composite.getServices()) {
+            CompositeService compositeService = (CompositeService)service;
+
+            // Get the next lower level promoted service
+            ComponentService promotedService = 
compositeService.getPromotedService();
+            if (promotedService != null) {
+
+                // Set the bindings using the top level bindings to override 
the lower level bindings
+                if (!bindingsSpecifiedManually(compositeService.getBindings()) 
&&
+                    bindingsSpecifiedManually(promotedService.getBindings())) {
+                    compositeService.getBindings().clear();
+                    for (Binding binding : promotedService.getBindings()) {
+                        try {
+                            
compositeService.getBindings().add((Binding)binding.clone());
+                        } catch (CloneNotSupportedException ex) {
+                            // this binding can't be used in the promoted 
service
+                        }
+                    }                    
+                }
+                if (compositeService.getInterfaceContract() != null &&
+                    
compositeService.getInterfaceContract().getCallbackInterface() != null) {
+                    if (!(compositeService.getCallback() != null &&
+                          
bindingsSpecifiedManually(compositeService.getCallback().getBindings())) &&
+                        promotedService.getCallback() != null &&
+                        
bindingsSpecifiedManually(promotedService.getCallback().getBindings())) {
+                        if (compositeService.getCallback() != null) {
+                            
compositeService.getCallback().getBindings().clear();
+                        } else {
+                            
compositeService.setCallback(assemblyFactory.createCallback());
+                        }
+                        for (Binding binding : 
promotedService.getCallback().getBindings()) {
+                            try {
+                                
compositeService.getCallback().getBindings().add((Binding)binding.clone());
+                            } catch (CloneNotSupportedException ex) {
+                                // this binding can't be used in the promoted 
service
+                            }
+                        }                          
+                    }
+                }
+            }
+        }
+    }
+
+    private void configureNestedCompositeServices(Composite composite) {
+
+        // Process nested composites recursively
+        for (Component component : composite.getComponents()) {
+            Implementation implementation = component.getImplementation();
+            if (implementation instanceof Composite) {
+
+                // First process nested composites
+                configureNestedCompositeServices((Composite)implementation);
+
+                // Process the component services declared on components in 
this composite
+                for (ComponentService componentService : 
component.getServices()) {
+                    Service implService = componentService.getService();
+                    if (implService != null && implService instanceof 
CompositeService) {
+                        CompositeService compositeService = 
(CompositeService)implService;
+
+                        // Get the next lower level promoted service
+                        ComponentService promotedService = 
compositeService.getPromotedService();
+                        if (promotedService != null) {
+
+                            // Set the bindings using the top level bindings 
to override the lower level bindings
+                            if 
(!bindingsSpecifiedManually(compositeService.getBindings()) &&
+                                
bindingsSpecifiedManually(promotedService.getBindings()) ) {
+                                compositeService.getBindings().clear();
+                                for (Binding binding : 
promotedService.getBindings()) {
+                                    try {
+                                        
compositeService.getBindings().add((Binding)binding.clone());
+                                    } catch (CloneNotSupportedException ex) {
+                                        // this binding can't be used in the 
promoted service
+                                    }
+                                }                    
+                            }
+                            if 
(!bindingsSpecifiedManually(componentService.getBindings()) &&
+                                
bindingsSpecifiedManually(compositeService.getBindings()) ) {
+                                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 (compositeService.getCallback() != 
null) {
+                                        
compositeService.getCallback().getBindings().clear();
+                                    } else {
+                                        
compositeService.setCallback(assemblyFactory.createCallback());
+                                    }
+                                    for (Binding binding : 
promotedService.getCallback().getBindings()) {
+                                        try {
+                                            
compositeService.getCallback().getBindings().add((Binding)binding.clone());
+                                        } catch (CloneNotSupportedException 
ex) {
+                                            // this binding can't be used in 
the promoted service
+                                        }
+                                    }                          
+                                }
+                                if (!(componentService.getCallback() != null &&
+                                      
bindingsSpecifiedManually(componentService.getCallback().getBindings())) &&
+                                    compositeService.getCallback() != null &&
+                                    
bindingsSpecifiedManually(compositeService.getCallback().getBindings())) {
+                                    if (componentService.getCallback() != 
null) {
+                                        
componentService.getCallback().getBindings().clear();
+                                    } else {
+                                        
componentService.setCallback(assemblyFactory.createCallback());
+                                    }
+                                    
componentService.getCallback().getBindings().addAll(
+                                            
compositeService.getCallback().getBindings());
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * 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;
+        }
     }
     
 }

Added: 
tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeServicePromotionBuilderImpl.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/CompositeServicePromotionBuilderImpl.java?rev=678491&view=auto
==============================================================================
--- 
tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeServicePromotionBuilderImpl.java
 (added)
+++ 
tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeServicePromotionBuilderImpl.java
 Mon Jul 21 10:37:59 2008
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+
+package org.apache.tuscany.sca.assembly.builder.impl;
+
+import org.apache.tuscany.sca.assembly.AssemblyFactory;
+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.Service;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
+
+/**
+ * A composite builder that handles the creation of promoted composite 
services.
+ *
+ * @version $Rev$ $Date$
+ */
+public class CompositeServicePromotionBuilderImpl implements CompositeBuilder {
+    private AssemblyFactory assemblyFactory;
+
+    public CompositeServicePromotionBuilderImpl(AssemblyFactory 
assemblyFactory) {
+        this.assemblyFactory = assemblyFactory;
+    }
+
+    public void build(Composite composite) throws CompositeBuilderException {
+
+        // Process top level composite services
+        for (Service service : composite.getServices()) {
+            CompositeService compositeService = (CompositeService)service;
+
+            // Get the innermost promoted service
+            ComponentService promotedService = 
ServiceConfigurationUtil.getPromotedComponentService(compositeService);
+            if (promotedService != null) {
+                Component promotedComponent = 
ServiceConfigurationUtil.getPromotedComponent(compositeService);
+
+                // Create a new component service to represent this composite
+                // service on the promoted component
+                ComponentService newComponentService = 
assemblyFactory.createComponentService();
+                newComponentService.setName("$promoted$." + 
compositeService.getName());
+                promotedComponent.getServices().add(newComponentService);
+                newComponentService.setService(promotedService.getService());
+                
newComponentService.getBindings().addAll(compositeService.getBindings());
+                
newComponentService.setInterfaceContract(compositeService.getInterfaceContract());
+                if (compositeService.getInterfaceContract() != null &&
+                    
compositeService.getInterfaceContract().getCallbackInterface() != null) {
+                    
newComponentService.setCallback(assemblyFactory.createCallback());
+                    newComponentService.getCallback().getBindings()
+                            
.addAll(compositeService.getCallback().getBindings());
+                }
+
+                // Change the composite service to now promote the newly
+                // created component service directly
+                compositeService.setPromotedComponent(promotedComponent);
+                compositeService.setPromotedService(newComponentService);
+            }
+        }
+    }
+
+}

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=678491&r1=678490&r2=678491&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
 Mon Jul 21 10:37:59 2008
@@ -18,11 +18,21 @@
  */
 package org.apache.tuscany.sca.assembly.builder.impl;
 
+import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
+import org.apache.tuscany.sca.assembly.AssemblyFactory;
 import org.apache.tuscany.sca.assembly.Binding;
+import org.apache.tuscany.sca.assembly.ComponentReference;
+import org.apache.tuscany.sca.assembly.CompositeReference;
 import org.apache.tuscany.sca.assembly.Multiplicity;
 import org.apache.tuscany.sca.assembly.OptimizableBinding;
+import org.apache.tuscany.sca.assembly.Reference;
+import org.apache.tuscany.sca.monitor.Monitor;
+import org.apache.tuscany.sca.monitor.Problem;
+import org.apache.tuscany.sca.monitor.Problem.Severity;
 
 /**
  * This class encapsulates utility methods to deal with reference definitions
@@ -30,6 +40,21 @@
  * @version $Rev$ $Date$
  */
 abstract class ReferenceConfigurationUtil {
+
+    /**
+     * Report a warning.
+     * 
+     * @param problems
+     * @param message
+     * @param model
+     */
+    private static void warning(Monitor monitor, String message, Object model, 
String... messageParameters) {
+        if (monitor != null) {
+            Problem problem = new 
ProblemImpl(ReferenceConfigurationUtil.class.getName(), 
"assembly-validation-messages", Severity.WARNING, model, message, 
(Object[])messageParameters);
+            monitor.problem(problem);
+        }
+    }
+
     static boolean isValidMultiplicityOverride(Multiplicity definedMul, 
Multiplicity overridenMul) {
         if (definedMul != overridenMul) {
             switch (definedMul) {
@@ -92,4 +117,100 @@
         }
         return true;
     }
+
+    /**
+     * Follow a reference promotion chain down to the innermost (non composite)
+     * component references.
+     * 
+     * @param compositeReference
+     * @return
+     */
+    static List<ComponentReference> 
getPromotedComponentReferences(CompositeReference compositeReference) {
+        List<ComponentReference> componentReferences = new 
ArrayList<ComponentReference>();
+        collectPromotedComponentReferences(compositeReference, 
componentReferences);
+        return componentReferences;
+    }
+
+    /**
+     * Follow a reference promotion chain down to the innermost (non composite)
+     * component references.
+     * 
+     * @param compositeReference
+     * @param componentReferences
+     * @return
+     */
+    private static void collectPromotedComponentReferences(CompositeReference 
compositeReference,
+                                                           
List<ComponentReference> componentReferences) {
+        for (ComponentReference componentReference : 
compositeReference.getPromotedReferences()) {
+            Reference reference = componentReference.getReference();
+            if (reference instanceof CompositeReference) {
+    
+                // Continue to follow the reference promotion chain
+                
collectPromotedComponentReferences((CompositeReference)reference, 
componentReferences);
+    
+            } else if (reference != null) {
+    
+                // Found a non-composite reference
+                componentReferences.add(componentReference);
+            }
+        }
+    }
+
+    /**
+     * Override the bindings for a promoted reference from an outer component
+     * reference
+     * 
+     * @param reference
+     * @param promotedReference
+     */
+    static void reconcileReferenceBindings(Reference reference,
+                                           ComponentReference 
promotedReference,
+                                           AssemblyFactory assemblyFactory,
+                                           Monitor monitor) {
+        List<Binding> bindings = new ArrayList<Binding>();
+        
+        // collect the top level bindings first
+        for (Binding binding : reference.getBindings()) {
+            if ((!(binding instanceof OptimizableBinding)) || binding.getURI() 
!= null) {
+                bindings.add(binding);
+            }
+        }
+        
+        // if there are not top level bindings to override the promoted 
bindings
+        // then collect the promoted bindings
+        if (bindings.size() == 0){
+            for (Binding binding : promotedReference.getBindings()) {
+                if ((!(binding instanceof OptimizableBinding)) || 
binding.getURI() != null) {
+                    bindings.add(binding);
+                }
+            }
+        } else {
+            // TUSCANY-2324: if bindings are being replaced, use the matching 
interface contract
+            
promotedReference.setInterfaceContract(reference.getInterfaceContract());
+        }
+        
+        promotedReference.getBindings().clear();
+        promotedReference.getBindings().addAll(bindings);
+        
+        if (promotedReference.getMultiplicity() == Multiplicity.ONE_ONE ||
+            promotedReference.getMultiplicity() == Multiplicity.ZERO_ONE) {
+            if (promotedReference.getBindings().size() > 1) {
+                warning(monitor, "ComponentReferenceMoreWire", 
promotedReference, promotedReference.getName());                
+            }
+        }
+        Set<Binding> callbackBindings = new HashSet<Binding>();
+        if (promotedReference.getCallback() != null) {
+            
callbackBindings.addAll(promotedReference.getCallback().getBindings());
+        }
+        if (reference.getCallback() != null) {
+            callbackBindings.addAll(reference.getCallback().getBindings());
+        }
+        promotedReference.setCallback(assemblyFactory.createCallback());
+        for (Binding binding : callbackBindings) {
+            if ((!(binding instanceof OptimizableBinding)) || binding.getURI() 
!= null) {
+                promotedReference.getCallback().getBindings().add(binding);
+            }
+        }
+    }
+
 }

Modified: 
tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ServiceConfigurationUtil.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/ServiceConfigurationUtil.java?rev=678491&r1=678490&r2=678491&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ServiceConfigurationUtil.java
 (original)
+++ 
tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ServiceConfigurationUtil.java
 Mon Jul 21 10:37:59 2008
@@ -18,6 +18,7 @@
  */
 package org.apache.tuscany.sca.assembly.builder.impl;
 
+import org.apache.tuscany.sca.assembly.Component;
 import org.apache.tuscany.sca.assembly.ComponentService;
 import org.apache.tuscany.sca.assembly.CompositeService;
 import org.apache.tuscany.sca.assembly.Service;
@@ -56,4 +57,32 @@
             return null;
         }
     }
+
+    /**
+     * Follow a service promotion chain down to the innermost (non-composite) 
component.
+     * 
+     * @param compositeService
+     * @return
+     */
+    static Component getPromotedComponent(CompositeService compositeService) {
+        ComponentService componentService = 
compositeService.getPromotedService();
+        if (componentService != null) {
+            Service service = componentService.getService();
+            if (componentService.getName() != null && service instanceof 
CompositeService) {
+
+                // Continue to follow the service promotion chain
+                return getPromotedComponent((CompositeService)service);
+
+            } else {
+
+                // Found a non-composite service
+                return compositeService.getPromotedComponent();
+            }
+        } else {
+
+            // No promoted service
+            return null;
+        }
+    }
+
 }

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=678491&r1=678490&r2=678491&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
 Mon Jul 21 10:37:59 2008
@@ -40,6 +40,7 @@
     private List<ComponentService> targets = new ArrayList<ComponentService>();
     private Callback callback;
     private List<PolicySet> applicablePolicySets = new ArrayList<PolicySet>();
+    private boolean promotionOverride;
 
     public List<PolicySet> getApplicablePolicySets() {
         return applicablePolicySets;
@@ -93,6 +94,14 @@
         this.wiredByImpl = wiredByImpl;
     }
 
+    public boolean isPromotionOverride() {
+        return promotionOverride;
+    }
+
+    public void setPromotionOverride(boolean promotionOverride) {
+        this.promotionOverride = promotionOverride;
+    }
+
     public List<PolicySet> getPolicySets() {
         return policySets;
     }

Modified: 
tuscany/branches/sca-java-1.3/modules/assembly/src/main/resources/assembly-validation-messages.properties
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/modules/assembly/src/main/resources/assembly-validation-messages.properties?rev=678491&r1=678490&r2=678491&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.3/modules/assembly/src/main/resources/assembly-validation-messages.properties
 (original)
+++ 
tuscany/branches/sca-java-1.3/modules/assembly/src/main/resources/assembly-validation-messages.properties
 Mon Jul 21 10:37:59 2008
@@ -38,6 +38,7 @@
 ReferenceIncompatibleComponentInterface = Component reference interface 
incompatible with reference interface: Component = {0} Reference = {1}
 ServiceIncompatibleComponentInterface = Component service interface 
incompatible with service interface: Component = {0} Service = {1}
 MultipleBindingsForService = Multiple bindings with the same name for a 
service: Binding = {0} Service = {1} Binding = {2}
+MultipleBindingsForReference = Multiple bindings with the same name for a 
reference: Binding = {0} Reference = {1} Binding = {2}
 ReferenceWithoutTargets = No targets for reference: Composite = {0} Reference 
= {1}
 PromotedReferenceNotFound = Promoted component reference not found: Composite 
= {0} Reference = {1}
 PromotedServiceNotFound = Promoted component service not found: Composite = 
{0} Service = {1}

Modified: 
tuscany/branches/sca-java-1.3/modules/binding-sca-axis2/src/test/java/org/apache/tuscany/sca/binding/sca/axis2/TestNode.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/modules/binding-sca-axis2/src/test/java/org/apache/tuscany/sca/binding/sca/axis2/TestNode.java?rev=678491&r1=678490&r2=678491&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.3/modules/binding-sca-axis2/src/test/java/org/apache/tuscany/sca/binding/sca/axis2/TestNode.java
 (original)
+++ 
tuscany/branches/sca-java-1.3/modules/binding-sca-axis2/src/test/java/org/apache/tuscany/sca/binding/sca/axis2/TestNode.java
 Mon Jul 21 10:37:59 2008
@@ -206,7 +206,7 @@
                     CompositeService compositeService = 
(CompositeService)componentService.getService();
                     if (compositeService != null) {
                         if (serviceName != null) {
-                            serviceName = "$promoted$." + serviceName;
+                            serviceName = "$promoted$." + component.getName() 
+ "." + serviceName;
                         }
                         componentContext =
                             
((RuntimeComponent)compositeService.getPromotedComponent()).getComponentContext();

Modified: 
tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/WSDLServiceGenerator.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/WSDLServiceGenerator.java?rev=678491&r1=678490&r2=678491&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/WSDLServiceGenerator.java
 (original)
+++ 
tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/WSDLServiceGenerator.java
 Mon Jul 21 10:37:59 2008
@@ -151,13 +151,19 @@
                                                         AbstractContract 
contract,
                                                         Monitor monitor) {
 
+        //[nash] changes to the builder sequence avoid calling this for a 
CompositeService
+        assert !(contract instanceof CompositeService);
+        /*
         // For every promoted composite service, the underlying component
         // gets a copy of the service with the name prefixed by "$promoted$."
         String contractName = (contract instanceof CompositeService ? 
"$promoted$." : "") + contract.getName();
+        */
+        String contractName = contract.getName();
 
         List<Port> ports = new ArrayList<Port>();
         WSDLDefinition wsdlDefinition = wsBinding.getWSDLDefinition();
         if (wsdlDefinition == null) {
+            error(monitor, "NoWsdlInterface", wsBinding, component.getName(), 
contract.getName());
             return null;
         }
         Definition def = wsdlDefinition.getDefinition();

Modified: 
tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/main/resources/wsdlgen-validation-messages.properties
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/main/resources/wsdlgen-validation-messages.properties?rev=678491&r1=678490&r2=678491&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/main/resources/wsdlgen-validation-messages.properties
 (original)
+++ 
tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/main/resources/wsdlgen-validation-messages.properties
 Mon Jul 21 10:37:59 2008
@@ -28,3 +28,4 @@
 BindingNotFound = Binding {0} in {1}/{2} was not found
 InvalidPort = Port {0}/{1} in {2}/{3} is not supported
 NoValidPorts = No valid ports for service {0} in {1}/{2}
+NoWsdlInterface = No WSDL interface definition for {1}/{2}

Modified: 
tuscany/branches/sca-java-1.3/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/DefaultSCADomain.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/DefaultSCADomain.java?rev=678491&r1=678490&r2=678491&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.3/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/DefaultSCADomain.java
 (original)
+++ 
tuscany/branches/sca-java-1.3/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/DefaultSCADomain.java
 Mon Jul 21 10:37:59 2008
@@ -561,7 +561,7 @@
                     CompositeService compositeService = 
(CompositeService)componentService.getService();
                     if (compositeService != null) {
                         if (serviceName != null) {
-                            serviceName = "$promoted$." + serviceName;
+                            serviceName = "$promoted$." + component.getName() 
+ "." + serviceName;
                         }
                         componentContext =
                             
((RuntimeComponent)compositeService.getPromotedComponent()).getComponentContext();

Modified: 
tuscany/branches/sca-java-1.3/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/EmbeddedSCADomain.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/EmbeddedSCADomain.java?rev=678491&r1=678490&r2=678491&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.3/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/EmbeddedSCADomain.java
 (original)
+++ 
tuscany/branches/sca-java-1.3/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/EmbeddedSCADomain.java
 Mon Jul 21 10:37:59 2008
@@ -203,7 +203,7 @@
                     CompositeService compositeService = 
(CompositeService)componentService.getService();
                     if (compositeService != null) {
                         if (serviceName != null) {
-                            serviceName = "$promoted$." + serviceName;
+                            serviceName = "$promoted$." + component.getName() 
+ "." + serviceName;
                         }
                         componentContext =
                             
((RuntimeComponent)compositeService.getPromotedComponent()).getComponentContext();

Modified: 
tuscany/branches/sca-java-1.3/modules/node2-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/modules/node2-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java?rev=678491&r1=678490&r2=678491&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.3/modules/node2-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
 (original)
+++ 
tuscany/branches/sca-java-1.3/modules/node2-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
 Mon Jul 21 10:37:59 2008
@@ -639,7 +639,7 @@
                     CompositeService compositeService = 
(CompositeService)componentService.getService();
                     if (compositeService != null) {
                         if (serviceName != null) {
-                            serviceName = "$promoted$." + serviceName;
+                            serviceName = "$promoted$." + component.getName() 
+ "." + serviceName;
                         }
                         componentContext =
                             
((RuntimeComponent)compositeService.getPromotedComponent()).getComponentContext();

Modified: 
tuscany/branches/sca-java-1.3/samples/databinding-echo/src/main/resources/EchoDataBinding.composite
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/samples/databinding-echo/src/main/resources/EchoDataBinding.composite?rev=678491&r1=678490&r2=678491&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.3/samples/databinding-echo/src/main/resources/EchoDataBinding.composite
 (original)
+++ 
tuscany/branches/sca-java-1.3/samples/databinding-echo/src/main/resources/EchoDataBinding.composite
 Mon Jul 21 10:37:59 2008
@@ -38,13 +38,13 @@
     </component>
 
     <reference name="EchoReference" promote="ComponentB/echoReference">
-        <!-- 
-            <interface.java interface="dbecho.Echo"/>
-        -->
+        <interface.java interface="dbecho.Echo"/>
+    <!-- Replaced interface.wsdl by interface.java because TUSCANY-2324 fix 
uses the interface specified here
         <interface.wsdl 
interface="http://example.com/echo.wsdl#wsdl.interface(EchoPortType)"
             wsdli:wsdlLocation="http://example.com/echo.wsdl wsdl/echo.wsdl">
             <db:databinding 
xmlns:db="http://tuscany.apache.org/xmlns/sca/databinding/1.0"; 
name="org.apache.axiom.om.OMElement" />
         </interface.wsdl>
+    -->
         <e:binding.echo/>
     </reference>
 
@@ -55,4 +55,4 @@
         </foo>
     </property>
 
-</composite>
+</composite>
\ No newline at end of file

Modified: 
tuscany/branches/sca-java-1.3/samples/quote-xquery/src/main/resources/xqueryquotewsclient.composite
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/samples/quote-xquery/src/main/resources/xqueryquotewsclient.composite?rev=678491&r1=678490&r2=678491&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.3/samples/quote-xquery/src/main/resources/xqueryquotewsclient.composite
 (original)
+++ 
tuscany/branches/sca-java-1.3/samples/quote-xquery/src/main/resources/xqueryquotewsclient.composite
 Mon Jul 21 10:37:59 2008
@@ -101,7 +101,9 @@
     </component>
 
     <reference name="availQuoteProvider" 
promote="QuoteJoinExternalReferencesComponent/availQuoteProvider">
+        <!-- removed because it doesn't work with TUSCANY-2324 fix
         <interface.java interface="xquery.quote.AvailQuoteProviderService" />
+        -->
         <binding.ws 
wsdlElement="http://quote.xquery#wsdl.port(AvailQuoteProviderService/AvailQuoteProviderSoapPort)"
 />
     </reference>
     <reference name="quoteJoinWs" 
promote="QuoteJoinLocalComponent/quoteJoinWs">


Reply via email to