You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by st...@apache.org on 2014/04/30 00:02:23 UTC

svn commit: r1591120 - in /commons/proper/jcs/trunk: ./ commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/

Author: struberg
Date: Tue Apr 29 22:02:23 2014
New Revision: 1591120

URL: http://svn.apache.org/r1591120
Log:
JCS-120 fix broken tests and add some ALv2 headers

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/JCSElement.java
    commons/proper/jcs/trunk/pom.xml

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=1591120&r1=1591119&r2=1591120&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 Apr 29 22:02:23 2014
@@ -1,17 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
 package org.apache.commons.jcs.jcache;
 
-import static org.apache.commons.jcs.jcache.Asserts.assertNotNull;
-
-import java.io.Serializable;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
+import org.apache.commons.jcs.access.CacheAccess;
+import org.apache.commons.jcs.access.exception.CacheException;
+import org.apache.commons.jcs.engine.behavior.ICacheElement;
+import org.apache.commons.jcs.engine.behavior.IElementSerializer;
+import org.apache.commons.jcs.engine.control.CompositeCache;
+import org.apache.commons.jcs.jcache.jmx.JCSCacheMXBean;
+import org.apache.commons.jcs.jcache.jmx.JCSCacheStatisticsMXBean;
+import org.apache.commons.jcs.jcache.jmx.JMXs;
+import org.apache.commons.jcs.jcache.proxy.ExceptionWrapperHandler;
+import org.apache.commons.jcs.utils.serialization.StandardSerializer;
+import org.apache.commons.jcs.utils.threadpool.ThreadPoolManager;
 
 import javax.cache.Cache;
 import javax.cache.CacheManager;
@@ -33,18 +50,18 @@ import javax.cache.processor.EntryProces
 import javax.cache.processor.EntryProcessorException;
 import javax.cache.processor.EntryProcessorResult;
 import javax.management.ObjectName;
+import java.io.Serializable;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 
-import org.apache.commons.jcs.access.CacheAccess;
-import org.apache.commons.jcs.access.exception.CacheException;
-import org.apache.commons.jcs.engine.behavior.ICacheElement;
-import org.apache.commons.jcs.engine.behavior.IElementSerializer;
-import org.apache.commons.jcs.engine.control.CompositeCache;
-import org.apache.commons.jcs.jcache.jmx.JCSCacheMXBean;
-import org.apache.commons.jcs.jcache.jmx.JCSCacheStatisticsMXBean;
-import org.apache.commons.jcs.jcache.jmx.JMXs;
-import org.apache.commons.jcs.jcache.proxy.ExceptionWrapperHandler;
-import org.apache.commons.jcs.utils.serialization.StandardSerializer;
-import org.apache.commons.jcs.utils.threadpool.ThreadPoolManager;
+import static org.apache.commons.jcs.jcache.Asserts.assertNotNull;
 
 // TODO: get statistics locally correct then correct even if distributed
 public class JCSCache<K extends Serializable, V extends Serializable, C extends CompleteConfiguration<K, V>> implements Cache<K, V>
@@ -66,14 +83,14 @@ public class JCSCache<K extends Serializ
     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)
+                    final CompositeCache<K, JCSElement<V>> cache, final Properties properties)
     {
         manager = mgr;
         delegate = new CacheAccess<K, JCSElement<V>>(cache);
         config = configuration;
-        pool = properties != null && properties.containsKey(POOL_SIZE_PROPERTY) ? Executors.newFixedThreadPool(
-                Integer.parseInt(properties.getProperty(POOL_SIZE_PROPERTY)), new ThreadPoolManager.MyThreadFactory()) : Executors
-                .newCachedThreadPool(new ThreadPoolManager.MyThreadFactory());
+        pool = properties != null && properties.containsKey(POOL_SIZE_PROPERTY)?
+                Executors.newFixedThreadPool(Integer.parseInt(properties.getProperty(POOL_SIZE_PROPERTY)), new ThreadPoolManager.MyThreadFactory()) :
+                Executors.newCachedThreadPool(new ThreadPoolManager.MyThreadFactory());
 
         final Factory<CacheLoader<K, V>> cacheLoaderFactory = configuration.getCacheLoaderFactory();
         if (cacheLoaderFactory == null)
@@ -82,8 +99,7 @@ public class JCSCache<K extends Serializ
         }
         else
         {
-            loader = ExceptionWrapperHandler
-                    .newProxy(classLoader, cacheLoaderFactory.create(), CacheLoaderException.class, CacheLoader.class);
+            loader = ExceptionWrapperHandler.newProxy(classLoader, cacheLoaderFactory.create(), CacheLoaderException.class, CacheLoader.class);
         }
 
         final Factory<CacheWriter<? super K, ? super V>> cacheWriterFactory = configuration.getCacheWriterFactory();
