org.infinispan.jcache.annotation.DefaultCacheResolver Maven / Gradle / Ivy
package org.infinispan.jcache.annotation;
import static org.infinispan.jcache.annotation.Contracts.assertNotNull;
import java.lang.annotation.Annotation;
import javax.cache.Cache;
import javax.cache.CacheManager;
import javax.cache.Caching;
import javax.cache.annotation.CacheInvocationContext;
import javax.cache.annotation.CacheResolver;
import javax.cache.spi.CachingProvider;
import javax.enterprise.context.ApplicationScoped;
/**
* Default {@link javax.cache.annotation.CacheResolver} implementation for
* standalone environments, where no Cache/CacheManagers are injected via CDI.
*
* @author Kevin Pollet (C) 2011 SERLI
* @author Galder Zamarreño
*/
@ApplicationScoped
public class DefaultCacheResolver implements CacheResolver {
private CacheManager defaultCacheManager;
// Created by proxy
@SuppressWarnings("unused")
DefaultCacheResolver() {
CachingProvider provider = Caching.getCachingProvider();
defaultCacheManager = provider.getCacheManager(provider.getDefaultURI(), provider.getDefaultClassLoader());
}
@Override
public Cache resolveCache(CacheInvocationContext extends Annotation> cacheInvocationContext) {
assertNotNull(cacheInvocationContext, "cacheInvocationContext parameter must not be null");
String cacheName = cacheInvocationContext.getCacheName();
return getOrCreateCache(cacheName);
}
private synchronized Cache getOrCreateCache(String cacheName) {
Cache cache = defaultCacheManager.getCache(cacheName);
if (cache != null)
return cache;
return defaultCacheManager.createCache(cacheName,
new javax.cache.configuration.MutableConfiguration());
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy