[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