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 {