[jboss-cvs] JBossAS SVN: r71449 - in projects/ejb3/branches/cluster-dev/ejb3-cache/src: main/java/org/jboss/ejb3/cache/impl/factory and 3 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Sun Mar 30 11:04:44 EDT 2008


Author: bstansberry at jboss.com
Date: 2008-03-30 11:04:43 -0400 (Sun, 30 Mar 2008)
New Revision: 71449

Modified:
   projects/ejb3/branches/cluster-dev/ejb3-cache/src/main/java/org/jboss/ejb3/cache/impl/backing/SimplePassivatingIntegratedObjectStore.java
   projects/ejb3/branches/cluster-dev/ejb3-cache/src/main/java/org/jboss/ejb3/cache/impl/factory/GroupAwareCacheFactory.java
   projects/ejb3/branches/cluster-dev/ejb3-cache/src/main/java/org/jboss/ejb3/cache/spi/impl/AbstractPassivatingIntegratedObjectStore.java
   projects/ejb3/branches/cluster-dev/ejb3-cache/src/test/java/org/jboss/ejb3/test/cache/distributed/MockJBCIntegratedObjectStore.java
   projects/ejb3/branches/cluster-dev/ejb3-cache/src/test/java/org/jboss/ejb3/test/cache/mock/MockBeanContainer.java
   projects/ejb3/branches/cluster-dev/ejb3-cache/src/test/java/org/jboss/ejb3/test/cache/mock/MockStatefulObjectFactory.java
Log:
[EJBTHREE-1026] Refactor abstract passivation impl

Modified: projects/ejb3/branches/cluster-dev/ejb3-cache/src/main/java/org/jboss/ejb3/cache/impl/backing/SimplePassivatingIntegratedObjectStore.java
===================================================================
--- projects/ejb3/branches/cluster-dev/ejb3-cache/src/main/java/org/jboss/ejb3/cache/impl/backing/SimplePassivatingIntegratedObjectStore.java	2008-03-30 15:02:32 UTC (rev 71448)
+++ projects/ejb3/branches/cluster-dev/ejb3-cache/src/main/java/org/jboss/ejb3/cache/impl/backing/SimplePassivatingIntegratedObjectStore.java	2008-03-30 15:04:43 UTC (rev 71449)
@@ -170,8 +170,11 @@
    }   
    
    @Override
-   protected void processPassivation(Object key)
+   protected void processPassivation(Object key, long lastUse)
    {
+      if (!isRunning())
+         return;
+      
       // If we are for groups we shouldn't be getting a processPassivation
       // call at all, but just to be safe we'll ignore it
       if (!isForGroups())
@@ -181,8 +184,11 @@
    }
    
    @Override
-   protected void processExpiration(Object key)
+   protected void processExpiration(Object key, long lastUse)
    {
+      if (!isRunning())
+         return;
+      
       getPassivatingCache().remove(key);
    }
 

Modified: projects/ejb3/branches/cluster-dev/ejb3-cache/src/main/java/org/jboss/ejb3/cache/impl/factory/GroupAwareCacheFactory.java
===================================================================
--- projects/ejb3/branches/cluster-dev/ejb3-cache/src/main/java/org/jboss/ejb3/cache/impl/factory/GroupAwareCacheFactory.java	2008-03-30 15:02:32 UTC (rev 71448)
+++ projects/ejb3/branches/cluster-dev/ejb3-cache/src/main/java/org/jboss/ejb3/cache/impl/factory/GroupAwareCacheFactory.java	2008-03-30 15:04:43 UTC (rev 71449)
@@ -44,6 +44,7 @@
 import org.jboss.ejb3.cache.spi.SerializationGroup;
 import org.jboss.ejb3.cache.spi.SerializationGroupMember;
 import org.jboss.ejb3.cache.spi.impl.AbstractStatefulCacheFactory;
