[jboss-cvs] JBossAS SVN: r108177 - in projects/cluster/ha-server-ispn/trunk/src: test/java/org/jboss/ha/ispn and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Sep 16 12:43:43 EDT 2010
Author: pferraro
Date: 2010-09-16 12:43:42 -0400 (Thu, 16 Sep 2010)
New Revision: 108177
Modified:
projects/cluster/ha-server-ispn/trunk/src/main/java/org/jboss/ha/ispn/DefaultCacheContainerRegistry.java
projects/cluster/ha-server-ispn/trunk/src/test/java/org/jboss/ha/ispn/DefaultCacheContainerRegistryTest.java
Log:
Add cachemanager listener to log start/stop of cache.
Modified: projects/cluster/ha-server-ispn/trunk/src/main/java/org/jboss/ha/ispn/DefaultCacheContainerRegistry.java
===================================================================
--- projects/cluster/ha-server-ispn/trunk/src/main/java/org/jboss/ha/ispn/DefaultCacheContainerRegistry.java 2010-09-16 16:40:30 UTC (rev 108176)
+++ projects/cluster/ha-server-ispn/trunk/src/main/java/org/jboss/ha/ispn/DefaultCacheContainerRegistry.java 2010-09-16 16:43:42 UTC (rev 108177)
@@ -34,8 +34,12 @@
import javax.naming.NameNotFoundException;
import javax.naming.NamingException;
-import org.infinispan.manager.CacheContainer;
import org.infinispan.manager.EmbeddedCacheManager;
+import org.infinispan.notifications.Listener;
+import org.infinispan.notifications.cachemanagerlistener.annotation.CacheStarted;
+import org.infinispan.notifications.cachemanagerlistener.annotation.CacheStopped;
+import org.infinispan.notifications.cachemanagerlistener.event.CacheStartedEvent;
+import org.infinispan.notifications.cachemanagerlistener.event.CacheStoppedEvent;
import org.jboss.ha.ispn.config.CacheContainerRegistryConfiguration;
import org.jboss.ha.ispn.config.CacheContainerRegistryConfigurationEntry;
import org.jboss.ha.ispn.config.CacheContainerRegistryConfigurationSource;
@@ -49,7 +53,7 @@
*/
public class DefaultCacheContainerRegistry implements CacheContainerRegistry
{
- private static Logger logger = Logger.getLogger(DefaultCacheContainerRegistry.class);
+ static Logger logger = Logger.getLogger(DefaultCacheContainerRegistry.class);
private static final AtomicReference<CacheContainerRegistry> singleton = new AtomicReference<CacheContainerRegistry>();
@@ -217,8 +221,9 @@
private void start(CacheContainerRegistryEntry entry)
{
- CacheContainer container = entry.getContainer();
+ EmbeddedCacheManager container = entry.getContainer();
container.start();
+ container.addListener(entry);
String jndiName = entry.getJndiName();
@@ -253,7 +258,9 @@
}
}
- entry.getContainer().stop();
+ EmbeddedCacheManager container = entry.getContainer();
+ container.removeListener(entry);
+ container.stop();
}
private void bind(String jndiName, Object value) throws NamingException
@@ -286,7 +293,8 @@
NonSerializableFactory.unbind(name);
}
- private static class CacheContainerRegistryEntry
+ @Listener
+ public static class CacheContainerRegistryEntry
{
private final String id;
private final List<String> aliases;
@@ -320,5 +328,22 @@
{
return this.aliases;
}
+
+ @CacheStarted
+ public void cacheStarted(CacheStartedEvent event)
+ {
+ this.log("Started", event.getCacheName());
+ }
+
+ @CacheStopped
+ public void cacheStopped(CacheStoppedEvent event)
+ {
+ this.log("Stopped", event.getCacheName());
+ }
+
+ private void log(String event, String cacheName)
+ {
+ logger.info(String.format("%s \"%s\" cache from \"%s\" container", event, cacheName, this.id));
+ }
}
}
Modified: projects/cluster/ha-server-ispn/trunk/src/test/java/org/jboss/ha/ispn/DefaultCacheContainerRegistryTest.java
===================================================================
--- projects/cluster/ha-server-ispn/trunk/src/test/java/org/jboss/ha/ispn/DefaultCacheContainerRegistryTest.java 2010-09-16 16:40:30 UTC (rev 108176)
+++ projects/cluster/ha-server-ispn/trunk/src/test/java/org/jboss/ha/ispn/DefaultCacheContainerRegistryTest.java 2010-09-16 16:43:42 UTC (rev 108177)
@@ -133,6 +133,7 @@
EasyMock.expect(factory.createCacheContainer(EasyMock.same(defaultConfig))).andReturn(defaultContainer);
defaultContainer.start();
+ defaultContainer.addListener(EasyMock.anyObject());
EasyMock.expect(context.getNameParser("")).andReturn(parser);
EasyMock.expect(parser.parse("java:CacheManager/default")).andReturn(name);
@@ -145,6 +146,7 @@
EasyMock.expect(factory.createCacheContainer(EasyMock.same(otherConfig))).andReturn(otherContainer);
otherContainer.start();
+ otherContainer.addListener(EasyMock.anyObject());
EasyMock.expect(context.getNameParser("")).andReturn(parser);
EasyMock.expect(parser.parse("java:CacheManager/other")).andReturn(name);
@@ -187,10 +189,14 @@
this.control.reset();
+ Capture<DefaultCacheContainerRegistry.CacheContainerRegistryEntry> capturedEntries = new Capture<DefaultCacheContainerRegistry.CacheContainerRegistryEntry>(CaptureType.ALL);
+
+ context.unbind("java:CacheManager/default");
defaultContainer.stop();
- context.unbind("java:CacheManager/default");
+ defaultContainer.removeListener(EasyMock.capture(capturedEntries));
+ context.unbind("java:CacheManager/other");
otherContainer.stop();
- context.unbind("java:CacheManager/other");
+ otherContainer.removeListener(EasyMock.capture(capturedEntries));
this.control.replay();
@@ -202,6 +208,11 @@
Assert.assertNull(NonSerializableFactory.lookup("java:CacheManager/default"));
Assert.assertNull(NonSerializableFactory.lookup("java:CacheManager/other"));
+ List<DefaultCacheContainerRegistry.CacheContainerRegistryEntry> entries = capturedEntries.getValues();
+
+ Assert.assertSame(defaultContainer, entries.get(0).getContainer());
+ Assert.assertSame(otherContainer, entries.get(1).getContainer());
+
this.control.reset();
}
@@ -250,6 +261,7 @@
EasyMock.expect(factory.createCacheContainer(EasyMock.same(otherConfig))).andReturn(otherContainer);
otherContainer.start();
+ otherContainer.addListener(EasyMock.anyObject());
EasyMock.expect(context.getNameParser("")).andReturn(parser);
EasyMock.expect(parser.parse("java:other")).andReturn(name);
@@ -259,6 +271,7 @@
EasyMock.expect(factory.createCacheContainer(EasyMock.same(defaultConfig))).andReturn(defaultContainer);
defaultContainer.start();
+ defaultContainer.addListener(EasyMock.anyObject());
EasyMock.expect(context.getNameParser("")).andReturn(parser);
EasyMock.expect(parser.parse("java:Infinispan/default")).andReturn(name);
@@ -294,8 +307,6 @@
Assert.assertEquals("java:Infinispan/default", addr.getContent());
Assert.assertSame(registry.getCacheContainer("default"), NonSerializableFactory.lookup("java:Infinispan/default"));
- this.control.reset();
-
Assert.assertSame(defaultContainer, registry.getCacheContainer());
Assert.assertSame(defaultContainer, registry.getCacheContainer(null));
Assert.assertSame(defaultContainer, registry.getCacheContainer("default"));
@@ -306,10 +317,16 @@
Assert.assertSame(otherContainer, registry.getCacheContainer("other.alias1"));
Assert.assertSame(otherContainer, registry.getCacheContainer("other.alias2"));
+ this.control.reset();
+
+ Capture<DefaultCacheContainerRegistry.CacheContainerRegistryEntry> capturedEntries = new Capture<DefaultCacheContainerRegistry.CacheContainerRegistryEntry>(CaptureType.ALL);
+
+ context.unbind("java:Infinispan/default");
defaultContainer.stop();
- context.unbind("java:Infinispan/default");
+ defaultContainer.removeListener(EasyMock.capture(capturedEntries));
+ context.unbind("java:other");
otherContainer.stop();
- context.unbind("java:other");
+ otherContainer.removeListener(EasyMock.capture(capturedEntries));
this.control.replay();
@@ -321,6 +338,11 @@
Assert.assertNull(NonSerializableFactory.lookup("java:other"));
Assert.assertNull(NonSerializableFactory.lookup("java:Infinispan/default"));
+ List<DefaultCacheContainerRegistry.CacheContainerRegistryEntry> entries = capturedEntries.getValues();
+
+ Assert.assertSame(defaultContainer, entries.get(0).getContainer());
+ Assert.assertSame(otherContainer, entries.get(1).getContainer());
+
this.control.reset();
}
}
More information about the jboss-cvs-commits
mailing list