You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by na...@apache.org on 2008/06/30 18:02:57 UTC

svn commit: r672803 [1/3] - in /tuscany/branches/sca-java-1.3: itest/validation/src/main/java/calculator/warning/ itest/validation/src/main/resources/NoMatchingBinding/ itest/validation/src/main/resources/ServiceNotFoundForComponentService/ itest/valid...

Author: nash
Date: Mon Jun 30 09:02:54 2008
New Revision: 672803

URL: http://svn.apache.org/viewvc?rev=672803&view=rev
Log:
Fix TUSCANY-2446

Added:
    tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/BindingBuilder.java
    tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/BindingBuilderExtension.java
    tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeReferenceBindingBuilderImpl.java
    tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeServiceBindingBuilderImpl.java
    tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/
    tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/LICENSE
    tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/NOTICE
    tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/pom.xml
    tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/
    tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/main/
    tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/main/java/
    tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/main/java/org/
    tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/main/java/org/apache/
    tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/
    tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/
    tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/
    tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/
    tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/
    tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/BindingWSDLGenerator.java
    tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGenerator.java
    tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/WSDLDefinitionGenerator.java
    tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/WSDLGenerationException.java
    tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/WSDLServiceGenerator.java
    tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/main/resources/
    tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/main/resources/wsdlgen-validation-messages.properties
    tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/
    tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/
    tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/
    tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/
    tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/
    tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/
    tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/
    tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/
    tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/
    tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/BindingWSDLGeneratorTestCase.java
    tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGeneratorTestCase.java
    tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/TestException.java
    tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/TestFault.java
    tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/TestFaultBean.java
    tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/TestJavaClass.java
    tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/TestJavaInterface.java
    tuscany/branches/sca-java-1.3/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/BindingBuilderImpl.java
Modified:
    tuscany/branches/sca-java-1.3/itest/validation/src/main/java/calculator/warning/AddService.java
    tuscany/branches/sca-java-1.3/itest/validation/src/main/resources/NoMatchingBinding/Calculator.composite
    tuscany/branches/sca-java-1.3/itest/validation/src/main/resources/ServiceNotFoundForComponentService/Calculator.composite
    tuscany/branches/sca-java-1.3/itest/validation/src/main/resources/impl/osgi/MissingComponentTypeFile/OSGiTestService.jar
    tuscany/branches/sca-java-1.3/itest/validation/src/main/resources/impl/osgi/PropertyShouldSpecifySR/OSGiTestService.jar
    tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseConfigurationBuilderImpl.java
    tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBuilderImpl.java
    tuscany/branches/sca-java-1.3/modules/binding-sca-axis2/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCABindingProviderFactory.java
    tuscany/branches/sca-java-1.3/modules/binding-sca-axis2/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCAReferenceBindingProvider.java
    tuscany/branches/sca-java-1.3/modules/binding-sca-axis2/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCAServiceBindingProvider.java
    tuscany/branches/sca-java-1.3/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ReferenceBindingProvider.java
    tuscany/branches/sca-java-1.3/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceBindingProvider.java
    tuscany/branches/sca-java-1.3/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceClient.java
    tuscany/branches/sca-java-1.3/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java
    tuscany/branches/sca-java-1.3/modules/binding-ws-xml/pom.xml
    tuscany/branches/sca-java-1.3/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java
    tuscany/branches/sca-java-1.3/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/WebServiceBinding.java
    tuscany/branches/sca-java-1.3/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/impl/WebServiceBindingImpl.java
    tuscany/branches/sca-java-1.3/modules/core/src/main/java/org/apache/tuscany/sca/core/context/CallableReferenceImpl.java

Modified: tuscany/branches/sca-java-1.3/itest/validation/src/main/java/calculator/warning/AddService.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/itest/validation/src/main/java/calculator/warning/AddService.java?rev=672803&r1=672802&r2=672803&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.3/itest/validation/src/main/java/calculator/warning/AddService.java (original)
+++ tuscany/branches/sca-java-1.3/itest/validation/src/main/java/calculator/warning/AddService.java Mon Jun 30 09:02:54 2008
@@ -18,9 +18,12 @@
  */
 package calculator.warning;
 
+import org.osoa.sca.annotations.Remotable;
+
 /**
  * The Add service interface
  */
