Author: nfilotto
Date: 2010-08-13 08:22:34 -0400 (Fri, 13 Aug 2010)
New Revision: 2914
Modified:
kernel/branches/2.3-ISPN/exo.kernel.component.ext.cache.impl.infinispan.v4/src/main/java/org/exoplatform/services/cache/impl/infinispan/ExoCacheFactoryImpl.java
Log:
EXOJCR-802: In case several caches use the same custom configuration, the same cache
manger will be used
Modified:
kernel/branches/2.3-ISPN/exo.kernel.component.ext.cache.impl.infinispan.v4/src/main/java/org/exoplatform/services/cache/impl/infinispan/ExoCacheFactoryImpl.java
===================================================================
---
kernel/branches/2.3-ISPN/exo.kernel.component.ext.cache.impl.infinispan.v4/src/main/java/org/exoplatform/services/cache/impl/infinispan/ExoCacheFactoryImpl.java 2010-08-13
11:56:46 UTC (rev 2913)
+++
kernel/branches/2.3-ISPN/exo.kernel.component.ext.cache.impl.infinispan.v4/src/main/java/org/exoplatform/services/cache/impl/infinispan/ExoCacheFactoryImpl.java 2010-08-13
12:22:34 UTC (rev 2914)
@@ -95,6 +95,11 @@
* The mapping between the cache names and the configuration paths
*/
private final Map<String, String> mappingCacheNameConfig = new
HashMap<String, String>();
+
+ /**
+ * The mapping between the configuration paths and the cache managers
+ */
+ private final Map<String, DefaultCacheManager> mappingConfigPathCacheManager =
new HashMap<String, DefaultCacheManager>();
/**
* The default creator
@@ -245,8 +250,14 @@
// A custom configuration has been set
if (LOG.isInfoEnabled())
LOG.info("A custom configuration has been set for the cache
'" + region + "'.");
- DefaultCacheManager cacheManager =
- new DefaultCacheManager(configManager.getInputStream(customConfig),
false);
+ DefaultCacheManager cacheManager =
mappingConfigPathCacheManager.get(customConfig);
+ if (cacheManager == null)
+ {
+ // No cache manager has been defined so far for this configuration file
+ cacheManager = new
DefaultCacheManager(configManager.getInputStream(customConfig), false);
+ // We register this new cache manager
+ mappingConfigPathCacheManager.put(customConfig, cacheManager);
+ }
conf = cacheManager.getDefaultConfiguration().clone();
}
else