+import org.jboss.logging.Logger;
 
 /**
  * {@link StatefulCacheFactory} implementation that can return a group-aware 
@@ -57,6 +58,8 @@
 public class GroupAwareCacheFactory<T extends CacheItem> 
    extends AbstractStatefulCacheFactory<T>
 {
+   private static final Logger log = Logger.getLogger(GroupAwareCacheFactory.class);
+   
    private final Map<String, GroupCacheTracker> groupCaches;
    private final IntegratedObjectStoreSource<T> storeSource;
    
@@ -92,7 +95,7 @@
          GroupCacheTracker tracker = groupCaches.get(configName);
          if (tracker == null)
          {
-            groupCache = createGroupCache(containerName, configName, cacheConfig);
+            groupCache = createGroupCache(configName, cacheConfig);
             listener = new GroupMemberCacheLifecycleListener(configName);
             groupCaches.put(configName, new GroupCacheTracker(groupCache, listener));
          }
@@ -134,16 +137,17 @@
       backingCache.addLifecycleListener(listener);
       
       // Finally, the front-end cache
-      return new GroupAwareTransactionalCache<T, SerializationGroupMember<T>>(backingCache, getTransactionManager(), getSynchronizationCoordinator(), getStrictGroups());
+      Cache<T> cache = new GroupAwareTransactionalCache<T, SerializationGroupMember<T>>(backingCache, getTransactionManager(), getSynchronizationCoordinator(), getStrictGroups());
+      
+      log.debug("Created cache for " + containerName);
+      
+      return cache;      
    }
 
-   private PassivatingBackingCache<T, SerializationGroup<T>> createGroupCache(String name, String configName, CacheConfig cacheConfig)
+   private PassivatingBackingCache<T, SerializationGroup<T>> createGroupCache(String configName, CacheConfig cacheConfig)
    {
-      SerializationGroupContainer<T> container = new SerializationGroupContainer<T>();
-      StatefulObjectFactory<SerializationGroup<T>> factory = container;
-      PassivationManager<SerializationGroup<T>> passivationManager = container;
       PassivatingIntegratedObjectStore<T, SerializationGroup<T>> store = 
-         storeSource.createGroupIntegratedObjectStore(name, configName, cacheConfig, 
+         storeSource.createGroupIntegratedObjectStore(configName, configName, cacheConfig, 
                                                       getTransactionManager(), 
                                                       getSynchronizationCoordinator());
     
@@ -151,11 +155,15 @@
       // function of the caches for the members
       store.setInterval(0);
       
+      SerializationGroupContainer<T> container = new SerializationGroupContainer<T>();
+      
       PassivatingBackingCache<T, SerializationGroup<T>> groupCache =
-         new PassivatingBackingCacheImpl<T, SerializationGroup<T>>(factory, passivationManager, store);
+         new PassivatingBackingCacheImpl<T, SerializationGroup<T>>(container, container, store);
       
       container.setGroupCache(groupCache);
       
+      log.debug("Created groupCache for " + configName);
+      
       return groupCache;
    }
    
@@ -170,7 +178,8 @@
          if (tracker.incrementLiveMemberCount() == 1)
          {
             // First group member cache is about to start; we need to
-            // start the groupCache
+            // start the groupCache            
+            log.debug("Starting groupCache for " + cacheConfigName);
             tracker.groupCache.start();
          }
       }
@@ -187,7 +196,8 @@
          if (tracker.decrementLiveMemberCount() == 0)
          {
             // All group member caches have stopped; we need to
-            // stop the groupCache
+            // stop the groupCache           
+            log.debug("Stopping groupCache for " + cacheConfigName);
             tracker.groupCache.stop();
          }
       }

Modified: projects/ejb3/branches/cluster-dev/ejb3-cache/src/main/java/org/jboss/ejb3/cache/spi/impl/AbstractPassivatingIntegratedObjectStore.java
===================================================================
--- projects/ejb3/branches/cluster-dev/ejb3-cache/src/main/java/org/jboss/ejb3/cache/spi/impl/AbstractPassivatingIntegratedObjectStore.java	2008-03-30 15:02:32 UTC (rev 71448)
+++ projects/ejb3/branches/cluster-dev/ejb3-cache/src/main/java/org/jboss/ejb3/cache/spi/impl/AbstractPassivatingIntegratedObjectStore.java	2008-03-30 15:04:43 UTC (rev 71449)
@@ -39,7 +39,7 @@
 public abstract class AbstractPassivatingIntegratedObjectStore<C extends CacheItem, T extends PassivatingBackingCacheEntry<C>, K>
       implements PassivatingIntegratedObjectStore<C, T>
 {
-   private static final Logger log = Logger.getLogger(AbstractPassivatingIntegratedObjectStore.class);
+   protected Logger log = Logger.getLogger(getClass().getName());
    
    /**
     * Support callbacks when our SessionTimeoutThread decides to
@@ -53,7 +53,7 @@
    private long expirationTimeSeconds;   
    private PassivationExpirationRunner sessionTimeoutRunner;
    private final String name;
-   private boolean stopped = true;
+   private boolean running = true;
    
    /**
     * Create a new AbstractPassivatingIntegratedObjectStore.
@@ -77,13 +77,19 @@
    /**
     * Invoked by {@link #processPassivationExpiration()} to indicate the
     * item associated with the given key needs to be passivated.
+    * 
+    * @param key  key for the item
+    * @param lastUse time item was last used
     */
