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]