[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