-   protected abstract void processPassivation(K key);
+   protected abstract void processPassivation(K key, long lastUse);
    /**
     * Invoked by {@link #processPassivationExpiration()} to indicate the
     * item associated with the given key needs to be expired.
+    * 
+    * @param key  key for the item
+    * @param lastUse time item was last used
     */
-   protected abstract void processExpiration(K key);
+   protected abstract void processExpiration(K key, long lastUse);
 
    /**
     * Get a set of {@link CacheableTimestamp} representing the items currently
@@ -119,11 +125,13 @@
 
    public void start()
    {    
+      log.debug("Starting store " + name);
+      
       internalStart();
       
-      stopped = false;
+      running = true;
       
-      log.debug("Started " + name);
+      log.debug("Started store " + name);
    }
    
    protected void internalStart()
@@ -143,11 +151,13 @@
 
    public void stop()
    {     
-      internalStop();
+      log.debug("Stopping store " + name);
       
-      stopped = true;
+      running = false;
       
-      log.debug("Stopped " + name);
+      internalStop();      
+      
+      log.debug("Stopped store " + name);
    }
    
    protected void internalStop()
@@ -187,7 +197,7 @@
       if (forGroups)
          return;
       
-      if (!stopped)
+      if (running)
       {
          try
          {
@@ -199,7 +209,7 @@
          }
       }
       
-      if (!stopped)
+      if (running)
       {
          try
          {
@@ -252,9 +262,9 @@
       return name;
    }
 
-   public boolean isStopped()
+   public boolean isRunning()
    {
-      return stopped;
+      return running;
    }
 
    public void setMaxSize(int maxSize)
@@ -278,9 +288,9 @@
          {
             try
             {
-               if (minRemovalUse >= ts.getLastUsed())
+               if (running && minRemovalUse >= ts.getLastUsed())
                {
-                  processExpiration(ts.getId());
+                  processExpiration(ts.getId(), ts.getLastUsed());
                }
                else
                {
@@ -310,10 +320,10 @@
          {
             try
             {
-               if (overCount > 0 || minPassUse >= ts.getLastUsed())
+               if (running && (overCount > 0 || minPassUse >= ts.getLastUsed()))
                {
                   log.trace("attempting to passivate " + ts.getId());
-                  processPassivation(ts.getId());
+                  processPassivation(ts.getId(), ts.getLastUsed());
                   overCount--;
                }
                else

Modified: projects/ejb3/branches/cluster-dev/ejb3-cache/src/test/java/org/jboss/ejb3/test/cache/distributed/MockJBCIntegratedObjectStore.java
===================================================================
--- projects/ejb3/branches/cluster-dev/ejb3-cache/src/test/java/org/jboss/ejb3/test/cache/distributed/MockJBCIntegratedObjectStore.java	2008-03-30 15:02:32 UTC (rev 71448)
+++ projects/ejb3/branches/cluster-dev/ejb3-cache/src/test/java/org/jboss/ejb3/test/cache/distributed/MockJBCIntegratedObjectStore.java	2008-03-30 15:04:43 UTC (rev 71449)
@@ -333,13 +333,13 @@
    }
 
    @Override
-   protected void processExpiration(Object key)
+   protected void processExpiration(Object key, long lastUse)
    {
       remove(key);      
    }
 
    @Override
-   protected void processPassivation(Object key)
+   protected void processPassivation(Object key, long lastUse)
    {
       getPassivatingCache().passivate(key);      
    }

Modified: projects/ejb3/branches/cluster-dev/ejb3-cache/src/test/java/org/jboss/ejb3/test/cache/mock/MockBeanContainer.java
===================================================================
--- projects/ejb3/branches/cluster-dev/ejb3-cache/src/test/java/org/jboss/ejb3/test/cache/mock/MockBeanContainer.java	2008-03-30 15:02:32 UTC (rev 71448)
+++ projects/ejb3/branches/cluster-dev/ejb3-cache/src/test/java/org/jboss/ejb3/test/cache/mock/MockBeanContainer.java	2008-03-30 15:04:43 UTC (rev 71449)
@@ -30,6 +30,7 @@
 import org.jboss.ejb3.cache.api.StatefulCacheFactory;
 import org.jboss.ejb3.cache.api.StatefulCacheFactoryRegistry;
 import org.jboss.ejb3.cache.api.StatefulObjectFactory;
+import org.jboss.logging.Logger;
 
 /**
  * @author Brian Stansberry
@@ -37,6 +38,8 @@
  */
 public class MockBeanContainer
 {
+   private static final Logger log = Logger.getLogger(MockBeanContainer.class);   
+   
    private final String containerName;
    private final String cacheFactoryName;
    private final StatefulCacheFactoryRegistry<MockBeanContext> cacheFactoryRegistry;
@@ -66,16 +69,24 @@
    }
    
    public void start() throws Exception
