Author: isilval
Date: Mon Dec  4 06:55:22 2006
New Revision: 482202

URL: http://svn.apache.org/viewvc?view=rev&rev=482202
Log:
Fix problem with ConversationalSequenceInterceptor merging invocation chains

Modified:
    
incubator/tuscany/java/sca/kernel/core/src/main/resources/org/apache/tuscany/core/implementation.scdl
    
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKOutboundInvocationHandlerSerializationTestCase.java
    
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/AbstractOutboundInvocationHandler.java

Modified: 
incubator/tuscany/java/sca/kernel/core/src/main/resources/org/apache/tuscany/core/implementation.scdl
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/resources/org/apache/tuscany/core/implementation.scdl?view=diff&rev=482202&r1=482201&r2=482202
==============================================================================
--- 
incubator/tuscany/java/sca/kernel/core/src/main/resources/org/apache/tuscany/core/implementation.scdl
 (original)
+++ 
incubator/tuscany/java/sca/kernel/core/src/main/resources/org/apache/tuscany/core/implementation.scdl
 Mon Dec  4 06:55:22 2006
@@ -63,7 +63,4 @@
     <component name="implementation.Conversation">
         <system:implementation.system 
class="org.apache.tuscany.core.implementation.processor.ConversationProcessor"/>
     </component>
-    <component name="implementation.ConversationWirePostProcessor">
-        <system:implementation.system 
class="org.apache.tuscany.core.wire.ConversationWirePostProcessor"/>
-    </component>
 </composite>

Modified: 
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKOutboundInvocationHandlerSerializationTestCase.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKOutboundInvocationHandlerSerializationTestCase.java?view=diff&rev=482202&r1=482201&r2=482202
==============================================================================
--- 
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKOutboundInvocationHandlerSerializationTestCase.java
 (original)
+++ 
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKOutboundInvocationHandlerSerializationTestCase.java
 Mon Dec  4 06:55:22 2006
@@ -84,6 +84,10 @@
         wire = EasyMock.createMock(OutboundWire.class);
         Map<Operation<?>, OutboundInvocationChain> map = new 
HashMap<Operation<?>, OutboundInvocationChain>();
         Operation<Object> operation = new Operation<Object>("invoke", null, 
null, null, false, null, NO_CONVERSATION);
+        ServiceContract<Object> opContract = new ServiceContract<Object>() {};
+        contract.setInterfaceClass(Foo.class);
+        contract.setInteractionScope(InteractionScope.NONCONVERSATIONAL);
+        operation.setServiceContract(opContract);
         map.put(operation, createChain(operation));
         
EasyMock.expect(wire.getContainer()).andReturn(container).atLeastOnce();
         
EasyMock.expect(wire.getServiceContract()).andReturn(contract).atLeastOnce();

Modified: 
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/AbstractOutboundInvocationHandler.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/AbstractOutboundInvocationHandler.java?view=diff&rev=482202&r1=482201&r2=482202
==============================================================================
--- 
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/AbstractOutboundInvocationHandler.java
 (original)
+++ 
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/AbstractOutboundInvocationHandler.java
 Mon Dec  4 06:55:22 2006
@@ -21,6 +21,8 @@
 import java.lang.reflect.InvocationTargetException;
 import java.util.LinkedList;
 
+import org.apache.tuscany.spi.model.InteractionScope;
+import org.apache.tuscany.spi.model.Operation;
 
 /**
  * Base class for performing invocations on an outbound chain. Subclasses are 
responsible for retrieving and supplying
@@ -29,6 +31,8 @@
  * @version $Rev$ $Date$
  */
 public abstract class AbstractOutboundInvocationHandler {
+    
+    private boolean conversationStarted = false;
 
     protected Object invoke(OutboundInvocationChain chain,
                             TargetInvoker invoker,
@@ -65,6 +69,19 @@
             }
             if (callbackRoutingChain != null) {
                 msg.setCallbackRoutingChain(callbackRoutingChain);
+            }
+            if 
(InteractionScope.CONVERSATIONAL.equals(chain.getOperation().getServiceContract().getInteractionScope()))
 {
+                int sequence = chain.getOperation().getConversationSequence();
+                if (sequence == Operation.CONVERSATION_END) {
+                    msg.setConversationSequence(TargetInvoker.END);
+                } else if (sequence == Operation.CONVERSATION_CONTINUE) {
+                    if (conversationStarted) {
+                        msg.setConversationSequence(TargetInvoker.CONTINUE);
+                    } else {
+                        conversationStarted = true;
+                        msg.setConversationSequence(TargetInvoker.START);
+                    }
+                }
             }
             msg.setBody(args);
             // dispatch the wire down the chain and get the response



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

Reply via email to