[jboss-cvs] JBossAS SVN: r77489 - in projects/ejb3/trunk/transactions: src/main/java/org/jboss/ejb3/tx and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Aug 26 10:19:20 EDT 2008


Author: wolfc
Date: 2008-08-26 10:19:20 -0400 (Tue, 26 Aug 2008)
New Revision: 77489

Modified:
   projects/ejb3/trunk/transactions/pom.xml
   projects/ejb3/trunk/transactions/src/main/java/org/jboss/ejb3/tx/TxUtil.java
   projects/ejb3/trunk/transactions/src/test/java/org/jboss/ejb3/test/tx/getrollback/unit/GetRollbackTestCase.java
Log:
EJBTHREE-1444: check for lifecycle callback

Modified: projects/ejb3/trunk/transactions/pom.xml
===================================================================
--- projects/ejb3/trunk/transactions/pom.xml	2008-08-26 14:18:38 UTC (rev 77488)
+++ projects/ejb3/trunk/transactions/pom.xml	2008-08-26 14:19:20 UTC (rev 77489)
@@ -93,7 +93,7 @@
     <dependency>
       <groupId>org.jboss.ejb3</groupId>
       <artifactId>jboss-ejb3-interceptors</artifactId>
-      <version>0.13.4</version>
+      <version>0.13.5-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.jboss.javaee</groupId>

Modified: projects/ejb3/trunk/transactions/src/main/java/org/jboss/ejb3/tx/TxUtil.java
===================================================================
--- projects/ejb3/trunk/transactions/src/main/java/org/jboss/ejb3/tx/TxUtil.java	2008-08-26 14:18:38 UTC (rev 77488)
+++ projects/ejb3/trunk/transactions/src/main/java/org/jboss/ejb3/tx/TxUtil.java	2008-08-26 14:19:20 UTC (rev 77489)
@@ -38,6 +38,7 @@
 import org.jboss.aop.joinpoint.MethodInvocation;
 import org.jboss.aspects.currentinvocation.CurrentInvocation;
 import org.jboss.ejb3.interceptors.container.BeanContext;
+import org.jboss.ejb3.interceptors.container.InvocationHelper;
 import org.jboss.logging.Logger;
 import org.jboss.tm.TransactionManagerLocator;
 
@@ -83,6 +84,9 @@
       if (type != TransactionManagementType.CONTAINER)
          throw new IllegalStateException("Container " + advisor.getName() + ": it is illegal to call getRollbackOnly from BMT: " + type);
 
+      if(isLifecycleCallback(currentInvocation))
+         throw new IllegalStateException("getRollbackOnly() not allowed during lifecycle callbacks (EJB3 4.4.1 & 4.5.2)");
+      
       // TODO: we should really ask a TxType object to handle getRollbackOnly()
       if(getTxType(currentInvocation) == TransactionAttributeType.SUPPORTS)
          throw new IllegalStateException("getRollbackOnly() not allowed with TransactionAttributeType.SUPPORTS (EJB 3 13.6.2.9)");
@@ -168,6 +172,11 @@
       return new UserTransactionImpl();   
    }
    
+   private static boolean isLifecycleCallback(Invocation inv)
+   {
+      return InvocationHelper.isLifecycleCallback(inv);
+   }
+   
    public static void setRollbackOnly()
    {
       // getRollbackOnly is not allowed during construction and injection EJB 3 4.4.1 and EJB 3 4.5.2
@@ -180,6 +189,9 @@
       TransactionManagementType type = TxUtil.getTransactionManagementType(advisor);
       if (type != TransactionManagementType.CONTAINER) throw new IllegalStateException("Container " + advisor.getName() + ": it is illegal to call setRollbackOnly from BMT: " + type);
 
+      if(isLifecycleCallback(currentInvocation))
+         throw new IllegalStateException("setRollbackOnly() not allowed during lifecycle callbacks (EJB3 4.4.1 & 4.5.2)");
+      
       try
       {
          TransactionManager tm = TxUtil.getTransactionManager();

Modified: projects/ejb3/trunk/transactions/src/test/java/org/jboss/ejb3/test/tx/getrollback/unit/GetRollbackTestCase.java
===================================================================
--- projects/ejb3/trunk/transactions/src/test/java/org/jboss/ejb3/test/tx/getrollback/unit/GetRollbackTestCase.java	2008-08-26 14:18:38 UTC (rev 77488)
+++ projects/ejb3/trunk/transactions/src/test/java/org/jboss/ejb3/test/tx/getrollback/unit/GetRollbackTestCase.java	2008-08-26 14:19:20 UTC (rev 77489)
@@ -235,6 +235,11 @@
          
          assertTrue(instance.getInstance().prePassivateRan);
       }
+      catch(IllegalStateException e)
+      {
+         // The original intent of the test is document above, but
+         // since we're now following spec you get an IllegalStateException
+      }
       finally
       {
          tm.rollback();




More information about the jboss-cvs-commits mailing list