[jboss-cvs] JBossAS SVN: r109140 - projects/cluster/ha-server-ispn/trunk/src/main/java/org/jboss/ha/ispn.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Nov 4 23:10:31 EDT 2010


Author: pferraro
Date: 2010-11-04 23:10:31 -0400 (Thu, 04 Nov 2010)
New Revision: 109140

Modified:
   projects/cluster/ha-server-ispn/trunk/src/main/java/org/jboss/ha/ispn/DefaultCacheContainer.java
Log:
Convert singleton cache manager anonymous class into declared class to eliminate NotCompliantMBeanException

Modified: projects/cluster/ha-server-ispn/trunk/src/main/java/org/jboss/ha/ispn/DefaultCacheContainer.java
===================================================================
--- projects/cluster/ha-server-ispn/trunk/src/main/java/org/jboss/ha/ispn/DefaultCacheContainer.java	2010-11-04 19:51:36 UTC (rev 109139)
+++ projects/cluster/ha-server-ispn/trunk/src/main/java/org/jboss/ha/ispn/DefaultCacheContainer.java	2010-11-05 03:10:31 UTC (rev 109140)
@@ -67,7 +67,7 @@
    }
    
    // Until ISPN-658 is fixed, we need to create a separate adhoc cache manager if requested cache uses DIST mode.
-   private <K, V> Cache<K, V> getCache(final String cacheName, Configuration config)
+   private <K, V> Cache<K, V> getCache(String cacheName, Configuration config)
    {
       if (config.getCacheMode().isDistributed())
       {
@@ -112,42 +112,7 @@
             global.setTransportProperties(properties);
             
             // Create single use cache manager
-            container = new DefaultCacheManager(global, config, false)
-            {
-               /**
-                * {@inheritDoc}
-                * @see org.infinispan.manager.DefaultCacheManager#getCache(java.lang.String)
-                */
-               @Override
-               public <KK, VV> Cache<KK, VV> getCache(String name)
-               {
-                  if (cacheName.equals(name))
-                  {
-                     return super.getCache(CacheContainer.DEFAULT_CACHE_NAME);
-                  }
-                  
-                  return DefaultCacheContainer.this.getCache(cacheName);
-               }
-
-               /**
-                * {@inheritDoc}
-                * @see org.infinispan.manager.DefaultCacheManager#addListener(java.lang.Object)
-                */
-               @Override
-               public void addListener(Object listener)
-               {
-                  super.addListener(listener);
-                  // This is hacky...
-                  // Better solution - use custom notifier that allows
-                  // some level of control over listeners order
-                  if (listener != DefaultCacheContainer.this)
-                  {
-                     // Make sure our listener is last since our listener stops the container!
-                     super.removeListener(DefaultCacheContainer.this);
-                     super.addListener(DefaultCacheContainer.this);
-                  }
-               }
-            };
+            container = new SingletonCacheManager(this, cacheName, global, config);
             
             EmbeddedCacheManager existing = this.containers.putIfAbsent(clusterName, container);
             
@@ -274,4 +239,57 @@
       
       manager.stop();
    }
+   
+   static class SingletonCacheManager extends DefaultCacheManager
+   {
+      private final CacheContainer parent;
+      private final String cacheName;
+      
+      /**
+       * Creates a new SingletonCacheManager
+       * @param globalConfiguration
+       * @param defaultConfiguration
+       */
+      SingletonCacheManager(CacheContainer parent, String cacheName, GlobalConfiguration globalConfiguration, Configuration defaultConfiguration)
+      {
+         super(globalConfiguration, defaultConfiguration, false);
+         
+         this.parent = parent;
+         this.cacheName = cacheName;
+      }
+      
+      /**
+       * {@inheritDoc}
+       * @see org.infinispan.manager.DefaultCacheManager#getCache(java.lang.String)
+       */
+      @Override
+      public <K, V> Cache<K, V> getCache(String name)
+      {
+         if (this.cacheName.equals(name))
+         {
+            return super.getCache(CacheContainer.DEFAULT_CACHE_NAME);
+         }
+         
+         return this.parent.getCache(this.cacheName);
+      }
+
+      /**
+       * {@inheritDoc}
+       * @see org.infinispan.manager.DefaultCacheManager#addListener(java.lang.Object)
+       */
+      @Override
+      public void addListener(Object listener)
+      {
+         super.addListener(listener);
+         // This is hacky...
+         // Better solution - use custom notifier that allows
+         // some level of control over listeners order
+         if (listener != this.parent)
+         {
+            // Make sure our listener is last since our listener stops the container!
+            super.removeListener(this.parent);
+            super.addListener(this.parent);
+         }
+      }
+   }
 }



More information about the jboss-cvs-commits mailing list