summaryrefslogtreecommitdiffstats
path: root/java/sca
diff options
context:
space:
mode:
Diffstat (limited to 'java/sca')
-rw-r--r--java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/wire/DataBindingRuntimeWireProcessor.java11
1 files changed, 10 insertions, 1 deletions
diff --git a/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/wire/DataBindingRuntimeWireProcessor.java b/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/wire/DataBindingRuntimeWireProcessor.java
index e5965db2c5..b41c7fb012 100644
--- a/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/wire/DataBindingRuntimeWireProcessor.java
+++ b/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/wire/DataBindingRuntimeWireProcessor.java
@@ -154,7 +154,7 @@ public class DataBindingRuntimeWireProcessor implements RuntimeWireProcessor {
} else {
// assume pass-by-values copies are required if interfaces are remotable and there is no data binding
// transformation, i.e. a transformation will result in a copy so another pass-by-value copy is unnecessary
- if (isRemotable(chain, sourceOperation, targetOperation)) {
+ if (!isOnMessage(targetOperation) && isRemotable(chain, sourceOperation, targetOperation)) {
interceptor =
new PassByValueInterceptor(dataBindings, faultExceptionMapper, chain, targetOperation);
}
@@ -170,6 +170,15 @@ public class DataBindingRuntimeWireProcessor implements RuntimeWireProcessor {
}
/**
+ * FIXME: TUSCANY-2586, temporary work around till the JIRA is fixed to prevent
+ * the PassByValueInterceptor being used for services when the binding protocol
+ * doesn't need the copies done.
+ */
+ protected boolean isOnMessage(Operation op) {
+ return "onMessage".equals(op.getName());
+ }
+
+ /**
* Pass-by-value copies are required if the interfaces are remotable unless the
* implementation uses the @AllowsPassByReference annotation.
*/