in commons-jcs3-jcache/src/main/java/org/apache/commons/jcs3/jcache/JCSCache.java [116:207]
public JCSCache(final ClassLoader classLoader, final JCSCachingManager mgr,
final String cacheName, final JCSConfiguration<K, V> configuration,
final Properties properties, final ExpiryAwareCache<K, V> cache)
{
manager = mgr;
name = cacheName;
delegate = cache;
if (delegate.getElementAttributes() == null)
{
delegate.setElementAttributes(new ElementAttributes());
}
delegate.getElementAttributes().addElementEventHandler(new EvictionListener(statistics));
config = configuration;
final int poolSize = Integer.parseInt(property(properties, cacheName, "pool.size", "3"));
final DaemonThreadFactory threadFactory = new DaemonThreadFactory("JCS-JCache-" + cacheName + "-");
pool = poolSize > 0 ? Executors.newFixedThreadPool(poolSize, threadFactory) : Executors.newCachedThreadPool(threadFactory);
try
{
serializer = (IElementSerializer) classLoader.loadClass(property(properties, "serializer", cacheName, StandardSerializer.class.getName())).getDeclaredConstructor().newInstance();
}
catch (final Exception e)
{
throw new IllegalArgumentException(e);
}
final Factory<CacheLoader<K, V>> cacheLoaderFactory = configuration.getCacheLoaderFactory();
if (cacheLoaderFactory == null)
{
loader = (CacheLoader<K, V>) NoLoader.INSTANCE;
}
else
{
loader = ExceptionWrapperHandler
.newProxy(classLoader, cacheLoaderFactory.create(), CacheLoaderException.class, CacheLoader.class);
}
final Factory<CacheWriter<? super K, ? super V>> cacheWriterFactory = configuration.getCacheWriterFactory();
if (cacheWriterFactory == null)
{
writer = (CacheWriter<K, V>) NoWriter.INSTANCE;
}
else
{
writer = ExceptionWrapperHandler
.newProxy(classLoader, cacheWriterFactory.create(), CacheWriterException.class, CacheWriter.class);
}
final Factory<ExpiryPolicy> expiryPolicyFactory = configuration.getExpiryPolicyFactory();
if (expiryPolicyFactory == null)
{
expiryPolicy = new EternalExpiryPolicy();
}
else
{
expiryPolicy = expiryPolicyFactory.create();
}
for (final CacheEntryListenerConfiguration<K, V> listener : config.getCacheEntryListenerConfigurations())
{
listeners.put(listener, new JCSListener<>(listener));
}
delegate.init(this, listeners);
statistics.setActive(config.isStatisticsEnabled());
final String mgrStr = manager.getURI().toString().replaceAll(",|:|=|\n", ".");
final String cacheStr = name.replaceAll(",|:|=|\n", ".");
try
{
cacheConfigObjectName = new ObjectName("javax.cache:type=CacheConfiguration,"
+ "CacheManager=" + mgrStr + "," + "Cache=" + cacheStr);
cacheStatsObjectName = new ObjectName("javax.cache:type=CacheStatistics,"
+ "CacheManager=" + mgrStr + "," + "Cache=" + cacheStr);
}
catch (final Exception e)
{
throw new IllegalArgumentException(e);
}
if (config.isManagementEnabled())
{
JMXs.register(cacheConfigObjectName, new JCSCacheMXBean<>(this));
}
if (config.isStatisticsEnabled())
{
JMXs.register(cacheStatsObjectName, new JCSCacheStatisticsMXBean(statistics));
}
}