[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