@@ -93,8 +109,7 @@ public class JCSCache<K extends Serializ
         }
         else
         {
-            writer = ExceptionWrapperHandler
-                    .newProxy(classLoader, cacheWriterFactory.create(), CacheWriterException.class, CacheWriter.class);
+            writer = ExceptionWrapperHandler.newProxy(classLoader, cacheWriterFactory.create(), CacheWriterException.class, CacheWriter.class);
         }
 
         final Factory<ExpiryPolicy> expiryPolicyFactory = configuration.getExpiryPolicyFactory();
@@ -117,10 +132,16 @@ public class JCSCache<K extends Serializ
         final String mgrStr = manager.getURI().toString().replaceAll(",|:|=|\n", ".");
         try
         {
-            cacheConfigObjectName = new ObjectName("javax.cache:type=CacheConfiguration," + "CacheManager=" + mgrStr + "," + "Cache="
-                    + cache.getCacheName());
-            cacheStatsObjectName = new ObjectName("javax.cache:type=CacheStatistics," + "CacheManager=" + mgrStr + "," + "Cache="
-                    + cache.getCacheName());
+            cacheConfigObjectName = new ObjectName(
+                    "javax.cache:type=CacheConfiguration," +
+                            "CacheManager=" + mgrStr + "," +
+                            "Cache=" + cache.getCacheName()
+            );
+            cacheStatsObjectName = new ObjectName(
+                    "javax.cache:type=CacheStatistics," +
+                            "CacheManager=" + mgrStr + "," +
+                            "Cache=" + cache.getCacheName()
+            );
         }
         catch (final Exception e)
         {
@@ -202,7 +223,7 @@ public class JCSCache<K extends Serializ
         assertNotClosed();
         for (final K k : keys)
         {
-            assertNotNull(k, "key");
+            assertNotNull(k , "key");
         }
 
         final Set<K> names = (Set<K>) keys;
@@ -267,14 +288,13 @@ public class JCSCache<K extends Serializ
         try
         {
             final JCSElement<V> oldElt = delegate.get(key);
-            final V old = oldElt != null ? oldElt.getElement() : null;
+            final V old = oldElt != null? oldElt.getElement() : null;
 
             final boolean storeByValue = config.isStoreByValue();
             final V value = storeByValue ? copy(rawValue) : rawValue;
 
             final boolean created = old == null;
-            final JCSElement<V> element = new JCSElement<V>(value, created ? expiryPolicy.getExpiryForCreation()
-                    : expiryPolicy.getExpiryForUpdate());
+            final JCSElement<V> element = new JCSElement<V>(value, created ? expiryPolicy.getExpiryForCreation() : expiryPolicy.getExpiryForUpdate());
             if (element.isExpired())
             {
                 if (!created)
@@ -290,13 +310,13 @@ public class JCSCache<K extends Serializ
                 {
                     if (created)
                     {
-                        listener.onCreated(Arrays.<CacheEntryEvent<? extends K, ? extends V>> asList(new JCSCacheEntryEvent<K, V>(this,
-                                EventType.CREATED, null, key, value)));
+                        listener.onCreated(Arrays.<CacheEntryEvent<? extends K, ? extends V>>asList(
+                                new JCSCacheEntryEvent<K, V>(this, EventType.CREATED, null, key, value)));
                     }
                     else
                     {
-                        listener.onUpdated(Arrays.<CacheEntryEvent<? extends K, ? extends V>> asList(new JCSCacheEntryEvent<K, V>(this,
-                                EventType.UPDATED, old, key, value)));
+                        listener.onUpdated(Arrays.<CacheEntryEvent<? extends K, ? extends V>>asList(
+                                new JCSCacheEntryEvent<K, V>(this, EventType.UPDATED, old, key, value)));
                     }
                 }
 
@@ -375,8 +395,8 @@ public class JCSCache<K extends Serializ
         }
         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, value)));
