You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by is...@apache.org on 2006/12/07 20:02:15 UTC
svn commit: r483607 - in /incubator/tuscany/java/sca/kernel:
core/src/main/java/org/apache/tuscany/core/wire/jdk/
core/src/test/java/org/apache/tuscany/core/implementation/java/integration/
spi/src/main/java/org/apache/tuscany/spi/extension/
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: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org