[jboss-cvs] JBossAS SVN: r78711 - in projects/ejb3/trunk/core/src: test/java/org/jboss/ejb3/core/test/ejbthree670 and 1 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Sep 19 08:45:49 EDT 2008
Author: wolfc
Date: 2008-09-19 08:45:48 -0400 (Fri, 19 Sep 2008)
New Revision: 78711
Modified:
projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateful/StatefulRemoveInterceptor.java
projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree670/MyStateful21Bean.java
projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree670/MyStatefulBean.java
projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree670/unit/PreDestroyCallsTestCase.java
Log:
EJBTHREE-670: not invoking pre-destroy in StatefulRemoveInterceptor
Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateful/StatefulRemoveInterceptor.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateful/StatefulRemoveInterceptor.java 2008-09-19 12:45:00 UTC (rev 78710)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateful/StatefulRemoveInterceptor.java 2008-09-19 12:45:48 UTC (rev 78711)
@@ -22,13 +22,14 @@
package org.jboss.ejb3.stateful;
import java.lang.reflect.Method;
+
import javax.transaction.RollbackException;
import javax.transaction.Synchronization;
import javax.transaction.SystemException;
import javax.transaction.Transaction;
+import org.jboss.aop.joinpoint.Invocation;
import org.jboss.aop.joinpoint.MethodInvocation;
-import org.jboss.aop.joinpoint.Invocation;
import org.jboss.ejb3.aop.AbstractInterceptor;
import org.jboss.ejb3.tx.TxUtil;
import org.jboss.logging.Logger;
@@ -76,18 +77,18 @@
{
try
{
- StatefulBeanContext ctx = container.getCache().get(id);
- container.invokePreDestroy(ctx);
+ container.getCache().remove(id);
}
- catch (Throwable t)
+ catch(Throwable t)
{
- if (!retainIfException)
- {
- container.getCache().remove(id);
- }
+ // An exception thrown from afterCompletion is gobbled up
+ log.error("Removing bean " + id + " from " + container + " failed", t);
+ if(t instanceof Error)
+ throw (Error) t;
+ if(t instanceof RuntimeException)
+ throw (RuntimeException) t;
throw new RuntimeException(t);
}
- container.getCache().remove(id);
}
}
Modified: projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree670/MyStateful21Bean.java
===================================================================
--- projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree670/MyStateful21Bean.java 2008-09-19 12:45:00 UTC (rev 78710)
+++ projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree670/MyStateful21Bean.java 2008-09-19 12:45:48 UTC (rev 78711)
@@ -47,7 +47,7 @@
private static final Logger log = Logger.getLogger(MyStateful21Bean.class);
private String name;
- private int preDestroyCalls = 0;
+ public static int preDestroyCalls = 0;
public void ejbActivate() throws EJBException, RemoteException
{
Modified: projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree670/MyStatefulBean.java
===================================================================
--- projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree670/MyStatefulBean.java 2008-09-19 12:45:00 UTC (rev 78710)
+++ projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree670/MyStatefulBean.java 2008-09-19 12:45:48 UTC (rev 78711)
@@ -41,7 +41,7 @@
private static final Logger log = Logger.getLogger(MyStatefulBean.class);
private String name;
- private int preDestroyCalls = 0;
+ public static int preDestroyCalls = 0;
@PreDestroy
public void preDestroy()
Modified: projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree670/unit/PreDestroyCallsTestCase.java
===================================================================
--- projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree670/unit/PreDestroyCallsTestCase.java 2008-09-19 12:45:00 UTC (rev 78710)
+++ projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree670/unit/PreDestroyCallsTestCase.java 2008-09-19 12:45:48 UTC (rev 78711)
@@ -27,6 +27,8 @@
import java.util.ArrayList;
import java.util.List;
+import javax.ejb.NoSuchEJBException;
+import javax.naming.NamingException;
import javax.transaction.TransactionManager;
import org.jboss.ejb3.core.test.common.AbstractEJB3TestCase;
@@ -37,6 +39,7 @@
import org.jboss.ejb3.core.test.ejbthree670.MyStatefulBean;
import org.jboss.ejb3.session.SessionContainer;
import org.junit.AfterClass;
+import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -60,6 +63,13 @@
AbstractEJB3TestCase.afterClass();
}
+ @Before
+ public void before()
+ {
+ MyStateful21Bean.preDestroyCalls = 0;
+ MyStatefulBean.preDestroyCalls = 0;
+ }
+
@BeforeClass
public static void beforeClass() throws Exception
{
@@ -69,8 +79,7 @@
containers.add(deploySessionEjb(MyStateful21Bean.class));
}
- @Test
- public void test1() throws Exception
+ private MyStateful runMyStatefulTest() throws NamingException
{
MyStateful session = (MyStateful) getInitialContext().lookup("MyStatefulBean/remote");
session.setName("Test");
@@ -86,9 +95,26 @@
fail("pre destroy called multiple times");
throw e;
}
+ return session;
}
@Test
+ public void test1() throws Exception
+ {
+ MyStateful session = runMyStatefulTest();
+ try
+ {
+ session.remove();
+ fail("Should have thrown NoSuchEJBException");
+ }
+ catch(NoSuchEJBException e)
+ {
+ // okay
+ }
+ assertEquals("number of PreDestroy calls", 1, MyStatefulBean.preDestroyCalls);
+ }
+
+ @Test
public void test21() throws Exception
{
MyStateful21Home home = (MyStateful21Home) getInitialContext().lookup("MyStateful21Bean/home");
@@ -106,6 +132,7 @@
fail("pre destroy called multiple times");
throw e;
}
+ assertEquals("number of PreDestroy calls", 1, MyStateful21Bean.preDestroyCalls);
}
@Test
@@ -126,20 +153,32 @@
fail("pre destroy called multiple times");
throw e;
}
+ assertEquals("number of PreDestroy calls", 1, MyStateful21Bean.preDestroyCalls);
}
@Test
public void testWithInTransaction() throws Exception
{
+ MyStateful session;
TransactionManager tm = lookup("java:/TransactionManager", TransactionManager.class);
tm.begin();
try
{
- test1();
+ session = runMyStatefulTest();
}
finally
{
tm.rollback();
}
+ try
+ {
+ session.remove();
+ fail("Should have thrown NoSuchEJBException");
+ }
+ catch(NoSuchEJBException e)
+ {
+ // okay
+ }
+ assertEquals("number of PreDestroy calls", 1, MyStatefulBean.preDestroyCalls);
}
}
More information about the jboss-cvs-commits
mailing list