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 <[email protected]>
Authored: Fri Jun 2 11:39:55 2017 +0200
Committer: rmannibucau <[email protected]>
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 {

Reply via email to