+@Remotable
 public interface AddService {
 
     double add(double n1, double n2);

Modified: tuscany/branches/sca-java-1.3/itest/validation/src/main/resources/NoMatchingBinding/Calculator.composite
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/itest/validation/src/main/resources/NoMatchingBinding/Calculator.composite?rev=672803&r1=672802&r2=672803&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.3/itest/validation/src/main/resources/NoMatchingBinding/Calculator.composite (original)
+++ tuscany/branches/sca-java-1.3/itest/validation/src/main/resources/NoMatchingBinding/Calculator.composite Mon Jun 30 09:02:54 2008
@@ -34,7 +34,7 @@
     
     <component name="AddServiceComponent">
         <implementation.java class="calculator.warning.AddServiceImpl"/>
-        <service name="AddServiceImpl">
+        <service name="AddService">
             <binding.ws/>
         </service>
     </component>    

Modified: tuscany/branches/sca-java-1.3/itest/validation/src/main/resources/ServiceNotFoundForComponentService/Calculator.composite
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/itest/validation/src/main/resources/ServiceNotFoundForComponentService/Calculator.composite?rev=672803&r1=672802&r2=672803&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.3/itest/validation/src/main/resources/ServiceNotFoundForComponentService/Calculator.composite (original)
+++ tuscany/branches/sca-java-1.3/itest/validation/src/main/resources/ServiceNotFoundForComponentService/Calculator.composite Mon Jun 30 09:02:54 2008
@@ -35,7 +35,7 @@
     </component>   
 
     <component name="AddServiceComponent_one">
-        <service name="AddService"/>
+        <service name="AddService_one"/>
         <implementation.java class="calculator.warning.AddServiceImpl"/>
     </component> 
 

Modified: tuscany/branches/sca-java-1.3/itest/validation/src/main/resources/impl/osgi/MissingComponentTypeFile/OSGiTestService.jar
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/itest/validation/src/main/resources/impl/osgi/MissingComponentTypeFile/OSGiTestService.jar?rev=672803&r1=672802&r2=672803&view=diff
==============================================================================
Binary files - no diff available.

Modified: tuscany/branches/sca-java-1.3/itest/validation/src/main/resources/impl/osgi/PropertyShouldSpecifySR/OSGiTestService.jar
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/itest/validation/src/main/resources/impl/osgi/PropertyShouldSpecifySR/OSGiTestService.jar?rev=672803&r1=672802&r2=672803&view=diff
==============================================================================
Binary files - no diff available.

Added: tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/BindingBuilder.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/BindingBuilder.java?rev=672803&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/BindingBuilder.java (added)
+++ tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/BindingBuilder.java Mon Jun 30 09:02:54 2008
@@ -0,0 +1,42 @@
+/*
+ * 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;
+
+import org.apache.tuscany.sca.assembly.AbstractContract;
+import org.apache.tuscany.sca.assembly.Binding;
+import org.apache.tuscany.sca.assembly.Component;
+import org.apache.tuscany.sca.monitor.Monitor;
+
+/**
+ * A builder that handles any build-time configuration needed by bindings.
+ *
+ * @version $Rev$ $Date$
+ */
+public interface BindingBuilder {
+    
+    /**
+     * Configure a binding.
+     * 
+     * @param component The component for the binding's service or reference
+     * @param contract The binding's service or reference
+     */
+    void build(Component component, AbstractContract contract, Binding binding, Monitor monitor);
+    
+}

Added: tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/BindingBuilderExtension.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/BindingBuilderExtension.java?rev=672803&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/BindingBuilderExtension.java (added)
+++ tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/BindingBuilderExtension.java Mon Jun 30 09:02:54 2008
@@ -0,0 +1,44 @@
+/*
+ * 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;
+
+/**
+ * An extension that can be implemented by bindings to provide a binding builder.
+ *
+ * @version $Rev$ $Date$
+ */
+public interface BindingBuilderExtension {
+
+    /**
+     * Returns the binding builder.
+     * 
+     * @return the binding builder
+     */
+    BindingBuilder getBuilder();
+
+    /**
+     * Sets the binding builder.
+     * 
+     * @param builder the binding builder
+     */
+    void setBuilder(BindingBuilder builder);
+
+}
+

Modified: tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseConfigurationBuilderImpl.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/BaseConfigurationBuilderImpl.java?rev=672803&r1=672802&r2=672803&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseConfigurationBuilderImpl.java (original)
+++ tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseConfigurationBuilderImpl.java Mon Jun 30 09:02:54 2008
@@ -825,7 +825,7 @@
                 newComponentService.setName("$promoted$." + compositeService.getName());
                 promotedComponent.getServices().add(newComponentService);
                 newComponentService.setService(promotedService.getService());
-                newComponentService.getBindings().addAll(compositeService.getBindings());
+                 newComponentService.getBindings().addAll(compositeService.getBindings());
                 newComponentService.setInterfaceContract(compositeService.getInterfaceContract());
                 if (compositeService.getInterfaceContract() != null && compositeService
                     .getInterfaceContract().getCallbackInterface() != null) {
@@ -891,7 +891,7 @@
                             newComponentService.setName("$promoted$." + componentService.getName());
                             promotedComponent.getServices().add(newComponentService);
                             newComponentService.setService(promotedService.getService());
-                            newComponentService.getBindings()
+                             newComponentService.getBindings()
                                 .addAll(componentService.getBindings());
                             newComponentService.setInterfaceContract(componentService
                                 .getInterfaceContract());
@@ -952,7 +952,7 @@
      * @param compositeService
      * @return
      */
-    private static Component getPromotedComponent(CompositeService compositeService) {
+    protected static Component getPromotedComponent(CompositeService compositeService) {
         ComponentService componentService = compositeService.getPromotedService();
         if (componentService != null) {
             Service service = componentService.getService();

Modified: tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBuilderImpl.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/CompositeBuilderImpl.java?rev=672803&r1=672802&r2=672803&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBuilderImpl.java (original)
+++ tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBuilderImpl.java Mon Jun 30 09:02:54 2008
@@ -27,6 +27,7 @@
 import org.apache.tuscany.sca.assembly.SCABindingFactory;
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.definitions.SCADefinitions;
 import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper;
 import org.apache.tuscany.sca.monitor.Monitor;
@@ -48,6 +49,8 @@
     private CompositeBuilder compositeServiceConfigurationBuilder;
     private CompositeBuilder compositePromotionBuilder;
     private CompositeBuilder compositePolicyBuilder;
+    private CompositeBuilder compositeServiceBindingBuilder;
+    private CompositeBuilder compositeReferenceBindingBuilder;
     
     /**
      * Constructs a new composite builder.
@@ -97,6 +100,8 @@
         compositeServiceConfigurationBuilder = new CompositeServiceConfigurationBuilderImpl(assemblyFactory, scaBindingFactory, interfaceContractMapper, policyDefinitions, monitor);
         compositePromotionBuilder = new CompositePromotionBuilderImpl(assemblyFactory, endpointFactory, interfaceContractMapper, monitor);
         compositePolicyBuilder = new CompositePolicyBuilderImpl(assemblyFactory, endpointFactory, interfaceContractMapper, monitor);
+        compositeServiceBindingBuilder = new CompositeServiceBindingBuilderImpl(monitor);
+        compositeReferenceBindingBuilder = new CompositeReferenceBindingBuilderImpl(monitor);
     }
 
     public void build(Composite composite) throws CompositeBuilderException {
@@ -115,6 +120,9 @@
         
         // Compute the policies across the model hierarchy
         compositePolicyBuilder.build(composite);
+
+        // Build service binding-related information
+        compositeServiceBindingBuilder.build(composite);
         
         // Wire the components
         componentWireBuilder.build(composite);
@@ -124,6 +132,9 @@
 
         // Wire the composite references
         compositeReferenceWireBuilder.build(composite);
+
+        // Build reference binding-related information
+        compositeReferenceBindingBuilder.build(composite);
         
         // Fuse nested composites
         //FIXME do this later

Added: tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeReferenceBindingBuilderImpl.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/CompositeReferenceBindingBuilderImpl.java?rev=672803&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeReferenceBindingBuilderImpl.java (added)
+++ tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeReferenceBindingBuilderImpl.java Mon Jun 30 09:02:54 2008
@@ -0,0 +1,72 @@
+/*
+ * 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.Binding;
+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.Implementation;
+import org.apache.tuscany.sca.assembly.builder.BindingBuilderExtension;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
+import org.apache.tuscany.sca.monitor.Monitor;
+
+/**
+ * A composite builder that performs any additional building steps that
+ * reference bindings may need.  Used for WSDL generation.
+ *
+ * @version $Rev$ $Date$
+ */
+public class CompositeReferenceBindingBuilderImpl implements CompositeBuilder {
+    private Monitor monitor;
+
+    public CompositeReferenceBindingBuilderImpl(Monitor monitor) {
+        this.monitor = monitor;
+    }
+
+    public void build(Composite composite) throws CompositeBuilderException {
+        buildReferenceBindings(composite);
+    }
+    
+    private void buildReferenceBindings(Composite composite) {
+        
+        // build bindings recursively
+        for (Component component : composite.getComponents()) {
+            Implementation implementation = component.getImplementation();
+            if (implementation instanceof Composite) {
+                buildReferenceBindings((Composite)implementation);
+            }
+        }
+    
+        // find all the component reference bindings     
+        for (Component component : composite.getComponents()) {
+            for (ComponentReference componentReference : component.getReferences()) {
+                for (Binding binding : componentReference.getBindings()) {
+                    if (binding instanceof BindingBuilderExtension) {
+                        ((BindingBuilderExtension)binding).getBuilder().build(component, componentReference, binding, monitor);
+                    }
+                }
+            }
+        }
+    }
+
+}

Added: tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeServiceBindingBuilderImpl.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/CompositeServiceBindingBuilderImpl.java?rev=672803&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeServiceBindingBuilderImpl.java (added)
+++ tuscany/branches/sca-java-1.3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeServiceBindingBuilderImpl.java Mon Jun 30 09:02:54 2008
@@ -0,0 +1,84 @@
+/*
+ * 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.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.CompositeService;
+import org.apache.tuscany.sca.assembly.Implementation;
+import org.apache.tuscany.sca.assembly.Service;
+import org.apache.tuscany.sca.assembly.builder.BindingBuilderExtension;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
+import org.apache.tuscany.sca.monitor.Monitor;
+
+/**
+ * A composite builder that performs any additional building steps that
+ * service bindings may need.  Used for WSDL generation.
+ *
+ * @version $Rev$ $Date$
+ */
+public class CompositeServiceBindingBuilderImpl implements CompositeBuilder {
+    private Monitor monitor;
+
+    public CompositeServiceBindingBuilderImpl(Monitor monitor) {
+        this.monitor = monitor;
+    }
+
+    public void build(Composite composite) throws CompositeBuilderException {
+        buildServiceBindings(composite);
+    }
+    
+    private void buildServiceBindings(Composite composite) {
+        
+        // build bindings recursively
+        for (Component component : composite.getComponents()) {
+            Implementation implementation = component.getImplementation();
+            if (implementation instanceof Composite) {
+                buildServiceBindings((Composite)implementation);
+            }
+        }
+
+        // find all the component service bindings     
+        for (Component component : composite.getComponents()) {
+            for (ComponentService componentService : component.getServices()) {
+                for (Binding binding : componentService.getBindings()) {
+                    if (binding instanceof BindingBuilderExtension) {
+                        ((BindingBuilderExtension)binding).getBuilder().build(component, componentService, binding, monitor);
+                    }
+                }
+            }
+        }
+
+        // find all the composite service bindings     
+        for (Service service : composite.getServices()) {
+            for (Binding binding : service.getBindings()) {
+                if (binding instanceof BindingBuilderExtension) {
+                    Component component = BaseConfigurationBuilderImpl.getPromotedComponent((CompositeService)service);
+                    ((BindingBuilderExtension)binding).getBuilder().build(component, service, binding, monitor);
+                }
+            }
+        }
+    }
+
+}

Modified: tuscany/branches/sca-java-1.3/modules/binding-sca-axis2/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCABindingProviderFactory.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/modules/binding-sca-axis2/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCABindingProviderFactory.java?rev=672803&r1=672802&r2=672803&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.3/modules/binding-sca-axis2/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCABindingProviderFactory.java (original)
+++ tuscany/branches/sca-java-1.3/modules/binding-sca-axis2/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCABindingProviderFactory.java Mon Jun 30 09:02:54 2008
@@ -23,12 +23,7 @@
 import java.util.Map;
 
 import org.apache.tuscany.sca.binding.sca.DistributedSCABinding;
-import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
 import org.apache.tuscany.sca.core.ExtensionPointRegistry;
-import org.apache.tuscany.sca.databinding.DataBindingExtensionPoint;
-import org.apache.tuscany.sca.host.http.ServletHost;
-import org.apache.tuscany.sca.host.http.ServletHostExtensionPoint;
-import org.apache.tuscany.sca.invocation.MessageFactory;
 import org.apache.tuscany.sca.policy.util.PolicyHandlerDefinitionsLoader;
 import org.apache.tuscany.sca.policy.util.PolicyHandlerTuple;
 import org.apache.tuscany.sca.provider.BindingProviderFactory;
@@ -45,33 +40,26 @@
  */
 public class Axis2SCABindingProviderFactory implements BindingProviderFactory<DistributedSCABinding> {
     
-    private ModelFactoryExtensionPoint modelFactories;
-    private ServletHost servletHost;
+    private ExtensionPointRegistry extensionPoints;
     private Map<ClassLoader, List<PolicyHandlerTuple>> policyHandlerClassnames = null;
-    private DataBindingExtensionPoint dataBindings;
 
     public Axis2SCABindingProviderFactory(ExtensionPointRegistry extensionPoints) {
-        ServletHostExtensionPoint servletHosts = extensionPoints.getExtensionPoint(ServletHostExtensionPoint.class);
-        servletHost = servletHosts.getServletHosts().get(0);
-        modelFactories = extensionPoints.getExtensionPoint(ModelFactoryExtensionPoint.class);
+        this.extensionPoints = extensionPoints;
         policyHandlerClassnames = PolicyHandlerDefinitionsLoader.loadPolicyHandlerClassnames();
-        dataBindings = extensionPoints.getExtensionPoint(DataBindingExtensionPoint.class);
     }    
 
     public ReferenceBindingProvider createReferenceBindingProvider(RuntimeComponent component,
                                                                    RuntimeComponentReference reference,
                                                                    DistributedSCABinding binding) {
         return new Axis2SCAReferenceBindingProvider(component, reference, binding,
-                                                    servletHost, modelFactories,
-                                                    policyHandlerClassnames, dataBindings);
+                                                    extensionPoints, policyHandlerClassnames);
     }
 
     public ServiceBindingProvider createServiceBindingProvider(RuntimeComponent component,
                                                                RuntimeComponentService service,
                                                                DistributedSCABinding binding) {
         return new Axis2SCAServiceBindingProvider(component, service, binding,
-                                                  servletHost, modelFactories,
-                                                  policyHandlerClassnames, dataBindings);
+                                                  extensionPoints, policyHandlerClassnames);
     }
 
     public Class<DistributedSCABinding> getModelType() {

Modified: tuscany/branches/sca-java-1.3/modules/binding-sca-axis2/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCAReferenceBindingProvider.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/modules/binding-sca-axis2/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCAReferenceBindingProvider.java?rev=672803&r1=672802&r2=672803&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.3/modules/binding-sca-axis2/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCAReferenceBindingProvider.java (original)
+++ tuscany/branches/sca-java-1.3/modules/binding-sca-axis2/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCAReferenceBindingProvider.java Mon Jun 30 09:02:54 2008
@@ -1,197 +1,186 @@
-/*
- * 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.binding.sca.axis2.impl;
-
-import java.net.URI;
-import java.util.List;
-import java.util.Map;
-import java.util.logging.Logger;
-
-import org.apache.axiom.om.OMElement;
-import org.apache.tuscany.sca.assembly.Binding;
-import org.apache.tuscany.sca.assembly.SCABinding;
-import org.apache.tuscany.sca.binding.sca.DistributedSCABinding;
-import org.apache.tuscany.sca.binding.ws.WebServiceBindingFactory;
-import org.apache.tuscany.sca.binding.ws.WebServiceBinding;
-import org.apache.tuscany.sca.binding.ws.axis2.Axis2ReferenceBindingProvider;
-import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
-import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
-import org.apache.tuscany.sca.contribution.resolver.ResolverExtension;
-import org.apache.tuscany.sca.core.assembly.EndpointReferenceImpl;
-import org.apache.tuscany.sca.databinding.DataBindingExtensionPoint;
-import org.apache.tuscany.sca.host.http.ServletHost;
-import org.apache.tuscany.sca.interfacedef.InterfaceContract;
-import org.apache.tuscany.sca.interfacedef.Operation;
-import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceContract;
-import org.apache.tuscany.sca.interfacedef.wsdl.WSDLFactory;
-import org.apache.tuscany.sca.interfacedef.wsdl.java2wsdl.Java2WSDLHelper;
-import org.apache.tuscany.sca.invocation.Invoker;
-import org.apache.tuscany.sca.invocation.MessageFactory;
-import org.apache.tuscany.sca.policy.util.PolicyHandlerTuple;
-import org.apache.tuscany.sca.provider.ReferenceBindingProvider;
-import org.apache.tuscany.sca.runtime.EndpointReference;
-import org.apache.tuscany.sca.runtime.RuntimeComponent;
-import org.apache.tuscany.sca.runtime.RuntimeComponentReference;
-import org.apache.tuscany.sca.xsd.XSDFactory;
-
-/**
- * The reference binding provider for the remote sca binding implementation. Relies on the 
- * binding-ws-axis implementation for sending messages to remote services to this provider
- * just uses the ws-axis provider. 
- * 
- * @version $Rev: 563772 $ $Date: 2007-08-08 07:50:49 +0100 (Wed, 08 Aug 2007) $
- */
-public class Axis2SCAReferenceBindingProvider implements ReferenceBindingProvider {
-
-    private static final Logger logger = Logger.getLogger(Axis2SCAReferenceBindingProvider.class.getName());
-    
-    private RuntimeComponent component;
-    private RuntimeComponentReference reference;
-    private SCABinding binding;
-    private Axis2ReferenceBindingProvider axisReferenceBindingProvider;
-    private WebServiceBinding wsBinding;
-    
-    private EndpointReference serviceEPR = null;
-    private EndpointReference callbackEPR = null;
-
-    public Axis2SCAReferenceBindingProvider(RuntimeComponent component,
-                                            RuntimeComponentReference reference,
-                                            DistributedSCABinding binding,
-                                            ServletHost servletHost,
-                                            ModelFactoryExtensionPoint modelFactories,
-                                            Map<ClassLoader, List<PolicyHandlerTuple>> policyHandlerClassnames,
-                                            DataBindingExtensionPoint dataBindings) {
-
-        WSDLFactory wsdlFactory = modelFactories.getFactory(WSDLFactory.class);
-        XSDFactory xsdFactory = modelFactories.getFactory(XSDFactory.class);
-
-        this.component = component;
-        this.reference = reference;
-        this.binding = binding.getSCABinding();
-        wsBinding = modelFactories.getFactory(WebServiceBindingFactory.class).createWebServiceBinding();
-       
-        // Turn the java interface contract into a WSDL interface contract
-        InterfaceContract contract = reference.getInterfaceContract();
-        if ((contract instanceof JavaInterfaceContract)) {
-            ModelResolver resolver = component instanceof ResolverExtension ?
-                                         ((ResolverExtension)component).getModelResolver() : null;
-            contract = Java2WSDLHelper.createWSDLInterfaceContract(
-                           (JavaInterfaceContract)contract, resolver, dataBindings, wsdlFactory, xsdFactory);
-        }
-        
-        // Set to use the Axiom data binding
-        contract.getInterface().resetDataBinding(OMElement.class.getName());
-        
-        wsBinding.setBindingInterfaceContract(contract);
-        wsBinding.setName(this.binding.getName());         
-               
-        axisReferenceBindingProvider = new Axis2ReferenceBindingProvider(component,
-                                                                         reference,
-                                                                         wsBinding,
-                                                                         servletHost,
-                                                                         modelFactories,
-                                                                         policyHandlerClassnames,
-                                                                         dataBindings);
-    }
-
-    public InterfaceContract getBindingInterfaceContract() {
-        return wsBinding.getBindingInterfaceContract();
-    }
-
-    public boolean supportsOneWayInvocation() {
-        return false;
-    }
-
-    public Invoker createInvoker(Operation operation) {
-        return new Axis2SCABindingInvoker(this, axisReferenceBindingProvider.createInvoker(operation));
-    }
-
-    /**
-     * Uses the distributed domain service discovery feature to locate remote
-     * service endpoints
-     * 
-     * @return An EPR for the target service that this reference refers to 
-     */
-    public EndpointReference getServiceEndpoint(){
-      
-        if (serviceEPR == null){
-            String endpointURL = null;
-            
-            if (binding.getURI() != null) {
-                // check if the binding URI is already resolved if it is use is if not 
-                try {
-                    URI uri = new URI(binding.getURI());
-                     if (uri.isAbsolute()) {
-                         endpointURL = binding.getURI();
-                     } 
-                } catch(Exception ex) {
-                    // do nothing
-                } 
-            }
-            
-            serviceEPR = new EndpointReferenceImpl(endpointURL);
-        }
-        
-        return serviceEPR;
-    }
-    
-    
-    /**
-     * Retrieves the URI of the callback service (that this reference has created)
-     * returns null if there is no callback service for the sca binding
-     * 
-     * @return the callback endpoint
-     */
-    public EndpointReference getCallbackEndpoint(){
-        if (callbackEPR == null) {
-            if (reference.getCallbackService() != null) {
-                for (Binding callbackBinding : reference.getCallbackService().getBindings()) {
-                    if (callbackBinding instanceof SCABinding) {
-                        callbackEPR = new EndpointReferenceImpl(reference.getName() + "/" + callbackBinding.getName());
-                        continue;
-                    }
-                }
-            }    
-        }
-        return callbackEPR;
-    }
-    
-    
-    public SCABinding getSCABinding () {
-        return binding;
-    }
-    
-    public RuntimeComponent getComponent () {
-        return component;
-    }
-    
-    public RuntimeComponentReference getComponentReference () {
-        return reference;
-    }    
-
-    public void start() {
-        axisReferenceBindingProvider.start();
-    }
-
-    public void stop() {
-        axisReferenceBindingProvider.stop();
-    }
-
-}
+/*
+ * 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.binding.sca.axis2.impl;
+
+import java.net.URI;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Logger;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.tuscany.sca.assembly.Binding;
+import org.apache.tuscany.sca.assembly.SCABinding;
+import org.apache.tuscany.sca.binding.sca.DistributedSCABinding;
+import org.apache.tuscany.sca.binding.ws.WebServiceBindingFactory;
+import org.apache.tuscany.sca.binding.ws.WebServiceBinding;
+import org.apache.tuscany.sca.binding.ws.axis2.Axis2ReferenceBindingProvider;
+import org.apache.tuscany.sca.binding.ws.wsdlgen.BindingWSDLGenerator;
+import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.core.assembly.EndpointReferenceImpl;
+import org.apache.tuscany.sca.databinding.DataBindingExtensionPoint;
+import org.apache.tuscany.sca.host.http.ServletHost;
+import org.apache.tuscany.sca.host.http.ServletHostExtensionPoint;
+import org.apache.tuscany.sca.interfacedef.InterfaceContract;
+import org.apache.tuscany.sca.interfacedef.Operation;
+import org.apache.tuscany.sca.invocation.Invoker;
+import org.apache.tuscany.sca.policy.util.PolicyHandlerTuple;
+import org.apache.tuscany.sca.provider.ReferenceBindingProvider;
+import org.apache.tuscany.sca.runtime.EndpointReference;
+import org.apache.tuscany.sca.runtime.RuntimeComponent;
+import org.apache.tuscany.sca.runtime.RuntimeComponentReference;
+
+/**
+ * The reference binding provider for the remote sca binding implementation. Relies on the 
+ * binding-ws-axis implementation for sending messages to remote services to this provider
+ * just uses the ws-axis provider. 
+ * 
+ * @version $Rev: 563772 $ $Date: 2007-08-08 07:50:49 +0100 (Wed, 08 Aug 2007) $
+ */
+public class Axis2SCAReferenceBindingProvider implements ReferenceBindingProvider {
+
+    private static final Logger logger = Logger.getLogger(Axis2SCAReferenceBindingProvider.class.getName());
+    
+    private RuntimeComponent component;
+    private RuntimeComponentReference reference;
+    private SCABinding binding;
+    private Axis2ReferenceBindingProvider axisReferenceBindingProvider;
+    private WebServiceBinding wsBinding;
+    
+    private EndpointReference serviceEPR = null;
+    private EndpointReference callbackEPR = null;
+
+    public Axis2SCAReferenceBindingProvider(RuntimeComponent component,
+                                            RuntimeComponentReference reference,
+                                            DistributedSCABinding binding,
+                                            ExtensionPointRegistry extensionPoints,
+                                            Map<ClassLoader, List<PolicyHandlerTuple>> policyHandlerClassnames) {
+
+        ServletHostExtensionPoint servletHosts = extensionPoints.getExtensionPoint(ServletHostExtensionPoint.class);
+        ServletHost servletHost = servletHosts.getServletHosts().get(0);
+        ModelFactoryExtensionPoint modelFactories = extensionPoints.getExtensionPoint(ModelFactoryExtensionPoint.class);
+        DataBindingExtensionPoint dataBindings = extensionPoints.getExtensionPoint(DataBindingExtensionPoint.class);
+
+        this.component = component;
+        this.reference = reference;
+        this.binding = binding.getSCABinding();
+        wsBinding = modelFactories.getFactory(WebServiceBindingFactory.class).createWebServiceBinding();
+        wsBinding.setName(this.binding.getName());         
+       
+        // Turn the java interface contract into a WSDL interface contract
+        BindingWSDLGenerator.generateWSDL(component, reference, wsBinding, extensionPoints, null);
+        
+        // Set to use the Axiom data binding
+        InterfaceContract contract = wsBinding.getBindingInterfaceContract();
+        contract.getInterface().resetDataBinding(OMElement.class.getName());
+        
+        axisReferenceBindingProvider = new Axis2ReferenceBindingProvider(component,
+                                                                         reference,
+                                                                         wsBinding,
+                                                                         servletHost,
+                                                                         modelFactories,
+                                                                         policyHandlerClassnames,
+                                                                         dataBindings);
+    }
+
+    public InterfaceContract getBindingInterfaceContract() {
+        return wsBinding.getBindingInterfaceContract();
+    }
+
+    public boolean supportsOneWayInvocation() {
+        return false;
+    }
+
+    public Invoker createInvoker(Operation operation) {
+        return new Axis2SCABindingInvoker(this, axisReferenceBindingProvider.createInvoker(operation));
+    }
+
+    /**
+     * Uses the distributed domain service discovery feature to locate remote
+     * service endpoints
+     * 
+     * @return An EPR for the target service that this reference refers to 
+     */
+    public EndpointReference getServiceEndpoint(){
+      
+        if (serviceEPR == null){
+            String endpointURL = null;
+            
+            if (binding.getURI() != null) {
+                // check if the binding URI is already resolved if it is use is if not 
+                try {
+                    URI uri = new URI(binding.getURI());
+                     if (uri.isAbsolute()) {
+                         endpointURL = binding.getURI();
+                     } 
+                } catch(Exception ex) {
+                    // do nothing
+                } 
+            }
+            
+            serviceEPR = new EndpointReferenceImpl(endpointURL);
+        }
+        
+        return serviceEPR;
+    }
+    
+    
+    /**
+     * Retrieves the URI of the callback service (that this reference has created)
+     * returns null if there is no callback service for the sca binding
+     * 
+     * @return the callback endpoint
+     */
+    public EndpointReference getCallbackEndpoint(){
+        if (callbackEPR == null) {
+            if (reference.getCallbackService() != null) {
+                for (Binding callbackBinding : reference.getCallbackService().getBindings()) {
+                    if (callbackBinding instanceof SCABinding) {
+                        callbackEPR = new EndpointReferenceImpl(reference.getName() + "/" + callbackBinding.getName());
+                        continue;
+                    }
+                }
+            }    
+        }
+        return callbackEPR;
+    }
+    
+    
+    public SCABinding getSCABinding () {
+        return binding;
+    }
+    
+    public RuntimeComponent getComponent () {
+        return component;
+    }
+    
+    public RuntimeComponentReference getComponentReference () {
+        return reference;
+    }    
+
+    public void start() {
+        axisReferenceBindingProvider.start();
+    }
+
+    public void stop() {
+        axisReferenceBindingProvider.stop();
+    }
+
+}

Modified: tuscany/branches/sca-java-1.3/modules/binding-sca-axis2/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCAServiceBindingProvider.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/modules/binding-sca-axis2/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCAServiceBindingProvider.java?rev=672803&r1=672802&r2=672803&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.3/modules/binding-sca-axis2/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCAServiceBindingProvider.java (original)
+++ tuscany/branches/sca-java-1.3/modules/binding-sca-axis2/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCAServiceBindingProvider.java Mon Jun 30 09:02:54 2008
@@ -1,136 +1,123 @@
-/*
- * 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.binding.sca.axis2.impl;
-
-import java.util.List;
-import java.util.Map;
-import java.util.logging.Logger;
-
-import org.apache.axiom.om.OMElement;
-import org.apache.tuscany.sca.assembly.SCABinding;
-import org.apache.tuscany.sca.binding.sca.DistributedSCABinding;
-import org.apache.tuscany.sca.binding.ws.WebServiceBindingFactory;
-import org.apache.tuscany.sca.binding.ws.WebServiceBinding;
-import org.apache.tuscany.sca.binding.ws.axis2.Axis2ServiceProvider;
-import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
-import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
-import org.apache.tuscany.sca.contribution.resolver.ResolverExtension;
-import org.apache.tuscany.sca.databinding.DataBindingExtensionPoint;
-import org.apache.tuscany.sca.host.http.ServletHost;
-import org.apache.tuscany.sca.interfacedef.InterfaceContract;
-import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceContract;
-import org.apache.tuscany.sca.interfacedef.wsdl.WSDLFactory;
-import org.apache.tuscany.sca.interfacedef.wsdl.java2wsdl.Java2WSDLHelper;
-import org.apache.tuscany.sca.invocation.MessageFactory;
-import org.apache.tuscany.sca.policy.util.PolicyHandlerTuple;
-import org.apache.tuscany.sca.provider.ServiceBindingProvider;
-import org.apache.tuscany.sca.runtime.RuntimeComponent;
-import org.apache.tuscany.sca.runtime.RuntimeComponentService;
-import org.apache.tuscany.sca.xsd.XSDFactory;
-
-/**
- * The service binding provider for the remote sca binding implementation. Relies on the 
- * binding-ws-axis implementation for providing a remote message endpoint for this service
- * 
- * @version $Rev: 563772 $ $Date: 2007-08-08 07:50:49 +0100 (Wed, 08 Aug 2007) $
- */
-public class Axis2SCAServiceBindingProvider implements ServiceBindingProvider {
-    
-    private static final Logger logger = Logger.getLogger(Axis2SCAServiceBindingProvider.class.getName());
-
-    private SCABinding binding;
-    private Axis2ServiceProvider axisProvider;
-    private WebServiceBinding wsBinding;
-    
-    private boolean started = false;
-
-
-    public Axis2SCAServiceBindingProvider(RuntimeComponent component,
-                                          RuntimeComponentService service,
-                                          DistributedSCABinding binding,
-                                          ServletHost servletHost,
-                                          ModelFactoryExtensionPoint modelFactories,
-                                          Map<ClassLoader, List<PolicyHandlerTuple>> policyHandlerClassnames,
-                                          DataBindingExtensionPoint dataBindings) {
-
-        MessageFactory messageFactory = modelFactories.getFactory(MessageFactory.class); 
-        WSDLFactory wsdlFactory = modelFactories.getFactory(WSDLFactory.class);
-        XSDFactory xsdFactory = modelFactories.getFactory(XSDFactory.class);
-
-        this.binding = binding.getSCABinding();
-        wsBinding = modelFactories.getFactory(WebServiceBindingFactory.class).createWebServiceBinding();
-        
-        // Turn the java interface contract into a WSDL interface contract
-        InterfaceContract contract = service.getInterfaceContract();
-        if ((contract instanceof JavaInterfaceContract)) {
-            ModelResolver resolver = component instanceof ResolverExtension ?
-                                         ((ResolverExtension)component).getModelResolver() : null;
-            contract = Java2WSDLHelper.createWSDLInterfaceContract(
-                           (JavaInterfaceContract)contract, resolver, dataBindings, wsdlFactory, xsdFactory);
-        }
-        
-        // Set to use the Axiom data binding
-        contract.getInterface().resetDataBinding(OMElement.class.getName());
-        
-        wsBinding.setBindingInterfaceContract(contract);
-        wsBinding.setName(this.binding.getName()); 
-        wsBinding.setURI(this.binding.getURI());
-        
-        axisProvider = new Axis2SCAServiceProvider(component, 
-                                                   service, 
-                                                   this.binding,
-                                                   wsBinding,
-                                                   servletHost,
-                                                   messageFactory,
-                                                   policyHandlerClassnames);
-        
-        this.binding.setURI(wsBinding.getURI());      
-
-    }
-
-    public InterfaceContract getBindingInterfaceContract() {
-        return wsBinding.getBindingInterfaceContract();
-    }
-
-    public boolean supportsOneWayInvocation() {
-        return false;
-    }
-
-    public void start() {
-        if (started) {
-            return;
-        } else {
-            started = true;
-        }
-        
-        axisProvider.start();
-    }
-
-    public void stop() {
-        if (!started) {
-            return;
-        } else {
-            started = false;
-        }
-        
-        axisProvider.stop();
-    }
-
-}
+/*
+ * 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.binding.sca.axis2.impl;
+
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Logger;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.tuscany.sca.assembly.SCABinding;
+import org.apache.tuscany.sca.binding.sca.DistributedSCABinding;
+import org.apache.tuscany.sca.binding.ws.WebServiceBindingFactory;
+import org.apache.tuscany.sca.binding.ws.WebServiceBinding;
+import org.apache.tuscany.sca.binding.ws.axis2.Axis2ServiceProvider;
+import org.apache.tuscany.sca.binding.ws.wsdlgen.BindingWSDLGenerator;
+import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.databinding.DataBindingExtensionPoint;
+import org.apache.tuscany.sca.host.http.ServletHost;
+import org.apache.tuscany.sca.host.http.ServletHostExtensionPoint;
+import org.apache.tuscany.sca.interfacedef.InterfaceContract;
+import org.apache.tuscany.sca.invocation.MessageFactory;
+import org.apache.tuscany.sca.policy.util.PolicyHandlerTuple;
+import org.apache.tuscany.sca.provider.ServiceBindingProvider;
+import org.apache.tuscany.sca.runtime.RuntimeComponent;
+import org.apache.tuscany.sca.runtime.RuntimeComponentService;
+
+/**
+ * The service binding provider for the remote sca binding implementation. Relies on the 
+ * binding-ws-axis implementation for providing a remote message endpoint for this service
+ * 
+ * @version $Rev: 563772 $ $Date: 2007-08-08 07:50:49 +0100 (Wed, 08 Aug 2007) $
+ */
+public class Axis2SCAServiceBindingProvider implements ServiceBindingProvider {
+    
+    private static final Logger logger = Logger.getLogger(Axis2SCAServiceBindingProvider.class.getName());
+
+    private SCABinding binding;
+    private Axis2ServiceProvider axisProvider;
+    private WebServiceBinding wsBinding;
+    
+    private boolean started = false;
+
+
+    public Axis2SCAServiceBindingProvider(RuntimeComponent component,
+                                          RuntimeComponentService service,
+                                          DistributedSCABinding binding,
+                                          ExtensionPointRegistry extensionPoints,
+                                          Map<ClassLoader, List<PolicyHandlerTuple>> policyHandlerClassnames) {
+
+        ServletHostExtensionPoint servletHosts = extensionPoints.getExtensionPoint(ServletHostExtensionPoint.class);
+        ServletHost servletHost = servletHosts.getServletHosts().get(0);
+        ModelFactoryExtensionPoint modelFactories = extensionPoints.getExtensionPoint(ModelFactoryExtensionPoint.class);
+        MessageFactory messageFactory = modelFactories.getFactory(MessageFactory.class); 
+        DataBindingExtensionPoint dataBindings = extensionPoints.getExtensionPoint(DataBindingExtensionPoint.class);
+
+        this.binding = binding.getSCABinding();
+        wsBinding = modelFactories.getFactory(WebServiceBindingFactory.class).createWebServiceBinding();
+        wsBinding.setName(this.binding.getName());         
+        wsBinding.setURI(this.binding.getURI());
+       
+        // Turn the java interface contract into a WSDL interface contract
+        BindingWSDLGenerator.generateWSDL(component, service, wsBinding, extensionPoints, null);
+
+        // Set to use the Axiom data binding
+        InterfaceContract contract = wsBinding.getBindingInterfaceContract();
+        contract.getInterface().resetDataBinding(OMElement.class.getName());
+        
+        axisProvider = new Axis2SCAServiceProvider(component, 
+                                                   service, 
+                                                   this.binding,
+                                                   wsBinding,
+                                                   servletHost,
+                                                   messageFactory,
+                                                   policyHandlerClassnames);
+    }
+
+    public InterfaceContract getBindingInterfaceContract() {
+        return wsBinding.getBindingInterfaceContract();
+    }
+
+    public boolean supportsOneWayInvocation() {
+        return false;
+    }
+
+    public void start() {
+        if (started) {
+            return;
+        } else {
+            started = true;
+        }
+        
+        axisProvider.start();
+    }
+
+    public void stop() {
+        if (!started) {
+            return;
+        } else {
+            started = false;
+        }
+        
+        axisProvider.stop();
+    }
+
+}

Modified: tuscany/branches/sca-java-1.3/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ReferenceBindingProvider.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ReferenceBindingProvider.java?rev=672803&r1=672802&r2=672803&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.3/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ReferenceBindingProvider.java (original)
+++ tuscany/branches/sca-java-1.3/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ReferenceBindingProvider.java Mon Jun 30 09:02:54 2008
@@ -24,22 +24,17 @@
 import org.apache.axiom.om.OMElement;
 import org.apache.tuscany.sca.binding.ws.WebServiceBinding;
 import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
-import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
-import org.apache.tuscany.sca.contribution.resolver.ResolverExtension;
 import org.apache.tuscany.sca.host.http.ServletHost;
 import org.apache.tuscany.sca.databinding.DataBindingExtensionPoint;
 import org.apache.tuscany.sca.interfacedef.InterfaceContract;
 import org.apache.tuscany.sca.interfacedef.Operation;
-import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceContract;
-import org.apache.tuscany.sca.interfacedef.wsdl.WSDLFactory;
-import org.apache.tuscany.sca.interfacedef.wsdl.java2wsdl.Java2WSDLHelper;
 import org.apache.tuscany.sca.invocation.Invoker;
 import org.apache.tuscany.sca.invocation.MessageFactory;
 import org.apache.tuscany.sca.policy.util.PolicyHandlerTuple;
 import org.apache.tuscany.sca.provider.ReferenceBindingProvider;
 import org.apache.tuscany.sca.runtime.RuntimeComponent;
 import org.apache.tuscany.sca.runtime.RuntimeComponentReference;
-import org.apache.tuscany.sca.xsd.XSDFactory;
+import org.osoa.sca.ServiceRuntimeException;
 
 public class Axis2ReferenceBindingProvider implements ReferenceBindingProvider {
 
@@ -55,50 +50,15 @@
                                          DataBindingExtensionPoint dataBindings) {
 
         MessageFactory messageFactory = modelFactories.getFactory(MessageFactory.class); 
-        WSDLFactory wsdlFactory = modelFactories.getFactory(WSDLFactory.class);
-        XSDFactory xsdFactory = modelFactories.getFactory(XSDFactory.class);
         this.wsBinding = wsBinding;
 
-        InterfaceContract contract = wsBinding.getBindingInterfaceContract();
-        if (contract == null) {
-            contract = reference.getInterfaceContract().makeUnidirectional(false);
-            if (contract instanceof JavaInterfaceContract) {
-                ModelResolver resolver = component instanceof ResolverExtension ?
-                                             ((ResolverExtension)component).getModelResolver() : null;
-                contract = Java2WSDLHelper.createWSDLInterfaceContract(
-                                   (JavaInterfaceContract)contract,
-                                   Axis2ServiceBindingProvider.requiresSOAP12(wsBinding),
-                                   resolver,
-                                   dataBindings,
-                                   wsdlFactory,
-                                   xsdFactory);
-            }
-            wsBinding.setBindingInterfaceContract(contract);
-        }
-        
-        // TODO - fix up the conversational flag and operation sequences in case the contract has come from WSDL
-        // as we don't yet support requires="conversational" or sca:endConversation annotations
-        // in WSDL interface descriptions (see section 1.5.4 of the Assembly Specification V1.0)
-        if ( reference.getInterfaceContract().getInterface() != null && contract.getInterface() != null) {
-            contract.getInterface().setConversational(reference.getInterfaceContract().getInterface().isConversational());
-    
-            for (Operation operation : contract.getInterface().getOperations()){
-                Operation referenceOperation = null;
-                
-                for (Operation tmpOp : reference.getInterfaceContract().getInterface().getOperations()){
-                    if ( operation.getName().equals(tmpOp.getName())) {
-                        referenceOperation = tmpOp;
-                        break;
-                    }
-                }
-                
-                if (referenceOperation != null ){
-                    operation.setConversationSequence(referenceOperation.getConversationSequence());
-                }
-            }        
+        // A WSDL document should always be present in the binding
+        if (wsBinding.getWSDLDocument() == null) {
+            throw new ServiceRuntimeException("No WSDL document for " + component.getName() + "/" + reference.getName());
         }
 
         // Set to use the Axiom data binding
+        InterfaceContract contract = wsBinding.getBindingInterfaceContract();
         if (contract.getInterface() != null) {
             contract.getInterface().resetDataBinding(OMElement.class.getName());
         }

Modified: tuscany/branches/sca-java-1.3/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceBindingProvider.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceBindingProvider.java?rev=672803&r1=672802&r2=672803&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.3/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceBindingProvider.java (original)
+++ tuscany/branches/sca-java-1.3/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceBindingProvider.java Mon Jun 30 09:02:54 2008
@@ -26,23 +26,15 @@
 import org.apache.axiom.om.OMElement;
 import org.apache.tuscany.sca.binding.ws.WebServiceBinding;
 import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
-import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
-import org.apache.tuscany.sca.contribution.resolver.ResolverExtension;
 import org.apache.tuscany.sca.host.http.ServletHost;
 import org.apache.tuscany.sca.databinding.DataBindingExtensionPoint;
 import org.apache.tuscany.sca.interfacedef.InterfaceContract;
-import org.apache.tuscany.sca.interfacedef.Operation;
-import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceContract;
-import org.apache.tuscany.sca.interfacedef.wsdl.WSDLFactory;
-import org.apache.tuscany.sca.interfacedef.wsdl.java2wsdl.Java2WSDLHelper;
 import org.apache.tuscany.sca.invocation.MessageFactory;
-import org.apache.tuscany.sca.policy.Intent;
-import org.apache.tuscany.sca.policy.IntentAttachPoint;
 import org.apache.tuscany.sca.policy.util.PolicyHandlerTuple;
 import org.apache.tuscany.sca.provider.ServiceBindingProvider;
 import org.apache.tuscany.sca.runtime.RuntimeComponent;
 import org.apache.tuscany.sca.runtime.RuntimeComponentService;
-import org.apache.tuscany.sca.xsd.XSDFactory;
+import org.osoa.sca.ServiceRuntimeException;
 
 public class Axis2ServiceBindingProvider implements ServiceBindingProvider {
 
@@ -58,58 +50,15 @@
                                        DataBindingExtensionPoint dataBindings) {
 
         MessageFactory messageFactory = modelFactories.getFactory(MessageFactory.class); 
-        WSDLFactory wsdlFactory = modelFactories.getFactory(WSDLFactory.class);
-        XSDFactory xsdFactory = modelFactories.getFactory(XSDFactory.class);
         this.wsBinding = wsBinding;
 
-        InterfaceContract contract = wsBinding.getBindingInterfaceContract();
-        if (contract == null) {
-            contract = service.getInterfaceContract().makeUnidirectional(false);
-            if (contract instanceof JavaInterfaceContract) {
-                ModelResolver resolver = component instanceof ResolverExtension ?
-                                             ((ResolverExtension)component).getModelResolver() : null;
-                contract = Java2WSDLHelper.createWSDLInterfaceContract(
-                                   (JavaInterfaceContract)contract,
-                                   requiresSOAP12(wsBinding),
-                                   resolver,
-                                   dataBindings,
-                                   wsdlFactory,
-                                   xsdFactory);
-            } else {
-                try {
-                    //TUSCANY-2316 Cloning the Interface Contract to avoid overriding data biding information 
-                    contract = (InterfaceContract) contract.clone();
-                } catch (Exception e) {
-                    //ignore
-                }
-            }
-            wsBinding.setBindingInterfaceContract(contract);
-        }
-        
-        // TODO - fix up the conversational flag and operation sequences in case the contract has come from WSDL
-        // as we don't yet support requires="conversational" or sca:endConversation annotations
-        // in WSDL interface descriptions (see section 1.5.4 of the Assembly Specification V1.0)
-        if (service.getInterfaceContract().getInterface() != null ) {
-            contract.getInterface().setConversational(service.getInterfaceContract().getInterface().isConversational());
-            
-            for (Operation operation : contract.getInterface().getOperations()){
-                Operation serviceOperation = null;
-                
-                for (Operation tmpOp : service.getInterfaceContract().getInterface().getOperations()){
-                    if ( operation.getName().equals(tmpOp.getName())) {
-                        serviceOperation = tmpOp;
-                        break;
-                    }
-                }
-                
-                if (serviceOperation != null ){
-                    operation.setConversationSequence(serviceOperation.getConversationSequence());
-                }
-            }
+        // A WSDL document should always be present in the binding
+        if (wsBinding.getWSDLDocument() == null) {
+            throw new ServiceRuntimeException("No WSDL document for " + component.getName() + "/" + service.getName());
         }
-
         
         // Set to use the Axiom data binding
+        InterfaceContract contract = wsBinding.getBindingInterfaceContract();
         contract.getInterface().resetDataBinding(OMElement.class.getName());
 
         axisProvider = new Axis2ServiceProvider(component, service, wsBinding, servletHost, messageFactory, policyHandlerClassnames);
@@ -131,17 +80,4 @@
         return true;
     }
 
-    private static final QName SOAP12_INTENT = new QName("http://www.osoa.org/xmlns/sca/1.0", "soap.1_2");
-
-    protected static boolean requiresSOAP12(WebServiceBinding wsBinding) {
-        if (wsBinding instanceof IntentAttachPoint) {
-            List<Intent> intents = ((IntentAttachPoint)wsBinding).getRequiredIntents();
-            for (Intent intent : intents) {
-                if (SOAP12_INTENT.equals(intent.getName())) {
-                    return true;
-                }
-            }
-        }
-        return false;
-    }
 }

Modified: tuscany/branches/sca-java-1.3/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceClient.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceClient.java?rev=672803&r1=672802&r2=672803&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.3/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceClient.java (original)
+++ tuscany/branches/sca-java-1.3/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceClient.java Mon Jun 30 09:02:54 2008
@@ -116,16 +116,6 @@
         this.contract = contract;
         this.wsBinding = wsBinding;
         this.policyHandlerClassnames = policyHandlerClassnames;
-        Definition definition = wsBinding.getWSDLDocument();
-        if (definition != null) {
-            // Can happen if a self-reference.  Reuse the service's WSDL configuration.
-            // In theory this is just a useful optimization but in practice I found
-            // it was needed to make the JUnit test for the helloworld-ws-service-jms
-            // sample run.
-        } else {
-            definition = Axis2WSDLHelper.configureWSDLDefinition(wsBinding, component, contract, servletHost);
-            wsBinding.setWSDLDocument(definition);
-        }
     }
 
     protected void start() {

Modified: tuscany/branches/sca-java-1.3/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java?rev=672803&r1=672802&r2=672803&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.3/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java (original)
+++ tuscany/branches/sca-java-1.3/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java Mon Jun 30 09:02:54 2008
@@ -141,6 +141,8 @@
     public static final QName QNAME_WSA_REFERENCE_PARAMETERS =
         new QName(AddressingConstants.Final.WSA_NAMESPACE, AddressingConstants.EPR_REFERENCE_PARAMETERS);
 
+    private static final QName TRANSPORT_JMS_QUALIFIED_INTENT =
+        new QName("http://www.osoa.org/xmlns/sca/1.0", "transport.jms");
     private static final String DEFAULT_QUEUE_CONNECTION_FACTORY = "TuscanyQueueConnectionFactory";
 
     //Schema element names
@@ -194,39 +196,66 @@
 
         configContext.setContextRoot(servletHost.getContextPath());
 
-        /*
-        // Look at all the Web Service bindings of the SCA service to see if any
-        // of them have an existing generated WSDL definitions document.  If found,
-        // use it for this binding as well.  If not found, generate a new document.
-        Definition definition = null;
-        for (Binding binding : contract.getBindings()) {
-            if (binding instanceof WebServiceBinding) {
-                definition = ((WebServiceBinding)binding).getWSDLDocument();
-                if (definition != null) {
-                    wsBinding.setWSDLDocument(definition);
-                    break;
-                }
-            }
+        // Update port addresses with runtime information, and create a
+        // map from endpoint URIs to WSDL ports that eliminates duplicate
+        // ports for the same endpoint.
+        for (Object port : wsBinding.getService().getPorts().values()) {
+            String portAddress = getPortAddress((Port)port);
+            String endpointURI = computeEndpointURI(portAddress, servletHost);
+            setPortAddress((Port)port, endpointURI);
+            urlMap.put(endpointURI, (Port)port);
         }
-        */
-        // The above code is disabled temporarily.  Instead, we only look
-        // for a WSDL definitions document in this binding and don't
-        // attempt to share the same document across multiple bindings.
-        Definition definition = wsBinding.getWSDLDocument();
+    }
 
-        // generate a WSDL definitions document if needed
-        if (definition == null) {
-            definition = Axis2WSDLHelper.configureWSDLDefinition(wsBinding, component, contract, servletHost);
-            wsBinding.setWSDLDocument(definition);
+    private String computeEndpointURI(String uri, ServletHost servletHost) {
+
+        if (uri == null) {
+            return null;
         }
 
-        // The generated WSDL document maps ports to endpoint URLs.  Create a
-        // reverse map that eliminates duplicate ports for the same endpoint.
-        for (Object port : wsBinding.getService().getPorts().values()) {
-            urlMap.put(getPortAddress((Port)port), (Port)port);
+        // pull out the binding intents to see what sort of transport is required
+        PolicySet transportJmsPolicySet = AxisPolicyHelper.getPolicySet(wsBinding, TRANSPORT_JMS_QUALIFIED_INTENT);
+        if (transportJmsPolicySet != null){
+            if (!uri.startsWith("jms:/")) {
+                uri = "jms:" + uri;
+            }
+            
+            // construct the rest of the URI based on the policy. All the details are put
+            // into the URI here rather than being place directly into the Axis configuration 
+            // as the Axis JMS sender relies on parsing the target URI      
+            Axis2ConfigParamPolicy axis2ConfigParamPolicy = null;
+            for ( Object policy : transportJmsPolicySet.getPolicies() ) {
+                if ( policy instanceof Axis2ConfigParamPolicy ) {
+                    axis2ConfigParamPolicy = (Axis2ConfigParamPolicy)policy;
+                    Iterator paramIterator = axis2ConfigParamPolicy.getParamElements().get(DEFAULT_QUEUE_CONNECTION_FACTORY).getChildElements();
+                    
+                    if (paramIterator.hasNext()){
+                        StringBuffer uriParams = new StringBuffer("?");
+                       
+                        while (paramIterator.hasNext()){
+                            OMElement parameter = (OMElement)paramIterator.next();
+                            uriParams.append(parameter.getAttributeValue(new QName("","name")));
+                            uriParams.append("=");
+                            uriParams.append(parameter.getText());
+                            
+                            if (paramIterator.hasNext()){
+                                uriParams.append("&");
+                            }
+                        }
+                        
+                        uri = uri + uriParams;
+                    }
+                }
+            }                     
+        } else {
+            if (!uri.startsWith("jms:")) {
+                uri = servletHost.getURLMapping(uri).toString();
+            }
         }
+
+        return uri;
     }
-    
+
     public void start() {
 
         try {