01: //$Id: JTAHelper.java 10068 2006-06-28 17:07:06Z steve.ebersole@jboss.com $
02: package org.hibernate.util;
03:
04: import javax.transaction.Status;
05: import javax.transaction.SystemException;
06: import javax.transaction.TransactionManager;
07:
08: import org.hibernate.TransactionException;
09: import org.hibernate.engine.SessionFactoryImplementor;
10:
11: /**
12: * @author Gavin King
13: */
14: public final class JTAHelper {
15:
16: private JTAHelper() {
17: }
18:
19: public static boolean isRollback(int status) {
20: return status == Status.STATUS_MARKED_ROLLBACK
21: || status == Status.STATUS_ROLLING_BACK
22: || status == Status.STATUS_ROLLEDBACK;
23: }
24:
25: public static boolean isInProgress(int status) {
26: return status == Status.STATUS_ACTIVE
27: || status == Status.STATUS_MARKED_ROLLBACK;
28: }
29:
30: /**
31: * Return true if a JTA transaction is in progress
32: * and false in *every* other cases (including in a JDBC transaction).
33: */
34: public static boolean isTransactionInProgress(
35: SessionFactoryImplementor factory) {
36: TransactionManager tm = factory.getTransactionManager();
37: try {
38: return tm != null
39: && isTransactionInProgress(tm.getTransaction());
40: } catch (SystemException se) {
41: throw new TransactionException(
42: "could not obtain JTA Transaction", se);
43: }
44: }
45:
46: public static boolean isTransactionInProgress(
47: javax.transaction.Transaction tx) throws SystemException {
48: return tx != null && JTAHelper.isInProgress(tx.getStatus());
49: }
50:
51: public static boolean isMarkedForRollback(int status) {
52: return status == Status.STATUS_MARKED_ROLLBACK;
53: }
54:
55: public static boolean isMarkedForRollback(
56: javax.transaction.Transaction tx) throws SystemException {
57: return isMarkedForRollback(tx.getStatus());
58: }
59: }
|