+            listener.onRemoved(Arrays.<CacheEntryEvent<? extends K, ? extends V>>asList(
+                    new JCSCacheEntryEvent<K, V>(this, EventType.REMOVED, null, key, value)));
         }
         if (remove && statisticsEnabled)
         {
@@ -393,7 +413,8 @@ public class JCSCache<K extends Serializ
         assertNotNull(key, "key");
         assertNotNull(oldValue, "oldValue");
         final V v = doGetControllingExpiry(key, false, false, false, false);
-        if (v != null)
+        final boolean found = v != null;
+        if (found)
         {
             if (v.equals(oldValue))
             {
@@ -413,13 +434,14 @@ public class JCSCache<K extends Serializ
         return v;
     }
 
-    private V doGetControllingExpiry(final K key, final boolean updateAcess, final boolean forceDoLoad, final boolean skipLoad,
-            final boolean propagateLoadException)
+    private V doGetControllingExpiry(final K key, final boolean updateAcess,
+                                     final boolean forceDoLoad, final boolean skipLoad,
+                                     final boolean propagateLoadException)
     {
         final boolean statisticsEnabled = config.isStatisticsEnabled();
         final long getStart = Times.now();
         final JCSElement<V> elt = delegate.get(key);
-        V v = elt != null ? elt.getElement() : null;
+        V v = elt != null? elt.getElement() : null;
         if (v == null && (config.isReadThrough() || forceDoLoad))
         {
             if (!skipLoad)
@@ -593,7 +615,8 @@ public class JCSCache<K extends Serializ
     }
 
     @Override
-    public void loadAll(final Set<? extends K> keys, final boolean replaceExistingValues, final CompletionListener completionListener)
+    public void loadAll(final Set<? extends K> keys, final boolean replaceExistingValues,
+                        final CompletionListener completionListener)
     {
         assertNotClosed();
         assertNotNull(keys, "keys");
@@ -611,7 +634,8 @@ public class JCSCache<K extends Serializ
         });
     }
 
-    private void doLoadAll(final Set<? extends K> keys, final boolean replaceExistingValues, final CompletionListener completionListener)
+    private void doLoadAll(final Set<? extends K> keys, final boolean replaceExistingValues,
+                           final CompletionListener completionListener)
     {
         try
         {
@@ -652,8 +676,7 @@ public class JCSCache<K extends Serializ
         return t;
     }
 
-    private <T> T doInvoke(final TempStateCacheView<K, V> view, final K key, final EntryProcessor<K, V, T> entryProcessor,
-            final Object... arguments)
+    private <T> T doInvoke(final TempStateCacheView<K, V> view, final K key, final EntryProcessor<K, V, T> entryProcessor, final Object... arguments)
     {
         assertNotClosed();
         assertNotNull(entryProcessor, "entryProcessor");
@@ -689,8 +712,9 @@ public class JCSCache<K extends Serializ
     }
 
     @Override
-    public <T> Map<K, EntryProcessorResult<T>> invokeAll(final Set<? extends K> keys, final EntryProcessor<K, V, T> entryProcessor,
-            final Object... arguments)
+    public <T> Map<K, EntryProcessorResult<T>> invokeAll(final Set<? extends K> keys,
+                                                         final EntryProcessor<K, V, T> entryProcessor,
+                                                         final Object... arguments)
     {
         assertNotClosed();
         assertNotNull(entryProcessor, "entryProcessor");
@@ -731,8 +755,7 @@ public class JCSCache<K extends Serializ
     public void registerCacheEntryListener(final CacheEntryListenerConfiguration<K, V> cacheEntryListenerConfiguration)
     {
         assertNotClosed();
-        if (listeners.containsKey(cacheEntryListenerConfiguration))
-        {
+        if (listeners.containsKey(cacheEntryListenerConfiguration)) {
             throw new IllegalArgumentException(cacheEntryListenerConfiguration + " already registered");
         }
         listeners.put(cacheEntryListenerConfiguration, new JCSListener<K, V>(cacheEntryListenerConfiguration));
@@ -740,8 +763,7 @@ public class JCSCache<K extends Serializ
     }
 
     @Override
-    public void deregisterCacheEntryListener(final CacheEntryListenerConfiguration<K, V> cacheEntryListenerConfiguration)
-    {
+    public void deregisterCacheEntryListener(final CacheEntryListenerConfiguration<K, V> cacheEntryListenerConfiguration) {
         assertNotClosed();
         listeners.remove(cacheEntryListenerConfiguration);
         config.removeListener(cacheEntryListenerConfiguration);

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=1591120&r1=1591119&r2=1591120&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 Apr 29 22:02:23 2014
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
 package org.apache.commons.jcs.jcache;
 
 import static org.apache.commons.jcs.jcache.Asserts.assertNotNull;
@@ -90,19 +108,21 @@ public class JCSCachingManager implement
     {
         assertNotClosed();
         assertNotNull(cacheName, "cacheName");
+        final Class<?> keyType = configuration == null ? Object.class : configuration.getKeyType();
+        final Class<?> valueType = configuration == null ? Object.class : configuration.getValueType();
         if (!caches.containsKey(cacheName))
         {
             final Cache<K, V> cache = ClassLoaderAwareHandler.newProxy(
                     loader,
-                    new JCSCache/* <K, V, C> */(loader, this, new JCSConfiguration(configuration, configuration.getKeyType(), configuration
-                            .getValueType()), instance.getCache(cacheName), instance.getConfigurationProperties()), Cache.class);
+                    new JCSCache/* <K, V, C> */(loader, this, new JCSConfiguration(configuration, keyType, valueType),
+                                                instance.getCache(cacheName), instance.getConfigurationProperties()), Cache.class);
             caches.putIfAbsent(cacheName, cache);
         }
         else
         {
             throw new javax.cache.CacheException("cache " + cacheName + " already exists");
         }
-        return getCache(cacheName, configuration.getKeyType(), configuration.getValueType());
+        return (Cache<K, V>) getCache(cacheName, keyType, valueType);
     }
 
     @Override
@@ -183,6 +203,7 @@ public class JCSCachingManager implement
         {
             JCSCachingProvider.class.cast(provider).remove(this);
         }
+		instance.shutDown();
     }
 
     @Override
@@ -239,7 +260,8 @@ public class JCSCachingManager implement
         }
 
         final Configuration<K, V> config = cache.getConfiguration(Configuration.class);
-        if (!config.getKeyType().isAssignableFrom(keyType) || !config.getValueType().isAssignableFrom(valueType))
+        if ((keyType != null && !config.getKeyType().isAssignableFrom(keyType))
+            || (valueType != null && !config.getValueType().isAssignableFrom(valueType)))
         {
             throw new IllegalArgumentException("this cache is <" + config.getKeyType().getName() + ", " + config.getValueType().getName()
                     + "> " + " and not <" + keyType.getName() + ", " + valueType.getName() + ">");

Modified: commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/JCSElement.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/JCSElement.java?rev=1591120&r1=1591119&r2=1591120&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/JCSElement.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/JCSElement.java Tue Apr 29 22:02:23 2014
@@ -1,14 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
 package org.apache.commons.jcs.jcache;
 
-import java.io.Serializable;
-
 import javax.cache.expiry.Duration;
+import java.io.Serializable;
 
 public class JCSElement<V> implements Serializable
 {
-    /** Serial version */
-    private static final long serialVersionUID = 6399046812336629074L;
-
     private final V element;
     private volatile long end;
 
@@ -33,12 +47,10 @@ public class JCSElement<V> implements Se
         if (duration == null || duration.isEternal())
         {
             end = -1;
-        }
-        else if (duration.isZero())
+        } else if (duration.isZero())
         {
             end = 0;
-        }
-        else
+        } else
         {
             end = duration.getAdjustedTime(Times.now());
         }

Modified: commons/proper/jcs/trunk/pom.xml
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/pom.xml?rev=1591120&r1=1591119&r2=1591120&view=diff
==============================================================================
--- commons/proper/jcs/trunk/pom.xml (original)
+++ commons/proper/jcs/trunk/pom.xml Tue Apr 29 22:02:23 2014
@@ -26,7 +26,6 @@
     <version>33</version>
   </parent>
 
-  <groupId>org.apache.commons</groupId>
   <artifactId>commons-jcs</artifactId>
   <packaging>pom</packaging>
   <version>2.0-SNAPSHOT</version>
@@ -244,7 +243,7 @@
       </dependency>
       <dependency>
         <groupId>org.hamcrest</groupId>
-        <artifactId>hamcrest-all</artifactId>
+        <artifactId>hamcrest-library</artifactId>
         <version>1.3</version>
         <scope>test</scope>
       </dependency>