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;
 

Reply via email to