You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ol...@apache.org on 2014/05/06 09:16:01 UTC
svn commit: r1592674 - in
/commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache:
JCSCache.java JCSCachingManager.java JCSListener.java
Author: olamy
Date: Tue May 6 07:16:01 2014
New Revision: 1592674
URL: http://svn.apache.org/r1592674
Log:
[JCS-126] JCache allows Closeable for components
Modified:
commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/JCSCache.java
commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/JCSCachingManager.java
commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/JCSListener.java
Modified: commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/JCSCache.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/JCSCache.java?rev=1592674&r1=1592673&r2=1592674&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/JCSCache.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/JCSCache.java Tue May 6 07:16:01 2014
@@ -20,6 +20,8 @@ package org.apache.commons.jcs.jcache;
import static org.apache.commons.jcs.jcache.Asserts.assertNotNull;
+import java.io.Closeable;
+import java.io.IOException;
import java.io.Serializable;
import java.util.Arrays;
import java.util.HashMap;
@@ -38,6 +40,7 @@ import javax.cache.configuration.Complet
import javax.cache.configuration.Configuration;
import javax.cache.configuration.Factory;
import javax.cache.event.CacheEntryEvent;
+import javax.cache.event.CacheEntryListener;
import javax.cache.event.EventType;
import javax.cache.expiry.Duration;
import javax.cache.expiry.EternalExpiryPolicy;
@@ -54,8 +57,12 @@ import javax.management.ObjectName;
import org.apache.commons.jcs.access.CacheAccess;
import org.apache.commons.jcs.access.exception.CacheException;
+import org.apache.commons.jcs.engine.ElementAttributes;
import org.apache.commons.jcs.engine.behavior.ICacheElement;
+import org.apache.commons.jcs.engine.behavior.ICompositeCacheAttributes;
import org.apache.commons.jcs.engine.behavior.IElementSerializer;
+import org.apache.commons.jcs.engine.control.event.behavior.IElementEvent;
+import org.apache.commons.jcs.engine.control.event.behavior.IElementEventHandler;
import org.apache.commons.jcs.engine.control.CompositeCache;
import org.apache.commons.jcs.jcache.jmx.JCSCacheMXBean;
import org.apache.commons.jcs.jcache.jmx.JCSCacheStatisticsMXBean;
@@ -84,10 +91,16 @@ public class JCSCache<K extends Serializ
private final IElementSerializer serializer = new StandardSerializer();
private final ExecutorService pool;
- public JCSCache(final ClassLoader classLoader, final CacheManager mgr, final JCSConfiguration<K, V> configuration,
- final CompositeCache<K, JCSElement<V>> cache, final Properties properties)
+ public JCSCache(final ClassLoader classLoader, final CacheManager mgr,
+ final String cacheName,
+ final JCSConfiguration<K, V> configuration,
+ final CompositeCache<K, JCSElement<V>> cache, final Properties properties)
{
manager = mgr;
+
+ final ICompositeCacheAttributes cacheAttributes = cache.getCacheAttributes();
+ cacheAttributes.setCacheName(cacheName);
+
delegate = new CacheAccess<K, JCSElement<V>>(cache);
config = configuration;
DaemonThreadFactory threadFactory = new DaemonThreadFactory("JCS-JCache-");
@@ -825,12 +838,27 @@ public class JCSCache<K extends Serializ
delegate.dispose();
manager.destroyCache(getName());
+ close(loader);
+ close(writer);
+ close(expiryPolicy);
+ for (final JCSListener<K, V> listener : listeners.values())
+ {
+ close(listener);
+ }
closed = true;
listeners.clear();
JMXs.unregister(cacheConfigObjectName);
JMXs.unregister(cacheStatsObjectName);
}
+ private static void close(final Object potentiallyCloseable)
+ {
+ if (Closeable.class.isInstance(potentiallyCloseable))
+ {
+ Closeable.class.cast(potentiallyCloseable);
+ }
+ }
+
@Override
public boolean isClosed()
{
Modified: commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/JCSCachingManager.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/JCSCachingManager.java?rev=1592674&r1=1592673&r2=1592674&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/JCSCachingManager.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/JCSCachingManager.java Tue May 6 07:16:01 2014
@@ -113,8 +113,11 @@ public class JCSCachingManager implement
final Class<?> valueType = configuration == null ? Object.class : configuration.getValueType();
if (!caches.containsKey(cacheName))
{
- final Cache<K, V> cache = ClassLoaderAwareHandler.newProxy(loader, new JCSCache(loader, this, new JCSConfiguration(
- configuration, keyType, valueType), instance.getCache(cacheName), instance.getConfigurationProperties()), Cache.class);
+ final Cache<K, V> cache = ClassLoaderAwareHandler.newProxy(
+ loader, new JCSCache(loader, this, cacheName,
+ new JCSConfiguration(configuration, keyType, valueType),
+ instance.getCache(cacheName),
+ instance.getConfigurationProperties()), Cache.class);
caches.putIfAbsent(cacheName, cache);
}
else
Modified: commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/JCSListener.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/JCSListener.java?rev=1592674&r1=1592673&r2=1592674&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/JCSListener.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/JCSListener.java Tue May 6 07:16:01 2014
@@ -28,11 +28,12 @@ import javax.cache.event.CacheEntryListe
import javax.cache.event.CacheEntryListenerException;
import javax.cache.event.CacheEntryRemovedListener;
import javax.cache.event.CacheEntryUpdatedListener;
+import java.io.Closeable;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
-public class JCSListener<K extends Serializable, V extends Serializable>
+public class JCSListener<K extends Serializable, V extends Serializable> implements Closeable
{
private final boolean oldValue;
private final boolean synchronous;
@@ -117,8 +118,11 @@ public class JCSListener<K extends Seria
return filtered;
}
+ @Override
public void close()
{
- // no-op
+ if (Closeable.class.isInstance(delegate)) {
+ Closeable.class.cast(delegate);
+ }
}
}