Author: mcombellack
Date: Mon Apr 14 04:41:35 2008
New Revision: 647737

URL: http://svn.apache.org/viewvc?rev=647737&view=rev
Log:
TUSCANY-2225 - Added code to handle the case where an Exception is thrown by a 
@OneWay method so the exception is not just silently ignored

Modified:
    
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/NonBlockingInterceptor.java
    
incubator/tuscany/java/sca/modules/core/src/test/java/org/apache/tuscany/sca/core/wire/NonBlockingInterceptorTestCase.java

Modified: 
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/NonBlockingInterceptor.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/NonBlockingInterceptor.java?rev=647737&r1=647736&r2=647737&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/NonBlockingInterceptor.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/NonBlockingInterceptor.java
 Mon Apr 14 04:41:35 2008
@@ -68,7 +68,15 @@
                 public void run() {
                     Message context = 
ThreadMessageContext.setMessageContext(msg);
                     try {
-                        next.invoke(msg);
+                        Message response = next.invoke(msg);
+
+                        // Tuscany-2225 - Did the @OneWay method complete 
successfully?
+                        // (i.e. no exceptions)
+                        if (response != null && response.isFault()) {
+                            // The @OneWay method threw an Exception.
+                            Throwable t = (Throwable) response.getBody();
+                            throw new ServiceRuntimeException("Exception from 
@OneWay invocation", t);
+                        }
                     } finally {
                         ThreadMessageContext.setMessageContext(context);
                     }

Modified: 
incubator/tuscany/java/sca/modules/core/src/test/java/org/apache/tuscany/sca/core/wire/NonBlockingInterceptorTestCase.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/test/java/org/apache/tuscany/sca/core/wire/NonBlockingInterceptorTestCase.java?rev=647737&r1=647736&r2=647737&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/core/src/test/java/org/apache/tuscany/sca/core/wire/NonBlockingInterceptorTestCase.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/core/src/test/java/org/apache/tuscany/sca/core/wire/NonBlockingInterceptorTestCase.java
 Mon Apr 14 04:41:35 2008
@@ -61,6 +61,7 @@
         //msg.setConversationID(convID);
         Interceptor next = EasyMock.createMock(Interceptor.class);
         EasyMock.expect(next.invoke(EasyMock.eq(msg))).andReturn(msg);
+        EasyMock.expect(msg.isFault()).andReturn(false);
         EasyMock.replay(next);
         EasyMock.replay(msg);
         Interceptor interceptor = new NonBlockingInterceptor(scheduler, next);



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

Reply via email to