Author: tom.baeyens(a)jboss.com
Date: 2009-06-22 07:18:53 -0400 (Mon, 22 Jun 2009)
New Revision: 5072
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/tx/jta/JtaTransactionInterceptor.java
Log:
JBPM-2339 JBPM-2322 added support for existing JTA transactions in jboss configuration
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/tx/jta/JtaTransactionInterceptor.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/tx/jta/JtaTransactionInterceptor.java 2009-06-22
11:14:05 UTC (rev 5071)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/tx/jta/JtaTransactionInterceptor.java 2009-06-22
11:18:53 UTC (rev 5072)
@@ -53,6 +53,10 @@
}
log.debug("jta transaction status: "+JtaStatusHelper.toString(status));
+ if (status == Status.STATUS_ACTIVE) {
+ return executeInExistingTx(command);
+ }
+
if ( (status != Status.STATUS_NO_TRANSACTION)
&& (status != Status.STATUS_COMMITTED)
&& (status != Status.STATUS_ROLLEDBACK)
@@ -60,6 +64,14 @@
throw new JbpmException("invalid transaction state:
"+JtaStatusHelper.toString(status));
}
+ return executeInNewTx(command, jtaTransaction, status);
+ }
+
+ protected <T> T executeInExistingTx(Command<T> command) {
+ return next.execute(command);
+ }
+
+ protected <T> T executeInNewTx(Command<T> command, JtaTransaction
jtaTransaction, int status) {
Transaction suspendedTransaction = null;
if ((status == Status.STATUS_COMMITTED) || (status == Status.STATUS_ROLLEDBACK)) {
suspendedTransaction = jtaTransaction.suspend();
@@ -87,5 +99,5 @@
return (T) returnValue;
}
-
+
}