Merged HEAD-BUG-FIX (4.3/Cloud) to HEAD (4.3/Cloud)

59851: Merged BRANCHES/DEV/mward/head_bf_gdata_upgd to BRANCHES/DEV/HEAD-BUG-FIX (local cache improvements):
      59586: DefaultSimpleCache max size is Integer.MAX_VALUE when configured with maxItems of 0.
      59590: maxItems for DefaultSimpleCache is now an optional feature.
      59592: non-clustered caches will not use size-based eviction when {cacheName}.eviction-policy=NONE, to match clustered caches.
      59594: Added TTL to DefaultSimpleCache - not yet configurable through the factory.
      59602: DefaultCacheFactory can create caches with a time-to-live setting enabled.
      59620: Organise imports for DefaultSimpleCache
      59622: DefaultSimpleCache: changed field name from map to cache, as this makes more sense with changing to use of CacheBuilder.
      59627: Added maxIdleSecs property to DefaultSimpleCache - not yet configurable from the cache factory.
      59629: DefaultCacheFactory now supports maxIdleSeconds property for configuring non-clustered caches.
      59633: Updated description of supported non-clustered cache properties in caches.properties


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@62192 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Alan Davis
2014-02-12 08:06:59 +00:00
parent bdba166058
commit 79ccf18f85
5 changed files with 263 additions and 32 deletions

View File

@@ -19,7 +19,6 @@
package org.alfresco.repo.cache;
import java.io.Serializable;
import java.util.Properties;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -35,6 +34,7 @@ import org.apache.commons.logging.LogFactory;
public class DefaultCacheFactory<K extends Serializable, V> extends AbstractCacheFactory<K, V>
{
private static final Log log = LogFactory.getLog(DefaultCacheFactory.class);
private static final String EVICT_NONE = "NONE";
@Override
@@ -46,7 +46,10 @@ public class DefaultCacheFactory<K extends Serializable, V> extends AbstractCach
private SimpleCache<K, V> createLocalCache(String cacheName)
{
int maxItems = maxItems(cacheName);
DefaultSimpleCache<K, V> cache = new DefaultSimpleCache<K, V>(maxItems, cacheName);
boolean useMaxItems = useMaxItems(cacheName);
int ttlSecs = ttlSeconds(cacheName);
int maxIdleSeconds = maxIdleSeconds(cacheName);
DefaultSimpleCache<K, V> cache = new DefaultSimpleCache<K, V>(maxItems, useMaxItems, ttlSecs, maxIdleSeconds, cacheName);
if (log.isDebugEnabled())
{
log.debug("Creating cache: " + cache);
@@ -60,4 +63,24 @@ public class DefaultCacheFactory<K extends Serializable, V> extends AbstractCach
Integer maxItems = Integer.parseInt(maxItemsStr);
return maxItems.intValue();
}
private boolean useMaxItems(String cacheName)
{
String evictionPolicy = getProperty(cacheName, "eviction-policy", EVICT_NONE);
return !evictionPolicy.equals(EVICT_NONE);
}
private int ttlSeconds(String cacheName)
{
String ttlSecsStr = getProperty(cacheName, "timeToLiveSeconds", "0");
Integer ttlSecs = Integer.parseInt(ttlSecsStr);
return ttlSecs;
}
private int maxIdleSeconds(String cacheName)
{
String maxIdleSecsStr = getProperty(cacheName, "maxIdleSeconds", "0");
Integer maxIdleSecs = Integer.parseInt(maxIdleSecsStr);
return maxIdleSecs;
}
}