diff options
Diffstat (limited to 'java/sca/modules/binding-sca-axis2-runtime/src/main')
4 files changed, 56 insertions, 118 deletions
diff --git a/java/sca/modules/binding-sca-axis2-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCABindingProviderFactory.java b/java/sca/modules/binding-sca-axis2-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCABindingProviderFactory.java index 45331114a5..4e3f6d82e7 100644 --- a/java/sca/modules/binding-sca-axis2-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCABindingProviderFactory.java +++ b/java/sca/modules/binding-sca-axis2-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCABindingProviderFactory.java @@ -20,6 +20,8 @@ package org.apache.tuscany.sca.binding.sca.axis2.impl; import org.apache.tuscany.sca.assembly.DistributedSCABinding; +import org.apache.tuscany.sca.assembly.Endpoint; +import org.apache.tuscany.sca.assembly.EndpointReference; import org.apache.tuscany.sca.core.ExtensionPointRegistry; import org.apache.tuscany.sca.provider.BindingProviderFactory; import org.apache.tuscany.sca.provider.ReferenceBindingProvider; @@ -41,18 +43,12 @@ public class Axis2SCABindingProviderFactory implements BindingProviderFactory<Di this.extensionPoints = extensionPoints; } - public ReferenceBindingProvider createReferenceBindingProvider(RuntimeComponent component, - RuntimeComponentReference reference, - DistributedSCABinding binding) { - return new Axis2SCAReferenceBindingProvider(component, reference, binding, - extensionPoints); + public ReferenceBindingProvider createReferenceBindingProvider(EndpointReference endpointReference) { + return new Axis2SCAReferenceBindingProvider(endpointReference, extensionPoints); } - public ServiceBindingProvider createServiceBindingProvider(RuntimeComponent component, - RuntimeComponentService service, - DistributedSCABinding binding) { - return new Axis2SCAServiceBindingProvider(component, service, binding, - extensionPoints); + public ServiceBindingProvider createServiceBindingProvider(Endpoint endpoint) { + return new Axis2SCAServiceBindingProvider(endpoint, extensionPoints); } public Class<DistributedSCABinding> getModelType() { diff --git a/java/sca/modules/binding-sca-axis2-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCAReferenceBindingProvider.java b/java/sca/modules/binding-sca-axis2-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCAReferenceBindingProvider.java index ef92540e9c..77ec50b097 100644 --- a/java/sca/modules/binding-sca-axis2-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCAReferenceBindingProvider.java +++ b/java/sca/modules/binding-sca-axis2-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCAReferenceBindingProvider.java @@ -23,10 +23,10 @@ import java.util.logging.Logger; import org.apache.axiom.om.OMElement; import org.apache.tuscany.sca.assembly.DistributedSCABinding; +import org.apache.tuscany.sca.assembly.EndpointReference; import org.apache.tuscany.sca.assembly.SCABinding; import org.apache.tuscany.sca.binding.ws.WebServiceBinding; import org.apache.tuscany.sca.binding.ws.WebServiceBindingFactory; -import org.apache.tuscany.sca.binding.ws.axis2.Axis2ReferenceBindingProvider; import org.apache.tuscany.sca.binding.ws.wsdlgen.BindingWSDLGenerator; import org.apache.tuscany.sca.core.ExtensionPointRegistry; import org.apache.tuscany.sca.core.FactoryExtensionPoint; @@ -34,6 +34,8 @@ 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.invocation.Invoker; +import org.apache.tuscany.sca.provider.BindingProviderFactory; +import org.apache.tuscany.sca.provider.ProviderFactoryExtensionPoint; import org.apache.tuscany.sca.provider.ReferenceBindingProvider; import org.apache.tuscany.sca.runtime.RuntimeComponent; import org.apache.tuscany.sca.runtime.RuntimeComponentReference; @@ -50,20 +52,19 @@ public class Axis2SCAReferenceBindingProvider implements ReferenceBindingProvide private RuntimeComponent component; private RuntimeComponentReference reference; private SCABinding binding; - private Axis2ReferenceBindingProvider axisReferenceBindingProvider; + + private ReferenceBindingProvider axisReferenceBindingProvider; private WebServiceBinding wsBinding; - public Axis2SCAReferenceBindingProvider(RuntimeComponent component, - RuntimeComponentReference reference, - DistributedSCABinding binding, + public Axis2SCAReferenceBindingProvider(EndpointReference endpointReference, ExtensionPointRegistry extensionPoints) { FactoryExtensionPoint modelFactories = extensionPoints.getExtensionPoint(FactoryExtensionPoint.class); DataBindingExtensionPoint dataBindings = extensionPoints.getExtensionPoint(DataBindingExtensionPoint.class); - this.component = component; - this.reference = reference; - this.binding = binding.getSCABinding(); + this.component = (RuntimeComponent)endpointReference.getComponent(); + this.reference = (RuntimeComponentReference)endpointReference.getReference(); + this.binding = ((DistributedSCABinding)endpointReference.getBinding()).getSCABinding(); // build a ws binding model wsBinding = modelFactories.getFactory(WebServiceBindingFactory.class).createWebServiceBinding(); @@ -76,12 +77,21 @@ public class Axis2SCAReferenceBindingProvider implements ReferenceBindingProvide InterfaceContract contract = wsBinding.getBindingInterfaceContract(); contract.getInterface().resetDataBinding(OMElement.class.getName()); + // create a copy of the endpoint reference but with the web service binding in + EndpointReference epr = null; + try { + epr = (EndpointReference)endpointReference.clone(); + } catch (Exception ex){ + // we know we can clone endpoint references + } + epr.setBinding(wsBinding); + // create the real Axis2 reference binding provider - axisReferenceBindingProvider = new Axis2ReferenceBindingProvider(component, - reference, - wsBinding, - modelFactories, - dataBindings); + ProviderFactoryExtensionPoint providerFactories = + extensionPoints.getExtensionPoint(ProviderFactoryExtensionPoint.class); + BindingProviderFactory providerFactory = + (BindingProviderFactory) providerFactories.getProviderFactory(WebServiceBinding.class); + axisReferenceBindingProvider = providerFactory.createReferenceBindingProvider(epr); } public InterfaceContract getBindingInterfaceContract() { diff --git a/java/sca/modules/binding-sca-axis2-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCAServiceBindingProvider.java b/java/sca/modules/binding-sca-axis2-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCAServiceBindingProvider.java index 10387c62cc..27f669b889 100644 --- a/java/sca/modules/binding-sca-axis2-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCAServiceBindingProvider.java +++ b/java/sca/modules/binding-sca-axis2-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCAServiceBindingProvider.java @@ -23,10 +23,11 @@ import java.util.logging.Logger; import org.apache.axiom.om.OMElement; import org.apache.tuscany.sca.assembly.DistributedSCABinding; +import org.apache.tuscany.sca.assembly.Endpoint; +import org.apache.tuscany.sca.assembly.EndpointReference; import org.apache.tuscany.sca.assembly.SCABinding; import org.apache.tuscany.sca.binding.ws.WebServiceBinding; import org.apache.tuscany.sca.binding.ws.WebServiceBindingFactory; -import org.apache.tuscany.sca.binding.ws.axis2.Axis2ServiceProvider; import org.apache.tuscany.sca.binding.ws.wsdlgen.BindingWSDLGenerator; import org.apache.tuscany.sca.core.ExtensionPointRegistry; import org.apache.tuscany.sca.core.FactoryExtensionPoint; @@ -34,6 +35,8 @@ 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.provider.BindingProviderFactory; +import org.apache.tuscany.sca.provider.ProviderFactoryExtensionPoint; import org.apache.tuscany.sca.provider.ServiceBindingProvider; import org.apache.tuscany.sca.runtime.RuntimeComponent; import org.apache.tuscany.sca.runtime.RuntimeComponentService; @@ -48,16 +51,17 @@ public class Axis2SCAServiceBindingProvider implements ServiceBindingProvider { private static final Logger logger = Logger.getLogger(Axis2SCAServiceBindingProvider.class.getName()); + private RuntimeComponent component; + private RuntimeComponentService service; private SCABinding binding; - private Axis2ServiceProvider axisProvider; + + private ServiceBindingProvider axisProvider; private WebServiceBinding wsBinding; private boolean started = false; - public Axis2SCAServiceBindingProvider(RuntimeComponent component, - RuntimeComponentService service, - DistributedSCABinding binding, + public Axis2SCAServiceBindingProvider(Endpoint endpoint, ExtensionPointRegistry extensionPoints) { ServletHostExtensionPoint servletHosts = extensionPoints.getExtensionPoint(ServletHostExtensionPoint.class); @@ -65,7 +69,9 @@ public class Axis2SCAServiceBindingProvider implements ServiceBindingProvider { FactoryExtensionPoint modelFactories = extensionPoints.getExtensionPoint(FactoryExtensionPoint.class); MessageFactory messageFactory = modelFactories.getFactory(MessageFactory.class); - this.binding = binding.getSCABinding(); + this.component = (RuntimeComponent)endpoint.getComponent(); + this.service = (RuntimeComponentService)endpoint.getService(); + this.binding = ((DistributedSCABinding)endpoint.getBinding()).getSCABinding(); // create a ws binding model wsBinding = modelFactories.getFactory(WebServiceBindingFactory.class).createWebServiceBinding(); @@ -79,14 +85,22 @@ public class Axis2SCAServiceBindingProvider implements ServiceBindingProvider { InterfaceContract contract = wsBinding.getBindingInterfaceContract(); contract.getInterface().resetDataBinding(OMElement.class.getName()); + // create a copy of the endpoint but with the web service binding in + Endpoint ep = null; + try { + ep = (Endpoint)endpoint.clone(); + } catch (Exception ex){ + // we know we can clone endpoint references + } + ep.setBinding(wsBinding); + // create the real Axis2 service provider - axisProvider = new Axis2SCAServiceProvider(component, - service, - this.binding, - wsBinding, - servletHost, - messageFactory, - modelFactories); + ProviderFactoryExtensionPoint providerFactories = + extensionPoints.getExtensionPoint(ProviderFactoryExtensionPoint.class); + BindingProviderFactory providerFactory = + (BindingProviderFactory) providerFactories.getProviderFactory(WebServiceBinding.class); + axisProvider = providerFactory.createServiceBindingProvider(ep); + } public InterfaceContract getBindingInterfaceContract() { diff --git a/java/sca/modules/binding-sca-axis2-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCAServiceProvider.java b/java/sca/modules/binding-sca-axis2-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCAServiceProvider.java deleted file mode 100644 index 51a175a9e6..0000000000 --- a/java/sca/modules/binding-sca-axis2-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCAServiceProvider.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * 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 org.apache.tuscany.sca.assembly.Binding; -import org.apache.tuscany.sca.assembly.SCABinding; -import org.apache.tuscany.sca.binding.ws.WebServiceBinding; -import org.apache.tuscany.sca.binding.ws.axis2.Axis2ServiceProvider; -import org.apache.tuscany.sca.core.FactoryExtensionPoint; -import org.apache.tuscany.sca.host.http.ServletHost; -import org.apache.tuscany.sca.invocation.MessageFactory; -import org.apache.tuscany.sca.runtime.RuntimeComponent; -import org.apache.tuscany.sca.runtime.RuntimeComponentService; - -/** - * A specialization of the Axis2BindingProvider that just switches in the SCABinding model - * element when it is required. The SCABinding is required as the service binding provider - * finds the service wire based on the binding - * - * @version $Rev$ $Date$ - */ -public class Axis2SCAServiceProvider extends Axis2ServiceProvider { - - private SCABinding binding; - - /** - * Switch in the fake ws binding - * - * @param component - * @param service - * @param binding - * @param wsBinding - * @param servletHost - * @param messageFactory - */ - public Axis2SCAServiceProvider(RuntimeComponent component, - RuntimeComponentService service, - SCABinding binding, - WebServiceBinding wsBinding, - ServletHost servletHost, - MessageFactory messageFactory, - FactoryExtensionPoint modelFactories) { - - super(component, - service, - wsBinding, - servletHost, - messageFactory, - modelFactories); - - this.binding = binding; - } - - /** - * Return the sca binding as wires will be registered against this rather - * than against the wsBinding that the Axis2SCAServiceProvider is - * expecting - * - * @return the binding - */ - @Override - protected Binding getBinding(){ - return binding; - } -} |