diff options
author | nash <nash@13f79535-47bb-0310-9956-ffa450edef68> | 2009-09-13 22:10:47 +0000 |
---|---|---|
committer | nash <nash@13f79535-47bb-0310-9956-ffa450edef68> | 2009-09-13 22:10:47 +0000 |
commit | 5c5a7b298776e002c4d3f9b85bee5c0802c99252 (patch) | |
tree | 4af58194d68783d28b96cac5c5c230a857e6f7c9 /branches/sca-java-1.x/modules/binding-sca | |
parent | 946292048c3c76c0fbc0d0f54fd52598bce6e305 (diff) |
Copy r799472 changes from 1.5.1 branch to 1.x branch
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@814396 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'branches/sca-java-1.x/modules/binding-sca')
-rw-r--r-- | branches/sca-java-1.x/modules/binding-sca/src/main/java/org/apache/tuscany/sca/binding/sca/impl/RuntimeSCAReferenceBindingProvider.java | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/branches/sca-java-1.x/modules/binding-sca/src/main/java/org/apache/tuscany/sca/binding/sca/impl/RuntimeSCAReferenceBindingProvider.java b/branches/sca-java-1.x/modules/binding-sca/src/main/java/org/apache/tuscany/sca/binding/sca/impl/RuntimeSCAReferenceBindingProvider.java index 850fd77e96..fa5a9b062b 100644 --- a/branches/sca-java-1.x/modules/binding-sca/src/main/java/org/apache/tuscany/sca/binding/sca/impl/RuntimeSCAReferenceBindingProvider.java +++ b/branches/sca-java-1.x/modules/binding-sca/src/main/java/org/apache/tuscany/sca/binding/sca/impl/RuntimeSCAReferenceBindingProvider.java @@ -126,7 +126,7 @@ public class RuntimeSCAReferenceBindingProvider implements ReferenceBindingProvi private ReferenceBindingProvider getDistributedProvider() { - if (isTargetRemote()) { + if (isTargetRemote() || isRemotableCallback()) { // initialize the remote provider if it hasn't been done already if (distributedProvider == null) { if (reference.getInterfaceContract() != null && !reference.getInterfaceContract().getInterface().isRemotable()) { @@ -155,6 +155,22 @@ public class RuntimeSCAReferenceBindingProvider implements ReferenceBindingProvi return distributedProvider; } + /* + * This test is needed to make sure the distributed binding provider + * is started and stopped if this is a callback binding that might + * need to make a remote invocation. + */ + private boolean isRemotableCallback() { + if (reference.isCallback() && + reference.getInterfaceContract() != null && + reference.getInterfaceContract().getInterface().isRemotable() && + distributedProviderFactory != null) { + return true; + } else { + return false; + } + } + public InterfaceContract getBindingInterfaceContract() { if (isTargetRemote()) { return getDistributedProvider().getBindingInterfaceContract(); |