You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by rm...@apache.org on 2015/02/26 09:46:51 UTC
svn commit: r1662384 - in
/commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi:
CDIJCacheHelper.java CacheResolverFactoryImpl.java
Author: rmannibucau
Date: Thu Feb 26 08:46:50 2015
New Revision: 1662384
URL: http://svn.apache.org/r1662384
Log:
closing cache* if we created it, means for jcache cdi extension closing if using default resolver
Modified:
commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/CDIJCacheHelper.java
commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/CacheResolverFactoryImpl.java
Modified: commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/CDIJCacheHelper.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/CDIJCacheHelper.java?rev=1662384&r1=1662383&r2=1662384&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/CDIJCacheHelper.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/CDIJCacheHelper.java Thu Feb 26 08:46:50 2015
@@ -24,6 +24,7 @@ import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.logging.Logger;
+import javax.annotation.PreDestroy;
import javax.cache.annotation.CacheDefaults;
import javax.cache.annotation.CacheKeyGenerator;
import javax.cache.annotation.CacheResolverFactory;
@@ -39,14 +40,23 @@ import javax.interceptor.InvocationConte
public class CDIJCacheHelper
{
private static final Logger LOGGER = Logger.getLogger(CDIJCacheHelper.class.getName());
+ private static final boolean CLOSE_CACHE = !Boolean.getBoolean("org.apache.commons.jcs.jcache.cdi.skip-close");
- private final CacheResolverFactory defaultCacheResolverFactory = new CacheResolverFactoryImpl();
+ private volatile CacheResolverFactoryImpl defaultCacheResolverFactory = null; // lazy to not create any cache if not needed
private final CacheKeyGeneratorImpl defaultCacheKeyGenerator = new CacheKeyGeneratorImpl();
private final ConcurrentMap<Method, String> generatedNames = new ConcurrentHashMap<Method, String>();
@Inject
private BeanManager beanManager;
+ @PreDestroy
+ private void release() {
+ if (CLOSE_CACHE && defaultCacheResolverFactory != null)
+ {
+ defaultCacheResolverFactory.release();
+ }
+ }
+
public String defaultName(final Method method, final CacheDefaults defaults, final String cacheName)
{
if (!cacheName.isEmpty())
@@ -155,7 +165,7 @@ public class CDIJCacheHelper
return instance(defaultCacheResolverFactory);
}
}
- return defaultCacheResolverFactory;
+ return defaultCacheResolverFactory();
}
public <T> T instance(final Class<T> type)
@@ -167,7 +177,7 @@ public class CDIJCacheHelper
return (T) defaultCacheKeyGenerator;
}
if (CacheResolverFactory.class == type) {
- return (T) defaultCacheResolverFactory;
+ return (T) defaultCacheResolverFactory();
}
return null;
}
@@ -191,4 +201,18 @@ public class CDIJCacheHelper
}
}
}
+
+ private CacheResolverFactoryImpl defaultCacheResolverFactory()
+ {
+ if (defaultCacheResolverFactory != null) {
+ return defaultCacheResolverFactory;
+ }
+ synchronized (this) {
+ if (defaultCacheResolverFactory != null) {
+ return defaultCacheResolverFactory;
+ }
+ defaultCacheResolverFactory = new CacheResolverFactoryImpl();
+ }
+ return defaultCacheResolverFactory;
+ }
}
Modified: commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/CacheResolverFactoryImpl.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/CacheResolverFactoryImpl.java?rev=1662384&r1=1662383&r2=1662384&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/CacheResolverFactoryImpl.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/CacheResolverFactoryImpl.java Thu Feb 26 08:46:50 2015
@@ -32,10 +32,11 @@ import java.lang.annotation.Annotation;
public class CacheResolverFactoryImpl implements CacheResolverFactory
{
private final CacheManager cacheManager;
+ private final CachingProvider provider;
public CacheResolverFactoryImpl()
{
- final CachingProvider provider = Caching.getCachingProvider();
+ provider = Caching.getCachingProvider();
cacheManager = provider.getCacheManager(provider.getDefaultURI(), provider.getDefaultClassLoader());
}
@@ -71,4 +72,10 @@ public class CacheResolverFactoryImpl im
cacheManager.createCache(exceptionCacheName, new MutableConfiguration<Object, Object>().setStoreByValue(false));
return cacheManager.getCache(exceptionCacheName);
}
+
+ public void release()
+ {
+ cacheManager.close();
+ provider.close();
+ }
}