summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorslaws <slaws@13f79535-47bb-0310-9956-ffa450edef68>2009-06-19 15:37:36 +0000
committerslaws <slaws@13f79535-47bb-0310-9956-ffa450edef68>2009-06-19 15:37:36 +0000
commit9b8fd2b5139dce38fdd0f032676881ac885b31ac (patch)
tree3991e1579db942202433b8e229d5160cee1ba27b
parent7f94dc1acc9bd08d246ddeeb5f4bfd0c5e3f76b1 (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
-rw-r--r--java/sca/modules/binding-rmi-runtime/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIBindingProviderFactory.java14
-rw-r--r--java/sca/modules/binding-rmi-runtime/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIReferenceBindingProvider.java11
-rw-r--r--java/sca/modules/binding-rmi-runtime/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIServiceBindingProvider.java9
-rw-r--r--java/sca/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCABindingProviderFactory.java14
-rw-r--r--java/sca/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAReferenceBindingProvider.java37
-rw-r--r--java/sca/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAServiceBindingProvider.java27
-rw-r--r--java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2BindingProviderFactory.java17
-rw-r--r--java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ReferenceBindingProvider.java12
-rw-r--r--java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceBindingProvider.java12
-rw-r--r--java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java13
-rw-r--r--java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/BindingProviderFactory.java24
-rw-r--r--java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/DefaultProviderFactoryExtensionPoint.java14
-rw-r--r--java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/CompositeActivatorImpl.java6
-rw-r--r--java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/RuntimeWireImpl.java8
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);