summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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.java65
2 files changed, 31 insertions, 71 deletions
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 301ee86d44..079e7dd283 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
@@ -90,15 +90,16 @@ public class RuntimeSCAReferenceBindingProvider implements ReferenceBindingProvi
boolean targetIsRemote = false;
// 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 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
- // act as though there is a local wire and sometimes as if there is a remote wire
- // what are the implications of this here?
+ // and there are three possibilities
+ // 1 - target service is running in a separate node in a separate JVM
+ // 2 - target service is running in a seaprate node in the same JVM
+ // 3 - target service is running in the same node
+
+ // TODO - EPR - the method needs to be able to indicate the three cases
+
if (RemoteBindingHelper.isTargetRemote()) {
+ // TODO - EPR - what is this RemoteBindingHelper for?
if (reference.getInterfaceContract() != null) {
targetIsRemote = reference.getInterfaceContract().getInterface().isRemotable();
} else {
@@ -106,24 +107,14 @@ public class RuntimeSCAReferenceBindingProvider implements ReferenceBindingProvi
}
} if ( (endpointReference.isRemote()) &&
(endpointReference.getTargetEndpoint().isRemote())){
+ // case 1
targetIsRemote = true;
+ } else if (endpointReference.isRemote()) {
+ // case 2
+ targetIsRemote = false;
} 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
- try {
- if (binding.getURI() != null) {
- URI uri = new URI(binding.getURI());
- if (uri.isAbsolute()) {
- targetIsRemote = true;
- } else {
- targetIsRemote = false;
- }
- } else {
- targetIsRemote = false;
- }
- } catch (Exception ex) {
- targetIsRemote = false;
- }
+ // case 3
+ targetIsRemote = false;
}
return targetIsRemote;
}
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 df4305f42a..de21974095 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
@@ -62,6 +62,7 @@ public class RuntimeSCAServiceBindingProvider implements ServiceBindingProvider
this.binding = (SCABinding)endpoint.getBinding();
// if there is potentially a wire to this service that crosses the node boundary
+ // then we need to create a remote endpoint
if (service.getInterfaceContract().getInterface().isRemotable()) {
// look to see if a distributed SCA binding implementation has
@@ -73,59 +74,27 @@ public class RuntimeSCAServiceBindingProvider implements ServiceBindingProvider
(BindingProviderFactory<DistributedSCABinding>)factoryExtensionPoint
.getProviderFactory(DistributedSCABinding.class);
- // Check the things that will generally be required to set up a
- // distributed sca domain reference provider. I.e. make sure that we have a
- // - distributed implementation of the sca binding available
- // - remotable interface on the service
if (distributedProviderFactory != null) {
- URI serviceURI = null;
- try {
- serviceURI = new URI(binding.getURI());
- } catch(Exception ex) {
+ SCABindingFactory scaBindingFactory =
+ extensionPoints.getExtensionPoint(FactoryExtensionPoint.class).getFactory(SCABindingFactory.class);
+ // 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);
- if (RemoteBindingHelper.isTargetRemote() || ((serviceURI != null) && (serviceURI.isAbsolute()))) {
- SCABindingFactory scaBindingFactory =
- extensionPoints.getExtensionPoint(FactoryExtensionPoint.class).getFactory(SCABindingFactory.class);
-
- // 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(ep);
-
-
- } else {
- /* do nothing at the moment as only apps using the node implementation
- * will currently have the distributed domain set.
- *
- throw new IllegalStateException("No distributed domain available for component: "+
- component.getName() +
- " and service: " +
- service.getName());
- */
- }
- } else {
- /* do nothing at the moment as all services with remotable interfaces
- * are marked as remote
- throw new IllegalStateException("No distributed SCA binding available for component: "+
- component.getName() +
- " and service: " +
- service.getName());
- */
- }
+ distributedProvider =
+ distributedProviderFactory.createServiceBindingProvider(ep);
+ }
}
}