You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2017/06/02 09:40:00 UTC
tomee git commit: TOMEE-2049 fixing @Transactional priority rules
Repository: tomee
Updated Branches:
refs/heads/master 64704e8fb -> 982610c38
TOMEE-2049 fixing @Transactional priority rules
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/982610c3
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/982610c3
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/982610c3
Branch: refs/heads/master
Commit: 982610c386f03683a8062146b866331f109c00ee
Parents: 64704e8
Author: rmannibucau <rm...@apache.org>
Authored: Fri Jun 2 11:39:55 2017 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Fri Jun 2 11:39:55 2017 +0200
----------------------------------------------------------------------
.../openejb/cdi/transactional/InterceptorBase.java | 8 ++++----
.../openejb/cdi/transactional/TransactionalTest.java | 13 +++++++++++++
2 files changed, 17 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/982610c3/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 21f0878..c928805 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
@@ -158,11 +158,11 @@ public abstract class InterceptorBase implements Serializable {
return OpenEJB.getTransactionManager();
}
- private static final class ExceptionPriotiryRules {
+ protected static final class ExceptionPriotiryRules {
private final Class<?>[] includes;
private final Class<?>[] excludes;
- private ExceptionPriotiryRules(final Class<?>[] includes, final Class<?>[] excludes) {
+ protected ExceptionPriotiryRules(final Class<?>[] includes, final Class<?>[] excludes) {
this.includes = includes;
this.excludes = excludes;
}
@@ -176,9 +176,9 @@ public abstract class InterceptorBase implements Serializable {
final int excludeScore = contains(excludes, e);
if (excludeScore < 0) {
- return includeScore >= 0 || isNotChecked(e, exceptionTypes);
+ return includeScore > 0 || isNotChecked(e, exceptionTypes);
}
- return includeScore - excludeScore >= 0;
+ return includeScore - excludeScore > 0;
}
private static int contains(final Class<?>[] list, final Exception e) {
http://git-wip-us.apache.org/repos/asf/tomee/blob/982610c3/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 c5362c0..a0745bb 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
@@ -21,6 +21,7 @@ import org.apache.openejb.jee.EjbJar;
import org.apache.openejb.junit.ApplicationComposer;
import org.apache.openejb.testing.Classes;
import org.apache.openejb.testing.Module;
+import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -37,6 +38,8 @@ import javax.transaction.TransactionSynchronizationRegistry;
import javax.transaction.Transactional;
import javax.transaction.TransactionalException;
import javax.transaction.UserTransaction;
+import java.sql.SQLException;
+import java.sql.SQLWarning;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
@@ -46,8 +49,10 @@ 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.assertFalse;
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)
@@ -62,6 +67,14 @@ public class TransactionalTest {
private TxBean bean;
@Test
+ public void exceptionPriorityRules() {
+ assertFalse(new InterceptorBase.ExceptionPriotiryRules(new Class[] {IllegalArgumentException.class}, new Class[]{IllegalArgumentException.class})
+ .accept(new IllegalArgumentException(""), new Class[0]));
+ assertTrue(new InterceptorBase.ExceptionPriotiryRules(new Class[] {SQLException.class}, new Class[]{SQLWarning.class})
+ .accept(new SQLWarning(""), new Class[0]));
+ }
+
+ @Test
public void dontRollbackCommits() throws SystemException {
assertNull(OpenEJB.getTransactionManager().getTransaction());
try {