summaryrefslogtreecommitdiffstats
path: root/java/sca/modules/binding-sca-runtime/src
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 /java/sca/modules/binding-sca-runtime/src
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
Diffstat (limited to 'java/sca/modules/binding-sca-runtime/src')
-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
3 files changed, 48 insertions, 30 deletions
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 {