[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