[hibernate-commits] Hibernate SVN: r10339 - branches/Branch_3_2/Hibernate3/src/org/hibernate/transaction
hibernate-commits at lists.jboss.org
hibernate-commits at lists.jboss.org
Thu Aug 24 11:07:18 EDT 2006
Author: steve.ebersole at jboss.com
Date: 2006-08-24 11:07:03 -0400 (Thu, 24 Aug 2006)
New Revision: 10339
Modified:
branches/Branch_3_2/Hibernate3/src/org/hibernate/transaction/JTATransactionFactory.java
Log:
HHH-2023 : JTATransactionFactory.isTransactionInProgress()
Modified: branches/Branch_3_2/Hibernate3/src/org/hibernate/transaction/JTATransactionFactory.java
===================================================================
--- branches/Branch_3_2/Hibernate3/src/org/hibernate/transaction/JTATransactionFactory.java 2006-08-24 13:36:42 UTC (rev 10338)
+++ branches/Branch_3_2/Hibernate3/src/org/hibernate/transaction/JTATransactionFactory.java 2006-08-24 15:07:03 UTC (rev 10339)
@@ -74,19 +74,34 @@
Context transactionContext,
Transaction transaction) {
try {
- UserTransaction ut;
- if ( transaction != null ) {
- ut = ( ( JTATransaction ) transaction ).getUserTransaction();
- }
- else {
- try {
- ut = ( UserTransaction ) context.lookup( utName );
+ // Essentially:
+ // 1) If we have a local (Hibernate) transaction in progress
+ // and it already has the UserTransaction cached, use that
+ // UserTransaction to determine the status.
+ // 2) If a transaction manager has been located, use
+ // that transaction manager to determine the status.
+ // 3) Finally, as the last resort, try to lookup the
+ // UserTransaction via JNDI and use that to determine the
+ // status.
+ if ( transaction != null ) {
+ UserTransaction ut = ( ( JTATransaction ) transaction ).getUserTransaction();
+ if ( ut != null ) {
+ return JTAHelper.isInProgress( ut.getStatus() );
+ }
+ }
+
+ if ( jdbcContext.getFactory().getTransactionManager() != null ) {
+ return JTAHelper.isInProgress( jdbcContext.getFactory().getTransactionManager().getStatus() );
+ }
+ else {
+ try {
+ UserTransaction ut = ( UserTransaction ) context.lookup( utName );
+ return ut != null && JTAHelper.isInProgress( ut.getStatus() );
}
catch ( NamingException ne ) {
throw new TransactionException( "Unable to locate UserTransaction to check status", ne );
}
- }
- return ut != null && JTAHelper.isInProgress( ut.getStatus() );
+ }
}
catch( SystemException se ) {
throw new TransactionException( "Unable to check transaction status", se );
More information about the hibernate-commits
mailing list