Author: nash
Date: Sun Mar 16 10:59:45 2008
New Revision: 637621
URL: http://svn.apache.org/viewvc?rev=637621&view=rev
Log:
Fix for TUSCANY-2077
Modified:
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/EndpointReferenceImpl.java
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/JDKCallbackInvocationHandler.java
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/JDKInvocationHandler.java
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/RuntimeWireInvoker.java
Modified:
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/EndpointReferenceImpl.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/EndpointReferenceImpl.java?rev=637621&r1=637620&r2=637621&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/EndpointReferenceImpl.java
(original)
+++
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/EndpointReferenceImpl.java
Sun Mar 16 10:59:45 2008
@@ -149,9 +149,11 @@
@Override
public Object clone() throws CloneNotSupportedException {
EndpointReferenceImpl copy = (EndpointReferenceImpl)super.clone();
+ /* [nash] no need to copy callback endpoint
if (callbackEndpoint != null) {
copy.callbackEndpoint =
(EndpointReference)callbackEndpoint.clone();
}
+ */
if (parameters != null) {
copy.parameters = (ReferenceParameters)parameters.clone();
}
Modified:
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/JDKCallbackInvocationHandler.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/JDKCallbackInvocationHandler.java?rev=637621&r1=637620&r2=637621&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/JDKCallbackInvocationHandler.java
(original)
+++
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/JDKCallbackInvocationHandler.java
Sun Mar 16 10:59:45 2008
@@ -98,7 +98,7 @@
}
try {
- return invoke(chain, args, wire);
+ return invoke(chain, args, wire, wire.getSource());
} catch (InvocationTargetException e) {
Throwable t = e.getCause();
if (t instanceof NoRegisteredCallbackException) {
Modified:
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/JDKInvocationHandler.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/JDKInvocationHandler.java?rev=637621&r1=637620&r2=637621&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/JDKInvocationHandler.java
(original)
+++
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/JDKInvocationHandler.java
Sun Mar 16 10:59:45 2008
@@ -67,6 +67,7 @@
protected boolean conversational;
protected ExtendedConversation conversation;
protected MessageFactory messageFactory;
+ protected EndpointReference source;
protected EndpointReference target;
protected RuntimeWire wire;
protected CallableReference<?> callableReference;
@@ -98,14 +99,12 @@
protected void init(RuntimeWire wire) {
if (wire != null) {
- /* [scn] no need to clone because the wire doesn't get modified
try {
- // Clone the wire so that reference parameters can be changed
- this.wire = (RuntimeWire)wire.clone();
+ // Clone the endpoint reference so that reference parameters
can be changed
+ source = (EndpointReference)wire.getSource().clone();
} catch (CloneNotSupportedException e) {
throw new ServiceRuntimeException(e);
}
- [scn] */
initConversational(wire);
}
}
@@ -152,7 +151,7 @@
}
// send the invocation down the wire
- Object result = invoke(chain, args, wire);
+ Object result = invoke(chain, args, wire, source);
return result;
}
@@ -262,10 +261,10 @@
this.target = endpoint;
}
- protected Object invoke(InvocationChain chain, Object[] args, RuntimeWire
wire) throws Throwable {
-
+ protected Object invoke(InvocationChain chain, Object[] args, RuntimeWire
wire, EndpointReference source)
+ throws Throwable {
Message msg = messageFactory.createMessage();
- msg.setFrom(wire.getSource());
+ msg.setFrom(source);
if (target != null) {
msg.setTo(target);
} else {
@@ -306,11 +305,11 @@
throws TargetResolutionException {
ReferenceParameters parameters =
msg.getFrom().getReferenceParameters();
parameters.setCallbackID(getCallbackID());
- if (wire.getSource() == null || wire.getSource().getCallbackEndpoint()
== null) {
+ if (msg.getFrom() == null || msg.getFrom().getCallbackEndpoint() ==
null) {
return;
}
-
parameters.setCallbackReference(wire.getSource().getCallbackEndpoint());
+ parameters.setCallbackReference(msg.getFrom().getCallbackEndpoint());
// If we are passing out a callback target
// register the calling component instance against this
Modified:
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/RuntimeWireInvoker.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/RuntimeWireInvoker.java?rev=637621&r1=637620&r2=637621&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/RuntimeWireInvoker.java
(original)
+++
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/RuntimeWireInvoker.java
Sun Mar 16 10:59:45 2008
@@ -141,56 +141,6 @@
}
/**
- * This method has bugs in it and is not needed by this class. It is no
- * longer called and will be removed completely when I finish my cleanup
- * of this class.
- */
- @SuppressWarnings("unchecked")
- private void handleCallback(Message msg, Object currentConversationID)
throws TargetResolutionException {
- EndpointReference from = msg.getFrom();
- ReferenceParameters parameters = from.getReferenceParameters();
- parameters.setCallbackID(callbackID);
- if (from == null || from.getCallbackEndpoint() == null) {
- return;
- }
- // If we are passing out a callback target
- // register the calling component instance against this
- // new conversation id so that stateful callbacks will be
- // able to find it
- if (conversational && callbackObject == null) {
- // the component instance is already registered
- // so add another registration
- ScopeContainer scopeContainer =
getConversationalScopeContainer(msg);
-
- if (scopeContainer != null) {
- scopeContainer.addWrapperReference(currentConversationID,
parameters.getConversationID());
- }
- }
-
- Interface interfaze = msg.getOperation().getInterface();
- if (callbackObject != null) {
- if (callbackObject instanceof ServiceReference) {
- EndpointReference callbackRef =
((CallableReferenceImpl)callbackObject).getEndpointReference();
- parameters.setCallbackReference(callbackRef);
- } else {
- if (interfaze != null) {
- if (!interfaze.isConversational()) {
- throw new IllegalArgumentException(
- "Callback object
for stateless callback is not a ServiceReference");
- } else {
- ScopeContainer scopeContainer =
getConversationalScopeContainer(msg);
- if (scopeContainer != null) {
- InstanceWrapper wrapper = new
CallbackObjectWrapper(callbackObject);
- scopeContainer.registerWrapper(wrapper,
conversation.getConversationID());
- }
- parameters.setCallbackObjectID(callbackObject);
- }
- }
- }
- }
- }
-
- /**
* Pre-invoke for the conversation handling
* @param msg
* @throws TargetResolutionException
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]