Repository: tomee Updated Branches: refs/heads/master 2be715d0d -> f271f89a9
TOMEE-2047 dont wrap all exception in TransactionalException Project: http://git-wip-us.apache.org/repos/asf/tomee/repo Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/f271f89a Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/f271f89a Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/f271f89a Branch: refs/heads/master Commit: f271f89a946726c65d0945a5cf26ee34197ca086 Parents: 2be715d Author: rmannibucau <[email protected]> Authored: Fri Jun 2 09:50:53 2017 +0200 Committer: rmannibucau <[email protected]> Committed: Fri Jun 2 09:50:53 2017 +0200 ---------------------------------------------------------------------- .../cdi/transactional/InterceptorBase.java | 6 +++++- .../cdi/transactional/TransactionalTest.java | 21 +++++++++----------- 2 files changed, 14 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tomee/blob/f271f89a/container/openejb-core/src/main/java/org/apache/openejb/cdi/transactional/InterceptorBase.java ---------------------------------------------------------------------- diff --git a/container/openejb-core/src/main/java/org/apache/openejb/cdi/transactional/InterceptorBase.java b/container/openejb-core/src/main/java/org/apache/openejb/cdi/transactional/InterceptorBase.java index 1a97c53..21f0878 100644 --- a/container/openejb-core/src/main/java/org/apache/openejb/cdi/transactional/InterceptorBase.java +++ b/container/openejb-core/src/main/java/org/apache/openejb/cdi/transactional/InterceptorBase.java @@ -30,6 +30,7 @@ import javax.enterprise.inject.spi.CDI; import javax.interceptor.InvocationContext; import javax.transaction.RollbackException; import javax.transaction.TransactionManager; +import javax.transaction.TransactionRequiredException; import javax.transaction.Transactional; import javax.transaction.TransactionalException; import java.io.Serializable; @@ -120,7 +121,10 @@ public abstract class InterceptorBase implements Serializable { } } - throw new TransactionalException(e.getMessage(), error); + if (error == null || TransactionRequiredException.class.isInstance(error)) { + throw new TransactionalException(e.getMessage(), error); + } + throw error; } finally { if (forbidsUt) { CoreUserTransaction.resetError(oldEx); http://git-wip-us.apache.org/repos/asf/tomee/blob/f271f89a/container/openejb-core/src/test/java/org/apache/openejb/cdi/transactional/TransactionalTest.java ---------------------------------------------------------------------- diff --git a/container/openejb-core/src/test/java/org/apache/openejb/cdi/transactional/TransactionalTest.java b/container/openejb-core/src/test/java/org/apache/openejb/cdi/transactional/TransactionalTest.java index 265e5b2..468754b 100644 --- a/container/openejb-core/src/test/java/org/apache/openejb/cdi/transactional/TransactionalTest.java +++ b/container/openejb-core/src/test/java/org/apache/openejb/cdi/transactional/TransactionalTest.java @@ -45,10 +45,8 @@ import static javax.transaction.Transactional.TxType.NOT_SUPPORTED; import static javax.transaction.Transactional.TxType.REQUIRED; import static javax.transaction.Transactional.TxType.REQUIRES_NEW; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotSame; import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @RunWith(ApplicationComposer.class) @@ -67,7 +65,7 @@ public class TransactionalTest { assertNull(OpenEJB.getTransactionManager().getTransaction()); try { bean.dontRollback(); - } catch (final TransactionalException e) { + } catch (final AnException e) { // expected } assertNull(OpenEJB.getTransactionManager().getTransaction()); @@ -128,7 +126,7 @@ public class TransactionalTest { try { bean.anException(); fail(); - } catch (final TransactionalException e) { + } catch (final AnException e) { // no-op } OpenEJB.getTransactionManager().rollback(); @@ -162,7 +160,7 @@ public class TransactionalTest { } }); fail(); - } catch (final TransactionalException e) { + } catch (final AnException e) { // no-op } assertEquals(Status.STATUS_ROLLEDBACK, status.get()); @@ -195,7 +193,7 @@ public class TransactionalTest { } }); fail(); - } catch (final TransactionalException e) { + } catch (final AnCheckedException e) { // no-op } assertEquals(Status.STATUS_COMMITTED, status.get()); @@ -228,7 +226,7 @@ public class TransactionalTest { } }); fail(); - } catch (final TransactionalException e) { + } catch (final AnException e) { // no-op } assertEquals(Status.STATUS_COMMITTED, status.get()); @@ -261,7 +259,7 @@ public class TransactionalTest { } }); fail(); - } catch (final TransactionalException e) { + } catch (final AnCheckedException e) { // no-op } assertEquals(Status.STATUS_COMMITTED, status.get()); @@ -275,7 +273,7 @@ public class TransactionalTest { try { bean.anotherException(status); fail(); - } catch (final TransactionalException e) { + } catch (final AnotherException e) { // no-op } assertEquals(Status.STATUS_COMMITTED, status.get()); @@ -304,9 +302,8 @@ public class TransactionalTest { try { bean.exceptionOnCompletion(); fail(); - } catch (final TransactionalException te) { - assertNotNull(te); - assertTrue(IllegalArgumentException.class.isInstance(te.getCause())); + } catch (final IllegalArgumentException te) { + // ok } }
