diff options
Diffstat (limited to 'java/sca/modules')
-rw-r--r-- | java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/wire/DataBindingRuntimeWireProcessor.java | 11 |
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. */ |