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 2015/04/21 11:33:04 UTC

tomee git commit: fixing InterceptorBase exception cache + adding openejb.cdi.jta.exception.client-only flag for an easier tx exception handling

Repository: tomee
Updated Branches:
  refs/heads/master 0e123386c -> 059945c02


fixing InterceptorBase exception cache + adding openejb.cdi.jta.exception.client-only flag for an easier tx exception handling


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/059945c0
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/059945c0
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/059945c0

Branch: refs/heads/master
Commit: 059945c028da440c044471b6cdd252649da33f5b
Parents: 0e12338
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Tue Apr 21 11:32:52 2015 +0200
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Tue Apr 21 11:32:52 2015 +0200

----------------------------------------------------------------------
 .../apache/openejb/cdi/transactional/InterceptorBase.java   | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/059945c0/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 116660a..f583f25 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
@@ -21,6 +21,7 @@ import org.apache.openejb.OpenEJB;
 import org.apache.openejb.SystemException;
 import org.apache.openejb.core.CoreUserTransaction;
 import org.apache.openejb.core.transaction.TransactionPolicy;
+import org.apache.openejb.loader.SystemInstance;
 import org.apache.webbeans.config.WebBeansContext;
 
 import javax.enterprise.inject.spi.AnnotatedMethod;
@@ -34,13 +35,15 @@ import java.io.Serializable;
 import java.lang.reflect.Method;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
 
 import static java.util.Arrays.asList;
 
 public abstract class InterceptorBase implements Serializable {
     private static final IllegalStateException ILLEGAL_STATE_EXCEPTION = new IllegalStateException("Can't use UserTransaction from @Transaction call");
+    private static final boolean HANDLE_EXCEPTION_ONLY_FOR_CLIENT = SystemInstance.get().getOptions().get("openejb.cdi.jta.exception.client-only", false);
 
-    private transient Map<Class<?>, Boolean> rollback = new ConcurrentHashMap<>();
+    private transient ConcurrentMap<Class<?>, Boolean> rollback = new ConcurrentHashMap<>();
 
     protected Object intercept(final InvocationContext ic) throws Exception {
         Exception error = null;
@@ -72,8 +75,8 @@ public abstract class InterceptorBase implements Serializable {
             }
 
             if (policy != null) {
-                if (error != null) {
-                    final Class<? extends Exception> errorClass = error.getClass();
+                if (error != null && (!HANDLE_EXCEPTION_ONLY_FOR_CLIENT || policy.isNewTransaction())) {
+                    final Class<?> errorClass = error.getClass();
                     Boolean doRollback = rollback.get(errorClass);
                     if (doRollback != null) {
                         if (doRollback) {