Author: slaws
Date: Thu Oct 18 08:04:06 2007
New Revision: 585999

URL: http://svn.apache.org/viewvc?rev=585999&view=rev
Log:
TUSCANY-1854
Initial fix to ensure that when using remote bindings and client and server 
components are running in the same VM the conversationID from the message is 
picked up and an appropriate conversation started. 

Modified:
    
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/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=585999&r1=585998&r2=585999&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
 Thu Oct 18 08:04:06 2007
@@ -328,7 +328,11 @@
     private void conversationPostInvoke(Message msg, RuntimeWire wire) throws 
TargetDestructionException {
         Operation operation = msg.getOperation();
         ConversationSequence sequence = operation.getConversationSequence();
-        if (sequence == ConversationSequence.CONVERSATION_END) {
+        // We check that conversation has not already ended as there is only 
one
+        // comversation manager in the runtime and so, in the case of remote 
bindings, 
+        // the conversation will already have been stopped when we get back to 
the client
+        if ((sequence == ConversationSequence.CONVERSATION_END) && 
+            (conversation.getState()!= ConversationState.ENDED)) {
             conversation.end();
 
             // remove conversation id from scope container

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=585999&r1=585998&r2=585999&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
 Thu Oct 18 08:04:06 2007
@@ -208,7 +208,16 @@
             return;
         }
         if (conversation == null || conversation.getState() == 
ConversationState.ENDED) {
-            conversation = 
conversationManager.startConversation(conversationID);
+            // in some cases the ConversationID that should be used comes in 
with the 
+            // message, e.g. when ws binding is in use. 
+            if (msg.getTo().getReferenceParameters().getConversationID() != 
null) {
+                conversationID =  
msg.getTo().getReferenceParameters().getConversationID();
+            }
+            conversation = conversationManager.getConversation(conversationID);
+            
+            if (conversation == null) {
+                conversation = 
conversationManager.startConversation(conversationID);
+            }
         }
         // TODO - assuming that the conversation ID is a string here when
         //       it can be any object that is serializable to XML



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to