Author: olamy
Date: Sun Apr 27 23:47:56 2014
New Revision: 1590529
URL: http://svn.apache.org/r1590529
Log:
one more hack for a tck
Modified:
commons/proper/jcs/trunk/src/java/org/apache/commons/jcs/jcache/JCSCache.java
commons/proper/jcs/trunk/src/java/org/apache/commons/jcs/jcache/JCSConfiguration.java
commons/proper/jcs/trunk/src/java/org/apache/commons/jcs/jcache/JCSListener.java
commons/proper/jcs/trunk/tck.sh (contents, props changed)
Modified:
commons/proper/jcs/trunk/src/java/org/apache/commons/jcs/jcache/JCSCache.java
URL:
http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/java/org/apache/commons/jcs/jcache/JCSCache.java?rev=1590529&r1=1590528&r2=1590529&view=diff
==============================================================================
---
commons/proper/jcs/trunk/src/java/org/apache/commons/jcs/jcache/JCSCache.java
(original)
+++
commons/proper/jcs/trunk/src/java/org/apache/commons/jcs/jcache/JCSCache.java
Sun Apr 27 23:47:56 2014
@@ -41,7 +41,7 @@ import static org.apache.commons.jcs.jca
public class JCSCache<K extends Serializable, V extends Serializable, C
extends CompleteConfiguration<K, V>> implements Cache<K, V> {
private final CacheAccess<K, JCSElement<V>> delegate;
private final CacheManager manager;
- private final C config;
+ private final JCSConfiguration<K, V> config;
private final CacheLoader<K, V> loader;
private final CacheWriter<? super K, ? super V> writer;
private final ExpiryPolicy expiryPolicy;
@@ -51,7 +51,7 @@ public class JCSCache<K extends Serializ
private final Map<CacheEntryListenerConfiguration<K, V>, JCSListener<K,
V>> listeners = new ConcurrentHashMap<CacheEntryListenerConfiguration<K, V>,
JCSListener<K, V>>();
private final Statistics statistics = new Statistics();
- public JCSCache(final CacheManager mgr, final C configuration, final
CompositeCache<K, JCSElement<V>> cache) {
+ public JCSCache(final CacheManager mgr, final JCSConfiguration<K, V>
configuration, final CompositeCache<K, JCSElement<V>> cache) {
manager = mgr;
delegate = new CacheAccess<K, JCSElement<V>>(cache);
config = configuration;
@@ -77,6 +77,10 @@ public class JCSCache<K extends Serializ
expiryPolicy = expiryPolicyFactory.create();
}
+ for (final CacheEntryListenerConfiguration<K, V> listener :
config.getCacheEntryListenerConfigurations()) {
+ listeners.put(listener, new JCSListener<K, V>(listener));
+ }
+
statistics.setActive(config.isStatisticsEnabled());
final String mgrStr =
manager.getURI().toString().replaceAll(",|:|=|\n", ".");
@@ -253,10 +257,12 @@ public class JCSCache<K extends Serializ
assertNotClosed();
assertNotNull(key, "key");
+ final JCSElement<V> v = delegate.get(key);
+ final V value = v != null && v.getElement() != null ? v.getElement() :
null;
final boolean remove = delegate.getCacheControl().remove(key);
for (final JCSListener<K, V> listener : listeners.values()) {
listener.onRemoved(Arrays.<CacheEntryEvent<? extends K, ? extends
V>>asList(
- new JCSCacheEntryEvent<K, V>(this, EventType.REMOVED,
null, key, null)));
+ new JCSCacheEntryEvent<K, V>(this, EventType.REMOVED,
null, key, value)));
}
return remove;
}
@@ -440,13 +446,18 @@ public class JCSCache<K extends Serializ
@Override
public void registerCacheEntryListener(final
CacheEntryListenerConfiguration<K, V> cacheEntryListenerConfiguration) {
assertNotClosed();
+ if (listeners.containsKey(cacheEntryListenerConfiguration)) {
+ throw new IllegalArgumentException(cacheEntryListenerConfiguration
+ " already registered");
+ }
listeners.put(cacheEntryListenerConfiguration, new JCSListener<K,
V>(cacheEntryListenerConfiguration));
+ config.addListener(cacheEntryListenerConfiguration);
}
@Override
public void deregisterCacheEntryListener(final
CacheEntryListenerConfiguration<K, V> cacheEntryListenerConfiguration) {
assertNotClosed();
listeners.remove(cacheEntryListenerConfiguration);
+ config.removeListener(cacheEntryListenerConfiguration);
}
@Override
Modified:
commons/proper/jcs/trunk/src/java/org/apache/commons/jcs/jcache/JCSConfiguration.java
URL:
http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/java/org/apache/commons/jcs/jcache/JCSConfiguration.java?rev=1590529&r1=1590528&r2=1590529&view=diff
==============================================================================
---
commons/proper/jcs/trunk/src/java/org/apache/commons/jcs/jcache/JCSConfiguration.java
(original)
+++
commons/proper/jcs/trunk/src/java/org/apache/commons/jcs/jcache/JCSConfiguration.java
Sun Apr 27 23:47:56 2014
@@ -26,23 +26,19 @@ import javax.cache.integration.CacheLoad
import javax.cache.integration.CacheWriter;
import java.util.Collections;
import java.util.HashSet;
-import java.util.Properties;
import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
public class JCSConfiguration<K, V> implements CompleteConfiguration<K, V> {
private final Class<K> keyType;
private final Class<V> valueType;
- private final ConcurrentMap<CacheEntryListenerConfiguration<K,V>, Object>
cacheEntryListenerConfigurations = new
ConcurrentHashMap<CacheEntryListenerConfiguration<K, V>, Object>();
private final boolean storeByValue;
private final boolean readThrough;
private final boolean writeThrough;
private final Factory<CacheLoader<K,V>> cacheLoaderFactory;
private final Factory<CacheWriter<? super K,? super V>>
cacheWristerFactory;
private final Factory<ExpiryPolicy> expiryPolicyFactory;
- private final Set<CacheEntryListenerConfiguration<K, V>>
initialCacheEntryListenerConfigurations;
+ private final Set<CacheEntryListenerConfiguration<K, V>>
cacheEntryListenerConfigurations;
private boolean statisticsEnabled = true;
private boolean managementEnabled = true;
@@ -60,15 +56,14 @@ public class JCSConfiguration<K, V> impl
cacheLoaderFactory = cConfiguration.getCacheLoaderFactory();
cacheWristerFactory = cConfiguration.getCacheWriterFactory();
this.expiryPolicyFactory = cConfiguration.getExpiryPolicyFactory();
- final HashSet<CacheEntryListenerConfiguration<K, V>> set = new
HashSet<CacheEntryListenerConfiguration<K, V>>();
+ cacheEntryListenerConfigurations = new
HashSet<CacheEntryListenerConfiguration<K, V>>();
final Iterable<CacheEntryListenerConfiguration<K, V>>
entryListenerConfigurations =
cConfiguration.getCacheEntryListenerConfigurations();
if (entryListenerConfigurations != null) {
for (final CacheEntryListenerConfiguration<K, V>
kvCacheEntryListenerConfiguration : entryListenerConfigurations) {
- set.add(kvCacheEntryListenerConfiguration);
+
cacheEntryListenerConfigurations.add(kvCacheEntryListenerConfiguration);
}
}
- initialCacheEntryListenerConfigurations =
Collections.unmodifiableSet(set);
} else {
expiryPolicyFactory = EternalExpiryPolicy.factoryOf();
storeByValue = true;
@@ -76,7 +71,7 @@ public class JCSConfiguration<K, V> impl
writeThrough = false;
cacheLoaderFactory = null;
cacheWristerFactory = null;
- initialCacheEntryListenerConfigurations = new
HashSet<CacheEntryListenerConfiguration<K, V>>();
+ cacheEntryListenerConfigurations = new
HashSet<CacheEntryListenerConfiguration<K, V>>();
}
}
@@ -117,7 +112,7 @@ public class JCSConfiguration<K, V> impl
@Override
public Iterable<CacheEntryListenerConfiguration<K, V>>
getCacheEntryListenerConfigurations() {
- return cacheEntryListenerConfigurations.keySet();
+ return Collections.unmodifiableSet(cacheEntryListenerConfigurations);
}
@Override
@@ -134,4 +129,12 @@ public class JCSConfiguration<K, V> impl
public Factory<ExpiryPolicy> getExpiryPolicyFactory() {
return expiryPolicyFactory;
}
+
+ public synchronized void addListener(final
CacheEntryListenerConfiguration<K, V> cacheEntryListenerConfiguration) {
+ cacheEntryListenerConfigurations.add(cacheEntryListenerConfiguration);
+ }
+
+ public synchronized void removeListener(final
CacheEntryListenerConfiguration<K, V> cacheEntryListenerConfiguration) {
+
cacheEntryListenerConfigurations.remove(cacheEntryListenerConfiguration);
+ }
}
Modified:
commons/proper/jcs/trunk/src/java/org/apache/commons/jcs/jcache/JCSListener.java
URL:
http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/java/org/apache/commons/jcs/jcache/JCSListener.java?rev=1590529&r1=1590528&r2=1590529&view=diff
==============================================================================
---
commons/proper/jcs/trunk/src/java/org/apache/commons/jcs/jcache/JCSListener.java
(original)
+++
commons/proper/jcs/trunk/src/java/org/apache/commons/jcs/jcache/JCSListener.java
Sun Apr 27 23:47:56 2014
@@ -82,6 +82,6 @@ public class JCSListener<K extends Seria
}
public void close() {
-
+ // no-op
}
}
Modified: commons/proper/jcs/trunk/tck.sh
URL:
http://svn.apache.org/viewvc/commons/proper/jcs/trunk/tck.sh?rev=1590529&r1=1590528&r2=1590529&view=diff
==============================================================================
(empty)
Propchange: commons/proper/jcs/trunk/tck.sh
------------------------------------------------------------------------------
svn:executable = *