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 = *


Reply via email to