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) {