diff options
author | slaws <slaws@13f79535-47bb-0310-9956-ffa450edef68> | 2009-06-19 15:37:36 +0000 |
---|---|---|
committer | slaws <slaws@13f79535-47bb-0310-9956-ffa450edef68> | 2009-06-19 15:37:36 +0000 |
commit | 9b8fd2b5139dce38fdd0f032676881ac885b31ac (patch) | |
tree | 3991e1579db942202433b8e229d5160cee1ba27b /java | |
parent | 7f94dc1acc9bd08d246ddeeb5f4bfd0c5e3f76b1 (diff) |
TUSCANY-3101 pass EndpointReference and Endpoint in to binding providers rather than component/reference or service/binding
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@786552 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java')
14 files changed, 119 insertions, 99 deletions
diff --git a/java/sca/modules/binding-rmi-runtime/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIBindingProviderFactory.java b/java/sca/modules/binding-rmi-runtime/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIBindingProviderFactory.java index 11a03a4768..113577b5ee 100644 --- a/java/sca/modules/binding-rmi-runtime/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIBindingProviderFactory.java +++ b/java/sca/modules/binding-rmi-runtime/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIBindingProviderFactory.java @@ -19,6 +19,8 @@ package org.apache.tuscany.sca.binding.rmi.provider; +import org.apache.tuscany.sca.assembly.Endpoint; +import org.apache.tuscany.sca.assembly.EndpointReference; import org.apache.tuscany.sca.binding.rmi.RMIBinding; import org.apache.tuscany.sca.core.ExtensionPointRegistry; import org.apache.tuscany.sca.host.rmi.ExtensibleRMIHost; @@ -45,17 +47,13 @@ public class RMIBindingProviderFactory implements BindingProviderFactory<RMIBind this.rmiHost = new ExtensibleRMIHost(rmiHosts); } - public ReferenceBindingProvider createReferenceBindingProvider(RuntimeComponent component, - RuntimeComponentReference reference, - RMIBinding binding) { + public ReferenceBindingProvider createReferenceBindingProvider(EndpointReference endpointReference) { - return new RMIReferenceBindingProvider(component, reference, binding, rmiHost); + return new RMIReferenceBindingProvider(endpointReference, rmiHost); } - public ServiceBindingProvider createServiceBindingProvider(RuntimeComponent component, - RuntimeComponentService service, - RMIBinding binding) { - return new RMIServiceBindingProvider(component, service, binding, rmiHost); + public ServiceBindingProvider createServiceBindingProvider(Endpoint endpoint) { + return new RMIServiceBindingProvider(endpoint, rmiHost); } public Class<RMIBinding> getModelType() { diff --git a/java/sca/modules/binding-rmi-runtime/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIReferenceBindingProvider.java b/java/sca/modules/binding-rmi-runtime/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIReferenceBindingProvider.java index 8a368a26c3..7a87beeb6c 100644 --- a/java/sca/modules/binding-rmi-runtime/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIReferenceBindingProvider.java +++ b/java/sca/modules/binding-rmi-runtime/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIReferenceBindingProvider.java @@ -21,6 +21,7 @@ package org.apache.tuscany.sca.binding.rmi.provider; import java.lang.reflect.Method; +import org.apache.tuscany.sca.assembly.EndpointReference; import org.apache.tuscany.sca.binding.rmi.RMIBinding; import org.apache.tuscany.sca.host.rmi.RMIHost; import org.apache.tuscany.sca.interfacedef.InterfaceContract; @@ -43,12 +44,10 @@ public class RMIReferenceBindingProvider implements ReferenceBindingProvider { private RMIBinding binding; private RMIHost rmiHost; - public RMIReferenceBindingProvider(RuntimeComponent component, - RuntimeComponentReference reference, - RMIBinding binding, - RMIHost rmiHost) { - this.reference = reference; - this.binding = binding; + public RMIReferenceBindingProvider(EndpointReference endpointReference, + RMIHost rmiHost) { + this.reference = (RuntimeComponentReference)endpointReference.getReference(); + this.binding = (RMIBinding)endpointReference.getBinding(); this.rmiHost = rmiHost; } diff --git a/java/sca/modules/binding-rmi-runtime/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIServiceBindingProvider.java b/java/sca/modules/binding-rmi-runtime/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIServiceBindingProvider.java index 25d43445ec..506c2385fb 100644 --- a/java/sca/modules/binding-rmi-runtime/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIServiceBindingProvider.java +++ b/java/sca/modules/binding-rmi-runtime/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIServiceBindingProvider.java @@ -32,6 +32,7 @@ import net.sf.cglib.proxy.Enhancer; import net.sf.cglib.proxy.MethodInterceptor; import net.sf.cglib.proxy.MethodProxy; +import org.apache.tuscany.sca.assembly.Endpoint; import org.apache.tuscany.sca.binding.rmi.RMIBinding; import org.apache.tuscany.sca.host.rmi.RMIHost; import org.apache.tuscany.sca.host.rmi.RMIHostException; @@ -60,10 +61,10 @@ public class RMIServiceBindingProvider implements ServiceBindingProvider { private RuntimeWire wire; private Remote rmiProxy; - public RMIServiceBindingProvider(RuntimeComponent rc, RuntimeComponentService rcs, RMIBinding binding, RMIHost rmiHost) { - this.component = rc; - this.service = rcs; - this.binding = binding; + public RMIServiceBindingProvider(Endpoint endpoint, RMIHost rmiHost) { + this.component = (RuntimeComponent)endpoint.getComponent(); + this.service = (RuntimeComponentService)endpoint.getService(); + this.binding = (RMIBinding)endpoint.getBinding(); this.rmiHost = rmiHost; } diff --git a/java/sca/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCABindingProviderFactory.java b/java/sca/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCABindingProviderFactory.java index 5d1b3ca399..110d15a1cf 100644 --- a/java/sca/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCABindingProviderFactory.java +++ b/java/sca/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCABindingProviderFactory.java @@ -19,6 +19,8 @@ package org.apache.tuscany.sca.binding.sca.provider; +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.core.ExtensionPointRegistry; import org.apache.tuscany.sca.provider.BindingProviderFactory; @@ -42,17 +44,13 @@ public class RuntimeSCABindingProviderFactory implements BindingProviderFactory< } - public ReferenceBindingProvider createReferenceBindingProvider(RuntimeComponent component, - RuntimeComponentReference reference, - SCABinding binding) { + public ReferenceBindingProvider createReferenceBindingProvider(EndpointReference endpointReference) { - return new RuntimeSCAReferenceBindingProvider(extensionPoints, component, reference, binding); + return new RuntimeSCAReferenceBindingProvider(extensionPoints, endpointReference); } - public ServiceBindingProvider createServiceBindingProvider(RuntimeComponent component, - RuntimeComponentService service, - SCABinding binding) { - return new RuntimeSCAServiceBindingProvider(extensionPoints, component, service, binding); + public ServiceBindingProvider createServiceBindingProvider(Endpoint endpoint) { + return new RuntimeSCAServiceBindingProvider(extensionPoints, endpoint); } public Class<SCABinding> getModelType() { diff --git a/java/sca/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAReferenceBindingProvider.java b/java/sca/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAReferenceBindingProvider.java index d0d5d34d80..479e50a81a 100644 --- a/java/sca/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAReferenceBindingProvider.java +++ b/java/sca/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAReferenceBindingProvider.java @@ -56,6 +56,7 @@ public class RuntimeSCAReferenceBindingProvider implements ReferenceBindingProvi private static final Logger logger = Logger.getLogger(RuntimeSCAReferenceBindingProvider.class.getName()); + private EndpointReference endpointReference; private RuntimeComponent component; private RuntimeComponentReference reference; private SCABinding binding; @@ -66,12 +67,11 @@ public class RuntimeSCAReferenceBindingProvider implements ReferenceBindingProvi private SCABindingFactory scaBindingFactory; public RuntimeSCAReferenceBindingProvider(ExtensionPointRegistry extensionPoints, - RuntimeComponent component, - RuntimeComponentReference reference, - SCABinding binding) { - this.component = component; - this.reference = reference; - this.binding = binding; + EndpointReference endpointReference) { + this.endpointReference = endpointReference; + this.component = (RuntimeComponent)endpointReference.getComponent(); + this.reference = (RuntimeComponentReference)endpointReference.getReference(); + this.binding = (SCABinding)endpointReference.getBinding(); this.scaBindingFactory = extensionPoints.getExtensionPoint(FactoryExtensionPoint.class).getFactory(SCABindingFactory.class); @@ -89,12 +89,9 @@ public class RuntimeSCAReferenceBindingProvider implements ReferenceBindingProvi public boolean isTargetRemote() { boolean targetIsRemote = false; - // first look at the target service and see if this has been resolved - OptimizableBinding optimizableBinding = (OptimizableBinding)binding; - // The decision is based on the results of the wiring process in the assembly model // The SCA binding is used to represent unresolved reference targets, i.e. those - // reference targets that need resolving at run time. We can tell by lookin if the + // reference targets that need resolving at run time. We can tell by looking if the // service to which this binding refers is resolved or not. // // TODO - When a callback is in operation. A callback reference bindings sometimes has to @@ -107,12 +104,9 @@ public class RuntimeSCAReferenceBindingProvider implements ReferenceBindingProvi } else { targetIsRemote = true; } - } else if (optimizableBinding.getTargetComponentService() != null) { - if (optimizableBinding.getTargetComponentService().isUnresolved() == true) { - targetIsRemote = true; - } else { - targetIsRemote = false; - } + } if ( (endpointReference.isRemoteReference()) && + (endpointReference.getTargetEndpoint().isRemoteReference())){ + targetIsRemote = true; } else { // the case where the wire is specified by URI, e.g. callbacks or user specified bindings, and // look at the provided URI to decide whether it is a local or remote case @@ -156,9 +150,18 @@ public class RuntimeSCAReferenceBindingProvider implements ReferenceBindingProvi // create the remote provider DistributedSCABinding distributedBinding = scaBindingFactory.createDistributedSCABinding(); distributedBinding.setSCABinding(binding); + + // create a copy of the endpoint reference and change the binding + EndpointReference epr = null; + try { + epr = (EndpointReference)endpointReference.clone(); + } catch (Exception ex) { + // we know we can clone endpoint references + } + epr.setBinding(distributedBinding); distributedProvider = - distributedProviderFactory.createReferenceBindingProvider(component, reference, distributedBinding); + distributedProviderFactory.createReferenceBindingProvider(epr); } } diff --git a/java/sca/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAServiceBindingProvider.java b/java/sca/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAServiceBindingProvider.java index 6852bcaab0..df4305f42a 100644 --- a/java/sca/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAServiceBindingProvider.java +++ b/java/sca/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAServiceBindingProvider.java @@ -22,6 +22,8 @@ package org.apache.tuscany.sca.binding.sca.provider; import java.net.URI; 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.assembly.SCABindingFactory; import org.apache.tuscany.sca.core.ExtensionPointRegistry; @@ -43,16 +45,22 @@ import org.apache.tuscany.sca.runtime.RuntimeComponentService; */ public class RuntimeSCAServiceBindingProvider implements ServiceBindingProvider { + private RuntimeComponent component; private RuntimeComponentService service; + private SCABinding binding; + + private BindingProviderFactory<DistributedSCABinding> distributedProviderFactory; private ServiceBindingProvider distributedProvider; private DistributedSCABinding distributedBinding; + public RuntimeSCAServiceBindingProvider(ExtensionPointRegistry extensionPoints, - RuntimeComponent component, - RuntimeComponentService service, - SCABinding binding) { - this.service = service; + Endpoint endpoint) { + this.component = (RuntimeComponent)endpoint.getComponent(); + this.service = (RuntimeComponentService)endpoint.getService(); + this.binding = (SCABinding)endpoint.getBinding(); + // if there is potentially a wire to this service that crosses the node boundary if (service.getInterfaceContract().getInterface().isRemotable()) { @@ -85,9 +93,18 @@ public class RuntimeSCAServiceBindingProvider implements ServiceBindingProvider // create a nested provider to handle the remote case distributedBinding = scaBindingFactory.createDistributedSCABinding(); distributedBinding.setSCABinding(binding); + + // create a copy of the endpoint and change the binding + Endpoint ep = null; + try { + ep = (Endpoint)endpoint.clone(); + } catch (Exception ex) { + // we know we can clone endpoint + } + ep.setBinding(distributedBinding); distributedProvider = - distributedProviderFactory.createServiceBindingProvider(component, service, distributedBinding); + distributedProviderFactory.createServiceBindingProvider(ep); } else { diff --git a/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2BindingProviderFactory.java b/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2BindingProviderFactory.java index cc65988553..a04e0d54e5 100644 --- a/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2BindingProviderFactory.java +++ b/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2BindingProviderFactory.java @@ -20,6 +20,8 @@ package org.apache.tuscany.sca.binding.ws.axis2; import java.util.List; +import org.apache.tuscany.sca.assembly.Endpoint; +import org.apache.tuscany.sca.assembly.EndpointReference; import org.apache.tuscany.sca.binding.ws.WebServiceBinding; import org.apache.tuscany.sca.core.ExtensionPointRegistry; import org.apache.tuscany.sca.core.FactoryExtensionPoint; @@ -55,19 +57,12 @@ public class Axis2BindingProviderFactory implements BindingProviderFactory<WebSe dataBindings = extensionPoints.getExtensionPoint(DataBindingExtensionPoint.class); } - public ReferenceBindingProvider createReferenceBindingProvider(RuntimeComponent component, - RuntimeComponentReference reference, - WebServiceBinding binding) { - return new Axis2ReferenceBindingProvider(component, reference, binding, - modelFactories, dataBindings); + public ReferenceBindingProvider createReferenceBindingProvider(EndpointReference endpointReference) { + return new Axis2ReferenceBindingProvider(endpointReference, modelFactories, dataBindings); } - public ServiceBindingProvider createServiceBindingProvider(RuntimeComponent component, - RuntimeComponentService service, - WebServiceBinding binding) { - return new Axis2ServiceBindingProvider(component, service, binding, - servletHost, modelFactories, - dataBindings); + public ServiceBindingProvider createServiceBindingProvider(Endpoint endpoint) { + return new Axis2ServiceBindingProvider(endpoint, servletHost, modelFactories, dataBindings); } public Class<WebServiceBinding> getModelType() { diff --git a/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ReferenceBindingProvider.java b/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ReferenceBindingProvider.java index 184d02642e..2aabce9937 100644 --- a/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ReferenceBindingProvider.java +++ b/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ReferenceBindingProvider.java @@ -19,6 +19,7 @@ package org.apache.tuscany.sca.binding.ws.axis2; import org.apache.axiom.om.OMElement; +import org.apache.tuscany.sca.assembly.EndpointReference; import org.apache.tuscany.sca.binding.ws.WebServiceBinding; import org.apache.tuscany.sca.core.FactoryExtensionPoint; import org.apache.tuscany.sca.databinding.DataBindingExtensionPoint; @@ -33,17 +34,20 @@ import org.oasisopen.sca.ServiceRuntimeException; public class Axis2ReferenceBindingProvider implements ReferenceBindingProvider { + private RuntimeComponent component; + private RuntimeComponentReference reference; private WebServiceBinding wsBinding; + private Axis2ServiceClient axisClient; - public Axis2ReferenceBindingProvider(RuntimeComponent component, - RuntimeComponentReference reference, - WebServiceBinding wsBinding, + public Axis2ReferenceBindingProvider(EndpointReference endpointReference, FactoryExtensionPoint modelFactories, DataBindingExtensionPoint dataBindings) { MessageFactory messageFactory = modelFactories.getFactory(MessageFactory.class); - this.wsBinding = wsBinding; + this.wsBinding = (WebServiceBinding)endpointReference.getBinding(); + this.component = (RuntimeComponent)endpointReference.getComponent(); + this.reference = (RuntimeComponentReference)endpointReference.getReference(); // A WSDL document should always be present in the binding if (wsBinding.getWSDLDocument() == null) { diff --git a/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceBindingProvider.java b/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceBindingProvider.java index 5306a519ab..b6aac923a0 100644 --- a/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceBindingProvider.java +++ b/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceBindingProvider.java @@ -19,6 +19,7 @@ package org.apache.tuscany.sca.binding.ws.axis2; import org.apache.axiom.om.OMElement; +import org.apache.tuscany.sca.assembly.Endpoint; import org.apache.tuscany.sca.binding.ws.WebServiceBinding; import org.apache.tuscany.sca.core.FactoryExtensionPoint; import org.apache.tuscany.sca.databinding.DataBindingExtensionPoint; @@ -32,12 +33,13 @@ import org.oasisopen.sca.ServiceRuntimeException; public class Axis2ServiceBindingProvider implements ServiceBindingProvider { + private RuntimeComponent component; + private RuntimeComponentService service; private WebServiceBinding wsBinding; + private Axis2ServiceProvider axisProvider; - public Axis2ServiceBindingProvider(RuntimeComponent component, - RuntimeComponentService service, - WebServiceBinding wsBinding, + public Axis2ServiceBindingProvider(Endpoint endpoint, ServletHost servletHost, FactoryExtensionPoint modelFactories, DataBindingExtensionPoint dataBindings) { @@ -47,7 +49,9 @@ public class Axis2ServiceBindingProvider implements ServiceBindingProvider { } MessageFactory messageFactory = modelFactories.getFactory(MessageFactory.class); - this.wsBinding = wsBinding; + this.wsBinding = (WebServiceBinding)endpoint.getBinding(); + this.component = (RuntimeComponent)endpoint.getComponent(); + this.service = (RuntimeComponentService)endpoint.getService(); // A WSDL document should always be present in the binding if (wsBinding.getWSDLDocument() == null) { diff --git a/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java b/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java index 1749872ea1..fc39c8c055 100644 --- a/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java +++ b/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java @@ -83,6 +83,7 @@ import org.apache.tuscany.sca.assembly.AssemblyFactory; import org.apache.tuscany.sca.assembly.Binding; 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.axis2.Axis2ServiceClient.URIResolverImpl; import org.apache.tuscany.sca.binding.ws.axis2.policy.authentication.token.Axis2TokenAuthenticationPolicy; @@ -835,6 +836,18 @@ public class Axis2ServiceProvider { // find the runtime wire and invoke it with the message RuntimeWire wire = ((RuntimeComponentService)contract).getRuntimeWire(getBinding()); + + // TODO - EPR - if there is no wire then find the wire for the SCA binding + // because this WS endpoint is providing remote support for the + // SCA binding + if (wire == null){ + for(RuntimeWire tmpWire : ((RuntimeComponentService)contract).getRuntimeWires()){ + if (tmpWire.getEndpoint().getBinding() instanceof SCABinding){ + wire = tmpWire; + break; + } + } + } Object response = wire.invoke(op, msg); return response; diff --git a/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/BindingProviderFactory.java b/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/BindingProviderFactory.java index 0f6a932c51..0e94a28d98 100644 --- a/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/BindingProviderFactory.java +++ b/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/BindingProviderFactory.java @@ -20,9 +20,8 @@ package org.apache.tuscany.sca.provider; import org.apache.tuscany.sca.assembly.Binding; -import org.apache.tuscany.sca.runtime.RuntimeComponent; -import org.apache.tuscany.sca.runtime.RuntimeComponentReference; -import org.apache.tuscany.sca.runtime.RuntimeComponentService; +import org.apache.tuscany.sca.assembly.Endpoint; +import org.apache.tuscany.sca.assembly.EndpointReference; /** * A factory for creating the runtime artifacts that represent bindings. @@ -32,29 +31,20 @@ import org.apache.tuscany.sca.runtime.RuntimeComponentService; public interface BindingProviderFactory<M extends Binding> extends ProviderFactory<M> { /** - * Creates a new reference binding provider for the given component and - * reference. + * Creates a new reference binding provider for the given endpoint reference * - * @param component The runtime component - * @param reference The reference on the runtime component - * @param binding The binding assembly model object + * @param endpointReference defines the component/reference/binding against which to create the provider * @return The binding provider */ - ReferenceBindingProvider createReferenceBindingProvider(RuntimeComponent component, - RuntimeComponentReference reference, - M binding); + ReferenceBindingProvider createReferenceBindingProvider(EndpointReference endpointReference); /** * Creates a new service binding provider for the given component and * service. * - * @param component The runtime component - * @param service The service on the runtime component - * @param binding The binding assembly model object + * @param endpoint defines the component/service/binding against which to create the provider * @return The binding provider */ - ServiceBindingProvider createServiceBindingProvider(RuntimeComponent component, - RuntimeComponentService service, - M binding); + ServiceBindingProvider createServiceBindingProvider(Endpoint endpoint); } diff --git a/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/DefaultProviderFactoryExtensionPoint.java b/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/DefaultProviderFactoryExtensionPoint.java index 84e000ab10..dabebb5400 100644 --- a/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/DefaultProviderFactoryExtensionPoint.java +++ b/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/DefaultProviderFactoryExtensionPoint.java @@ -27,6 +27,8 @@ import java.util.List; import java.util.Map; import org.apache.tuscany.sca.assembly.Binding; +import org.apache.tuscany.sca.assembly.Endpoint; +import org.apache.tuscany.sca.assembly.EndpointReference; import org.apache.tuscany.sca.assembly.Implementation; import org.apache.tuscany.sca.core.ExtensionPointRegistry; import org.apache.tuscany.sca.extensibility.ServiceDeclaration; @@ -235,17 +237,13 @@ public class DefaultProviderFactoryExtensionPoint implements ProviderFactoryExte } @SuppressWarnings("unchecked") - public ReferenceBindingProvider createReferenceBindingProvider(RuntimeComponent component, - RuntimeComponentReference reference, - Binding binding) { - return getFactory().createReferenceBindingProvider(component, reference, binding); + public ReferenceBindingProvider createReferenceBindingProvider(EndpointReference endpointReference) { + return getFactory().createReferenceBindingProvider(endpointReference); } @SuppressWarnings("unchecked") - public ServiceBindingProvider createServiceBindingProvider(RuntimeComponent component, - RuntimeComponentService service, - Binding binding) { - return getFactory().createServiceBindingProvider(component, service, binding); + public ServiceBindingProvider createServiceBindingProvider(Endpoint endpoint) { + return getFactory().createServiceBindingProvider(endpoint); } public Class<?> getModelType() { diff --git a/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/CompositeActivatorImpl.java b/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/CompositeActivatorImpl.java index 27fad24b1f..cff7dbd21a 100644 --- a/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/CompositeActivatorImpl.java +++ b/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/CompositeActivatorImpl.java @@ -298,7 +298,7 @@ public class CompositeActivatorImpl implements CompositeActivator { } for (Endpoint endpoint : service.getEndpoints()) { - addServiceBindingProvider(component, service, endpoint.getBinding()); + addServiceBindingProvider(endpoint, component, service, endpoint.getBinding()); } addServiceWires(component, service); } @@ -314,6 +314,7 @@ public class CompositeActivatorImpl implements CompositeActivator { } private ServiceBindingProvider addServiceBindingProvider( + Endpoint endpoint, RuntimeComponent component, RuntimeComponentService service, Binding binding) { BindingProviderFactory providerFactory = (BindingProviderFactory) providerFactories @@ -321,8 +322,7 @@ public class CompositeActivatorImpl implements CompositeActivator { if (providerFactory != null) { @SuppressWarnings("unchecked") ServiceBindingProvider bindingProvider = providerFactory - .createServiceBindingProvider((RuntimeComponent) component, - (RuntimeComponentService) service, binding); + .createServiceBindingProvider(endpoint); if (bindingProvider != null) { ((RuntimeComponentService) service).setBindingProvider(binding, bindingProvider); diff --git a/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/RuntimeWireImpl.java b/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/RuntimeWireImpl.java index ada355d32e..e8554ec301 100644 --- a/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/RuntimeWireImpl.java +++ b/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/RuntimeWireImpl.java @@ -316,7 +316,8 @@ public class RuntimeWireImpl implements RuntimeWire { RuntimeComponentReference runtimeRef = (RuntimeComponentReference)endpointReference.getReference(); if (runtimeRef.getBindingProvider(endpointReference.getBinding()) == null) { - addReferenceBindingProvider((RuntimeComponent)endpointReference.getComponent(), + addReferenceBindingProvider(endpointReference, + (RuntimeComponent)endpointReference.getComponent(), runtimeRef, endpointReference.getBinding()); } @@ -340,6 +341,7 @@ public class RuntimeWireImpl implements RuntimeWire { } private ReferenceBindingProvider addReferenceBindingProvider( + EndpointReference endpointReference, RuntimeComponent component, RuntimeComponentReference reference, Binding binding) { BindingProviderFactory providerFactory = (BindingProviderFactory) providerFactories @@ -347,9 +349,7 @@ public class RuntimeWireImpl implements RuntimeWire { if (providerFactory != null) { @SuppressWarnings("unchecked") ReferenceBindingProvider bindingProvider = providerFactory - .createReferenceBindingProvider( - (RuntimeComponent) component, - (RuntimeComponentReference) reference, binding); + .createReferenceBindingProvider(endpointReference); if (bindingProvider != null) { ((RuntimeComponentReference) reference).setBindingProvider( binding, bindingProvider); |