[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