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