Author: isilval
Date: Thu Dec 7 11:02:12 2006
New Revision: 483607
URL: http://svn.apache.org/viewvc?view=rev&rev=483607
Log:
Fix to allow multiple invocations of a callback
Modified:
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/jdk/JDKCallbackInvocationHandler.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/integration/CallbackInvocationTestCase.java
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/TargetInvokerExtension.java
Modified:
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/jdk/JDKCallbackInvocationHandler.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/jdk/JDKCallbackInvocationHandler.java?view=diff&rev=483607&r1=483606&r2=483607
==============================================================================
---
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/jdk/JDKCallbackInvocationHandler.java
(original)
+++
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/jdk/JDKCallbackInvocationHandler.java
Thu Dec 7 11:02:12 2006
@@ -80,8 +80,7 @@
}
Object correlationId = context.getCurrentCorrelationId();
context.setCurrentCorrelationId(null);
- LinkedList<Object> callbackRoutingChain =
context.getCurrentCallbackRoutingChain();
- context.setCurrentCallbackRoutingChain(null);
+ LinkedList<Object> callbackRoutingChain =
(LinkedList<Object>)context.getCurrentCallbackRoutingChain().clone();
if (callbackRoutingChain == null) {
throw new AssertionError("Missing stack of from addresses");
}
Modified:
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/integration/CallbackInvocationTestCase.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/integration/CallbackInvocationTestCase.java?view=diff&rev=483607&r1=483606&r2=483607
==============================================================================
---
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/integration/CallbackInvocationTestCase.java
(original)
+++
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/integration/CallbackInvocationTestCase.java
Thu Dec 7 11:02:12 2006
@@ -99,6 +99,8 @@
FooClient client = (FooClient) clientComponent.getServiceInstance();
client.invoke();
assertTrue(client.invoked);
+ client.invokeMultiCallback();
+ assertTrue(client.count == 2);
}
/**
@@ -190,6 +192,7 @@
@Callback(FooCallback.class)
public static interface Foo {
void call();
+ void callMultiCallback();
}
public static class FooImpl implements Foo {
@@ -206,12 +209,18 @@
public void call() {
callback.callback();
}
+
+ public void callMultiCallback() {
+ callback.multiCallback();
+ callback.multiCallback();
+ }
}
public static class FooClient implements FooCallback {
private Foo foo;
private boolean invoked;
+ private int count;
public FooClient() {
}
@@ -226,14 +235,23 @@
}
invoked = true;
}
+
+ public void multiCallback() {
+ count++;
+ }
public void invoke() {
foo.call();
}
+
+ public void invokeMultiCallback() {
+ foo.callMultiCallback();
+ }
}
public interface FooCallback {
void callback();
+ void multiCallback();
}
protected void setUp() throws Exception {
Modified:
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/TargetInvokerExtension.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/TargetInvokerExtension.java?view=diff&rev=483607&r1=483606&r2=483607
==============================================================================
---
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/TargetInvokerExtension.java
(original)
+++
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/TargetInvokerExtension.java
Thu Dec 7 11:02:12 2006
@@ -56,9 +56,11 @@
if (messageId != null) {
workContext.setCurrentCorrelationId(messageId);
}
- LinkedList<Object> callbackRoutingChain =
msg.getCallbackRoutingChain();
- if (callbackRoutingChain != null) {
-
workContext.setCurrentCallbackRoutingChain(callbackRoutingChain);
+ if (wire != null) {
+ LinkedList<Object> callbackRoutingChain =
msg.getCallbackRoutingChain();
+ if (callbackRoutingChain != null) {
+
workContext.setCurrentCallbackRoutingChain(callbackRoutingChain);
+ }
}
Object resp = invokeTarget(msg.getBody(),
msg.getConversationSequence());
msg.setBody(resp);
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]