[jboss-cvs] JBossAS SVN: r80108 - projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree1549/unit.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Oct 27 10:24:49 EDT 2008


Author: wolfc
Date: 2008-10-27 10:24:49 -0400 (Mon, 27 Oct 2008)
New Revision: 80108

Modified:
   projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree1549/unit/PassivationDoesNotPreventNewActivityUnitTestCase.java
Log:
EJBTHREE-1549: bean remains in cache

Modified: projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree1549/unit/PassivationDoesNotPreventNewActivityUnitTestCase.java
===================================================================
--- projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree1549/unit/PassivationDoesNotPreventNewActivityUnitTestCase.java	2008-10-27 13:46:54 UTC (rev 80107)
+++ projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree1549/unit/PassivationDoesNotPreventNewActivityUnitTestCase.java	2008-10-27 14:24:49 UTC (rev 80108)
@@ -21,10 +21,18 @@
  */
 package org.jboss.ejb3.core.test.ejbthree1549.unit;
 
+import static org.junit.Assert.assertFalse;
+
+import java.io.Serializable;
+import java.lang.reflect.Field;
+import java.lang.reflect.Proxy;
+import java.util.Map;
+
 import junit.framework.TestCase;
 
 import org.jboss.ejb3.cache.CacheFactoryRegistry;
 import org.jboss.ejb3.cache.persistence.PersistenceManagerFactoryRegistry;
+import org.jboss.ejb3.cache.simple.SimpleStatefulCache;
 import org.jboss.ejb3.common.registrar.spi.Ejb3RegistrarLocator;
 import org.jboss.ejb3.core.test.common.AbstractEJB3TestCase;
 import org.jboss.ejb3.core.test.ejbthree1549.BlockingPersistenceManager;
@@ -33,7 +41,9 @@
 import org.jboss.ejb3.core.test.ejbthree1549.ForcePassivationCacheFactory;
 import org.jboss.ejb3.core.test.ejbthree1549.MyStatefulBean;
 import org.jboss.ejb3.core.test.ejbthree1549.MyStatefulLocal;
+import org.jboss.ejb3.proxy.handler.session.stateful.StatefulLocalProxyInvocationHandler;
 import org.jboss.ejb3.session.SessionContainer;
+import org.jboss.ejb3.stateful.StatefulContainer;
 import org.jboss.logging.Logger;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
@@ -58,6 +68,32 @@
 
    private static final Logger log = Logger.getLogger(PassivationDoesNotPreventNewActivityUnitTestCase.class);
 
+   private static Map getCacheMap(SimpleStatefulCache cache)
+   {
+      try
+      {
+         Field f = SimpleStatefulCache.class.getDeclaredField("cacheMap");
+         f.setAccessible(true);
+         return (Map) f.get(cache);
+      }
+      catch(SecurityException e)
+      {
+         throw new RuntimeException(e);
+      }
+      catch(NoSuchFieldException e)
+      {
+         throw new RuntimeException(e);
+      }
+      catch (IllegalArgumentException e)
+      {
+         throw new RuntimeException(e);
+      }
+      catch (IllegalAccessException e)
+      {
+         throw new RuntimeException(e);
+      }
+   }
+   
    // --------------------------------------------------------------------------------||
    // Tests --------------------------------------------------------------------------||
    // --------------------------------------------------------------------------------||
@@ -211,6 +247,10 @@
          // Wait to allow passivation to actually start
          Thread.sleep(2000);
 
+         StatefulLocalProxyInvocationHandler handler = (StatefulLocalProxyInvocationHandler) Proxy.getInvocationHandler(bean1);
+         Serializable sessionId = handler.getSessionId();
+         assertFalse("bean was not removed from cache", getCacheMap((SimpleStatefulCache) ((StatefulContainer) container).getCache()).containsKey(sessionId));
+         
          /*
           * At this point, we've told the passivation Thread to start, and have 
           * locked it from completing.  So let's try our test in another Thread




More information about the jboss-cvs-commits mailing list