From c13b16cafe0cd2999754186270f6b8e03baefe6d Mon Sep 17 00:00:00 2001 From: rfeng Date: Wed, 28 Oct 2009 18:07:01 +0000 Subject: Merge the fix for TUSCANY-3348 (perf improvement) from 1.x to 1.5.2 git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@830703 13f79535-47bb-0310-9956-ffa450edef68 --- .../tuscany/sca/core/context/CallableReferenceImpl.java | 2 +- .../sca/core/invocation/JDKCallbackInvocationHandler.java | 14 ++++++++++++++ .../tuscany/sca/core/invocation/JDKInvocationHandler.java | 7 ++++--- 3 files changed, 19 insertions(+), 4 deletions(-) (limited to 'branches/sca-java-1.5.2/modules/core') diff --git a/branches/sca-java-1.5.2/modules/core/src/main/java/org/apache/tuscany/sca/core/context/CallableReferenceImpl.java b/branches/sca-java-1.5.2/modules/core/src/main/java/org/apache/tuscany/sca/core/context/CallableReferenceImpl.java index fc6d7abf6a..7d94e73f35 100644 --- a/branches/sca-java-1.5.2/modules/core/src/main/java/org/apache/tuscany/sca/core/context/CallableReferenceImpl.java +++ b/branches/sca-java-1.5.2/modules/core/src/main/java/org/apache/tuscany/sca/core/context/CallableReferenceImpl.java @@ -370,7 +370,7 @@ public class CallableReferenceImpl implements CallableReference, Externali } this.proxyFactory = compositeActivator.getProxyFactory(); } - } else { + } else if (compositeActivator == null || proxyFactory == null) { this.compositeActivator = ComponentContextHelper.getCurrentCompositeActivator(); if (this.compositeActivator != null) { this.proxyFactory = this.compositeActivator.getProxyFactory(); diff --git a/branches/sca-java-1.5.2/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/JDKCallbackInvocationHandler.java b/branches/sca-java-1.5.2/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/JDKCallbackInvocationHandler.java index cade0499d3..62e8b4d3ee 100644 --- a/branches/sca-java-1.5.2/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/JDKCallbackInvocationHandler.java +++ b/branches/sca-java-1.5.2/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/JDKCallbackInvocationHandler.java @@ -24,8 +24,11 @@ import java.lang.reflect.Method; import org.apache.tuscany.sca.core.assembly.RuntimeWireImpl; import org.apache.tuscany.sca.core.context.CallableReferenceImpl; import org.apache.tuscany.sca.core.conversation.ConversationState; +import org.apache.tuscany.sca.core.scope.TargetResolutionException; import org.apache.tuscany.sca.invocation.InvocationChain; +import org.apache.tuscany.sca.invocation.Message; import org.apache.tuscany.sca.invocation.MessageFactory; +import org.apache.tuscany.sca.runtime.ReferenceParameters; import org.apache.tuscany.sca.runtime.RuntimeWire; import org.osoa.sca.NoRegisteredCallbackException; import org.osoa.sca.ServiceRuntimeException; @@ -106,5 +109,16 @@ public class JDKCallbackInvocationHandler extends JDKInvocationHandler { ((RuntimeWireImpl)wire).releaseWire(); } } + + /** + * + */ + @Override + protected void handleCallback(Message msg, RuntimeWire wire, Object currentConversationID) + throws TargetResolutionException { + ReferenceParameters parameters = msg.getFrom().getReferenceParameters(); + parameters.setCallbackID(getCallbackID()); + } + } diff --git a/branches/sca-java-1.5.2/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/JDKInvocationHandler.java b/branches/sca-java-1.5.2/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/JDKInvocationHandler.java index bb9595bf9c..80650b2804 100644 --- a/branches/sca-java-1.5.2/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/JDKInvocationHandler.java +++ b/branches/sca-java-1.5.2/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/JDKInvocationHandler.java @@ -381,14 +381,15 @@ public class JDKInvocationHandler implements InvocationHandler, Serializable { * @param interfaze * @throws TargetResolutionException */ - private void handleCallback(Message msg, RuntimeWire wire, Object currentConversationID) + protected void handleCallback(Message msg, RuntimeWire wire, Object currentConversationID) throws TargetResolutionException { - ReferenceParameters parameters = msg.getFrom().getReferenceParameters(); - parameters.setCallbackID(getCallbackID()); + if (msg.getFrom() == null || msg.getFrom().getCallbackEndpoint() == null) { return; } + ReferenceParameters parameters = msg.getFrom().getReferenceParameters(); + parameters.setCallbackID(getCallbackID()); parameters.setCallbackReference(msg.getFrom().getCallbackEndpoint()); // If we are passing out a callback target -- cgit v1.2.3