[jboss-cvs] JBossAS SVN: r82764 - in projects/ejb3/trunk/common/src: test/java/org/jboss/ejb3/test/common/proxy/unit and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Jan 12 06:35:36 EST 2009


Author: wolfc
Date: 2009-01-12 06:35:36 -0500 (Mon, 12 Jan 2009)
New Revision: 82764

Modified:
   projects/ejb3/trunk/common/src/main/java/org/jboss/ejb3/common/proxy/plugins/async/AsyncProcessor.java
   projects/ejb3/trunk/common/src/test/java/org/jboss/ejb3/test/common/proxy/unit/AsyncTestCase.java
Log:
EJBTHREE-1680: propagate exception in ExecutionException.cause

Modified: projects/ejb3/trunk/common/src/main/java/org/jboss/ejb3/common/proxy/plugins/async/AsyncProcessor.java
===================================================================
--- projects/ejb3/trunk/common/src/main/java/org/jboss/ejb3/common/proxy/plugins/async/AsyncProcessor.java	2009-01-12 11:00:57 UTC (rev 82763)
+++ projects/ejb3/trunk/common/src/main/java/org/jboss/ejb3/common/proxy/plugins/async/AsyncProcessor.java	2009-01-12 11:35:36 UTC (rev 82764)
@@ -21,6 +21,7 @@
  */
 package org.jboss.ejb3.common.proxy.plugins.async;
 
+import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ExecutorService;
@@ -161,6 +162,13 @@
          {
             return method.invoke(proxy, args);
          }
+         catch(InvocationTargetException e)
+         {
+            Throwable cause = e.getCause();
+            if(cause instanceof Exception)
+               throw (Exception) cause;
+            throw e;
+         }
          catch (Throwable t)
          {
             throw new Exception("Exception encountered in Asynchronous Invocation", t);

Modified: projects/ejb3/trunk/common/src/test/java/org/jboss/ejb3/test/common/proxy/unit/AsyncTestCase.java
===================================================================
--- projects/ejb3/trunk/common/src/test/java/org/jboss/ejb3/test/common/proxy/unit/AsyncTestCase.java	2009-01-12 11:00:57 UTC (rev 82763)
+++ projects/ejb3/trunk/common/src/test/java/org/jboss/ejb3/test/common/proxy/unit/AsyncTestCase.java	2009-01-12 11:35:36 UTC (rev 82764)
@@ -21,6 +21,9 @@
  */
 package org.jboss.ejb3.test.common.proxy.unit;
 
+import static org.junit.Assert.assertEquals;
+
+import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 
@@ -85,6 +88,34 @@
 
    }
 
+   @Test
+   public void testException() throws Exception
+   {
+      Addable failingBean = new Addable() {
+         public int add(int... args)
+         {
+            throw new RuntimeException("Failed predictably");
+         }
+      };
+      
+      Addable asyncFailingBean = AsyncUtils.mixinAsync(failingBean);
+      
+      asyncFailingBean.add(1, 2, 3);
+      
+      Future<?> futureResult = AsyncUtils.getFutureResult(asyncFailingBean);
+      
+      try
+      {
+         futureResult.get(2, TimeUnit.SECONDS);
+      }
+      catch(ExecutionException e)
+      {
+         Throwable cause = e.getCause();
+         assertEquals(RuntimeException.class, cause.getClass());
+         assertEquals("Failed predictably", cause.getMessage());
+      }
+   }
+   
    // --------------------------------------------------------------------------------||
    // Internal Helper Methods --------------------------------------------------------||
    // --------------------------------------------------------------------------------||




More information about the jboss-cvs-commits mailing list