-   {
+   {      
+      log.debug("Starting container " + containerName);
+      
       StatefulCacheFactory<MockBeanContext> cacheFactory = cacheFactoryRegistry.getCacheFactory(cacheFactoryName);
       cache = cacheFactory.createCache(containerName, objectFactory, passivationManager, cacheConfig);
       cache.start();
+      
+      log.debug("Started container " + containerName);
    }
    
    public void stop()
-   {
+   {      
+      log.debug("Starting container " + containerName);     
+      
       cache.stop();
       MockRegistry.remove(containerName);
+      
+      log.debug("Started container " + containerName);
    }
    
    public String getName()

Modified: projects/ejb3/branches/cluster-dev/ejb3-cache/src/test/java/org/jboss/ejb3/test/cache/mock/MockStatefulObjectFactory.java
===================================================================
--- projects/ejb3/branches/cluster-dev/ejb3-cache/src/test/java/org/jboss/ejb3/test/cache/mock/MockStatefulObjectFactory.java	2008-03-30 15:02:32 UTC (rev 71448)
+++ projects/ejb3/branches/cluster-dev/ejb3-cache/src/test/java/org/jboss/ejb3/test/cache/mock/MockStatefulObjectFactory.java	2008-03-30 15:04:43 UTC (rev 71449)
@@ -25,6 +25,7 @@
 import java.util.Map;
 
 import org.jboss.ejb3.cache.api.StatefulObjectFactory;
+import org.jboss.logging.Logger;
 
 
 /**
@@ -33,6 +34,8 @@
 public class MockStatefulObjectFactory 
    implements StatefulObjectFactory<MockBeanContext>
 {
+   private static final Logger log = Logger.getLogger(MockStatefulObjectFactory.class);   
+   
    private final MockBeanContainer container;
    
    private int creationCount;
@@ -59,9 +62,8 @@
             xpc = new MockXPC(container.getXPCName());
          }
          ctx.addExtendedPersistenceContext(container.getXPCName(), xpc);
-      }
+      }      
       
-      
       // Here we mock creating nested beans
       for (MockBeanContainer childContainer : container.getChildren())
       {
@@ -69,17 +71,20 @@
       }
       
       creationCount++;
+      
+      log.trace("Created context " + ctx.getId() + " for " + container.getName());
+      
       return ctx;
    }
 
    public void destroy(MockBeanContext ctx)
    {
-      ctx.remove();
+      Object id = ctx.getId();
+      ctx.remove();      
       destroyCount++;
+      log.trace("Destroyed context " + id + " for " + container.getName());
    }
 
-
-
    public MockBeanContainer getContainer()
    {
       return container;




More information about the jboss-cvs-commits mailing list