Repository: tomee Updated Branches: refs/heads/master 262da7640 -> e16bc39b0
TOMEE-2050 handling txmgr error for ut usage in @Transactional Project: http://git-wip-us.apache.org/repos/asf/tomee/repo Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/e16bc39b Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/e16bc39b Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/e16bc39b Branch: refs/heads/master Commit: e16bc39b097cb37a36bbe1d1a0be584bb80e92db Parents: 262da76 Author: rmannibucau <[email protected]> Authored: Fri Jun 2 13:30:47 2017 +0200 Committer: rmannibucau <[email protected]> Committed: Fri Jun 2 13:30:47 2017 +0200 ---------------------------------------------------------------------- .../openejb/core/CoreUserTransaction.java | 4 ++ .../GeronimoTransactionManagerFactory.java | 50 +++++++++++++------- .../cdi/transactional/TransactionalTest.java | 1 - 3 files changed, 37 insertions(+), 18 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tomee/blob/e16bc39b/container/openejb-core/src/main/java/org/apache/openejb/core/CoreUserTransaction.java ---------------------------------------------------------------------- diff --git a/container/openejb-core/src/main/java/org/apache/openejb/core/CoreUserTransaction.java b/container/openejb-core/src/main/java/org/apache/openejb/core/CoreUserTransaction.java index 5a1653c..9f1747b 100644 --- a/container/openejb-core/src/main/java/org/apache/openejb/core/CoreUserTransaction.java +++ b/container/openejb-core/src/main/java/org/apache/openejb/core/CoreUserTransaction.java @@ -54,6 +54,10 @@ public class CoreUserTransaction implements UserTransaction, Serializable { ERROR.set(old); } + public static RuntimeException error() { + return ERROR.get(); + } + private TransactionManager transactionManager() { if (transactionManager == null) { transactionManager = OpenEJB.getTransactionManager(); http://git-wip-us.apache.org/repos/asf/tomee/blob/e16bc39b/container/openejb-core/src/main/java/org/apache/openejb/resource/GeronimoTransactionManagerFactory.java ---------------------------------------------------------------------- diff --git a/container/openejb-core/src/main/java/org/apache/openejb/resource/GeronimoTransactionManagerFactory.java b/container/openejb-core/src/main/java/org/apache/openejb/resource/GeronimoTransactionManagerFactory.java index 081d0e2..213ed50 100644 --- a/container/openejb-core/src/main/java/org/apache/openejb/resource/GeronimoTransactionManagerFactory.java +++ b/container/openejb-core/src/main/java/org/apache/openejb/resource/GeronimoTransactionManagerFactory.java @@ -32,6 +32,7 @@ import org.apache.openejb.api.jmx.MBean; import org.apache.openejb.api.jmx.ManagedAttribute; import org.apache.openejb.api.jmx.ManagedOperation; import org.apache.openejb.api.resource.DestroyableResource; +import org.apache.openejb.core.CoreUserTransaction; import org.apache.openejb.loader.SystemInstance; import org.apache.openejb.monitoring.LocalMBeanServer; import org.apache.openejb.monitoring.ObjectNameBuilder; @@ -39,6 +40,8 @@ import org.apache.openejb.util.Duration; import org.apache.openejb.util.LogCategory; import org.apache.openejb.util.Logger; +import javax.transaction.NotSupportedException; +import javax.transaction.SystemException; import javax.transaction.xa.XAException; import javax.transaction.xa.XAResource; import java.lang.reflect.Field; @@ -93,29 +96,29 @@ public class GeronimoTransactionManagerFactory { xidFactory = new XidFactoryImpl(tmId == null ? DEFAULT_TM_ID : tmId); txLog = new HOWLLog(bufferClassName == null ? "org.objectweb.howl.log.BlockLogBuffer" : bufferClassName, - bufferSizeKb == 0 ? DEFAULT_BUFFER_SIZE : bufferSizeKb, - checksumEnabled, - adler32Checksum, - flushSleepTimeMilliseconds, - logFileDir, - logFileExt, - logFileName, - maxBlocksPerFile, - maxBuffers, - maxLogFiles, - minBuffers, - threadsWaitingForceThreshold, - xidFactory, - SystemInstance.get().getBase().getDirectory(".")); + bufferSizeKb == 0 ? DEFAULT_BUFFER_SIZE : bufferSizeKb, + checksumEnabled, + adler32Checksum, + flushSleepTimeMilliseconds, + logFileDir, + logFileExt, + logFileName, + maxBlocksPerFile, + maxBuffers, + maxLogFiles, + minBuffers, + threadsWaitingForceThreshold, + xidFactory, + SystemInstance.get().getBase().getDirectory(".")); ((HOWLLog) txLog).doStart(); } final GeronimoTransactionManager geronimoTransactionManager = new DestroyableTransactionManager(defaultTransactionTimeoutSeconds, xidFactory, txLog); final ObjectNameBuilder jmxName = new ObjectNameBuilder("openejb.management") - .set("j2eeType", "TransactionManager"); + .set("j2eeType", "TransactionManager"); LocalMBeanServer.registerDynamicWrapperSilently( - new TransactionManagerMBean(geronimoTransactionManager, defaultTransactionTimeout, txLog), - jmxName.build()); + new TransactionManagerMBean(geronimoTransactionManager, defaultTransactionTimeout, txLog), + jmxName.build()); return geronimoTransactionManager; } @@ -152,6 +155,19 @@ public class GeronimoTransactionManagerFactory { } } } + + @Override + public void begin() throws NotSupportedException, SystemException { + try { + super.begin(); + } catch (final NotSupportedException nse) { + final RuntimeException re = CoreUserTransaction.error(); + if (re != null) { + throw re; + } + throw nse; + } + } } public static class GeronimoXAResourceWrapper implements XAResourceWrapper { http://git-wip-us.apache.org/repos/asf/tomee/blob/e16bc39b/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 a0745bb..4573ac5 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,7 +21,6 @@ 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;
