[jboss-cvs] jboss-seam/src/main/org/jboss/seam/util ...
Gavin King
gavin.king at jboss.com
Mon Nov 13 12:29:07 EST 2006
User: gavin
Date: 06/11/13 12:29:07
Modified: src/main/org/jboss/seam/util Transactions.java
Log:
workaround for bug in glassfish, see comments for JBSEAM-456
Revision Changes Path
1.21 +104 -41 jboss-seam/src/main/org/jboss/seam/util/Transactions.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: Transactions.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/util/Transactions.java,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -b -r1.20 -r1.21
--- Transactions.java 8 Nov 2006 17:32:43 -0000 1.20
+++ Transactions.java 13 Nov 2006 17:29:07 -0000 1.21
@@ -1,4 +1,4 @@
-//$Id: Transactions.java,v 1.20 2006/11/08 17:32:43 gavin Exp $
+//$Id: Transactions.java,v 1.21 2006/11/13 17:29:07 gavin Exp $
package org.jboss.seam.util;
import static javax.transaction.Status.STATUS_ACTIVE;
@@ -18,11 +18,11 @@
{
try
{
- getUserTransaction().setRollbackOnly();
+ setUTRollbackOnly();
}
- catch (NamingException ne)
+ catch (NameNotFoundException ne)
{
- EJB.getEJBContext().setRollbackOnly();
+ setEJBCRollbackOnly();
}
}
@@ -30,49 +30,100 @@
{
try
{
- return getUserTransaction().getStatus()==STATUS_ACTIVE;
+ return isUTTransactionActive();
+ }
+ catch (NameNotFoundException ne)
+ {
+ return isEJBCTransactionActive();
+ }
+ //temporary workaround for a bad bug in Glassfish!
+ catch (IllegalStateException ise)
+ {
+ return isEJBCTransactionActive();
+ }
}
- catch (NamingException ne)
+
+ public static boolean isTransactionActiveOrMarkedRollback() throws SystemException, NamingException
{
try
{
- return !EJB.getEJBContext().getRollbackOnly();
+ return isUTTransactionActiveOrMarkedRollback();
}
- catch (IllegalStateException ise)
+ catch (NameNotFoundException ne)
{
- return false;
+ return isEJBCTransactionActiveOrMarkedRollback();
}
+ //temporary workaround for a bad bug in Glassfish!
+ catch (IllegalStateException ise)
+ {
+ return isEJBCTransactionActiveOrMarkedRollback();
}
}
- public static boolean isTransactionActiveOrMarkedRollback() throws SystemException, NamingException
+ public static boolean isTransactionMarkedRollback() throws SystemException, NamingException
{
try
{
- int status = getUserTransaction().getStatus();
- return status==STATUS_ACTIVE || status == STATUS_MARKED_ROLLBACK;
+ return isUTTransactionMarkedRollback();
+ }
+ catch (NameNotFoundException ne)
+ {
+ return isEJBCTransactionMarkedRollback();
+ }
+ //temporary workaround for a bad bug in Glassfish!
+ catch (IllegalStateException ise)
+ {
+ return isEJBCTransactionMarkedRollback();
}
- catch (NamingException ne)
+ }
+
+ private static void setEJBCRollbackOnly() throws NamingException
+ {
+ EJB.getEJBContext().setRollbackOnly();
+ }
+
+ private static void setUTRollbackOnly() throws SystemException, NamingException
+ {
+ getUserTransaction().setRollbackOnly();
+ }
+
+ private static boolean isEJBCTransactionActive() throws NamingException
{
try
{
- EJB.getEJBContext().getRollbackOnly();
- return true;
+ return !EJB.getEJBContext().getRollbackOnly();
}
catch (IllegalStateException ise)
{
return false;
}
}
+
+ private static boolean isUTTransactionActive() throws SystemException, NamingException
+ {
+ return getUserTransaction().getStatus() == STATUS_ACTIVE;
}
- public static boolean isTransactionMarkedRollback() throws SystemException, NamingException
+ private static boolean isEJBCTransactionActiveOrMarkedRollback() throws NamingException
{
try
{
- return getUserTransaction().getStatus() == STATUS_MARKED_ROLLBACK;
+ EJB.getEJBContext().getRollbackOnly();
+ return true;
}
- catch (NamingException ne)
+ catch (IllegalStateException ise)
+ {
+ return false;
+ }
+ }
+
+ private static boolean isUTTransactionActiveOrMarkedRollback() throws SystemException, NamingException
+ {
+ int status = getUserTransaction().getStatus();
+ return status==STATUS_ACTIVE || status == STATUS_MARKED_ROLLBACK;
+ }
+
+ private static boolean isEJBCTransactionMarkedRollback() throws NamingException
{
try
{
@@ -83,12 +134,18 @@
return false;
}
}
+
+ private static boolean isUTTransactionMarkedRollback() throws SystemException, NamingException
+ {
+ return getUserTransaction().getStatus() == STATUS_MARKED_ROLLBACK;
}
public static UserTransaction getUserTransaction() throws NamingException
{
try
{
+ try
+ {
return (UserTransaction) Naming.getInitialContext().lookup(userTransactionName);
}
catch (NameNotFoundException nnfe)
@@ -96,6 +153,12 @@
return (UserTransaction) Naming.getInitialContext().lookup(STANDARD_USER_TRANSACTION_NAME);
}
}
+ //not really necessary, but just in case...
+ catch (IllegalStateException ise)
+ {
+ throw new NameNotFoundException("Lookup " + userTransactionName + " threw IllegalStateException: " + ise.getMessage());
+ }
+ }
private Transactions() {}
More information about the jboss-cvs-commits
mailing list