@Override public CacheManager get() { // JSR-107 registration, required for JMX integration final CachingProvider cachingProvider = Caching.getCachingProvider("org.ehcache.jsr107.EhcacheCachingProvider"); CacheManager cacheManager; try { cacheManager = cachingProvider.getCacheManager(xmlConfigurationURL.toURI(), getClass().getClassLoader()); } catch (final RuntimeException e) { logger.error("Unable to read ehcache.xml, using default configuration", e); cacheManager = cachingProvider.getCacheManager(); } catch (final URISyntaxException e) { logger.error("Unable to read ehcache.xml, using default configuration", e); cacheManager = cachingProvider.getCacheManager(); } // Make sure we start from a clean state - this is mainly useful for tests cacheManager.unwrap(InternalCacheManager.class).deregisterListener(ehcacheLoggingListener); cacheManager.unwrap(InternalCacheManager.class).registerListener(ehcacheLoggingListener); for (final BaseCacheLoader<?, ?> cacheLoader : cacheLoaders) { createCache(cacheManager, cacheLoader.getCacheType().getCacheName(), cacheLoader.getCacheType().getKeyType(), cacheLoader.getCacheType().getValueType()); } return cacheManager; } }
@Test public void testCacheManagerCloseLenientToEhcacheClosed() throws Exception { CachingProvider provider = Caching.getCachingProvider(); javax.cache.CacheManager cacheManager = provider.getCacheManager(this.getClass() .getResource("/ehcache-107-types.xml") .toURI(), getClass().getClassLoader()); MutableConfiguration<Long, String> cache1Conf = new MutableConfiguration<>(); javax.cache.Cache<Long, String> cache = cacheManager.createCache("cache1", cache1Conf); cacheManager.unwrap(org.ehcache.CacheManager.class).removeCache(cache.getName()); cacheManager.close(); } }
@Test public void testEhcacheCloseRemovesFromCacheManager() throws Exception { CachingProvider provider = Caching.getCachingProvider(); javax.cache.CacheManager cacheManager = provider.getCacheManager(this.getClass() .getResource("/ehcache-107-types.xml") .toURI(), getClass().getClassLoader()); MutableConfiguration<Long, String> cache1Conf = new MutableConfiguration<>(); javax.cache.Cache<Long, String> cache = cacheManager.createCache("cache1", cache1Conf); cacheManager.unwrap(org.ehcache.CacheManager.class).removeCache(cache.getName()); try { assertThat(cacheManager.getCache(cache.getName()), nullValue()); } finally { cacheManager.close(); } }
@Before public void before() throws Exception { CachingProvider cachingProvider = Caching.getCachingProvider(); EhcacheCachingProvider ehcacheProvider = (EhcacheCachingProvider) cachingProvider; DefaultConfiguration configuration = new DefaultConfiguration(ehcacheProvider.getDefaultClassLoader(), new DefaultPersistenceConfiguration(diskPath.newFolder())); CacheConfiguration<Integer, String> cacheConfiguration = CacheConfigurationBuilder.newCacheConfigurationBuilder(Integer.class, String.class, resources).build(); configuration.addCacheConfiguration("cache", cacheConfiguration); cacheManager = ehcacheProvider.getCacheManager(ehcacheProvider.getDefaultURI(), configuration); EhcacheManager ehcacheManager = cacheManager.unwrap(EhcacheManager.class); Field field = EhcacheManager.class.getDeclaredField("serviceLocator"); field.setAccessible(true); @SuppressWarnings("unchecked") ServiceProvider<Service> serviceProvider = (ServiceProvider<Service>)field.get(ehcacheManager); StatisticsService statisticsService = serviceProvider.getService(StatisticsService.class); cache = cacheManager.getCache("cache", Integer.class, String.class); cacheStatistics = statisticsService.getCacheStatistics("cache"); }
@Override public CacheManager get() { // JSR-107 registration, required for JMX integration final CachingProvider cachingProvider = Caching.getCachingProvider("org.ehcache.jsr107.EhcacheCachingProvider"); CacheManager cacheManager; try { cacheManager = cachingProvider.getCacheManager(xmlConfigurationURL.toURI(), getClass().getClassLoader()); } catch (final RuntimeException e) { logger.error("Unable to read ehcache.xml, using default configuration", e); cacheManager = cachingProvider.getCacheManager(); } catch (final URISyntaxException e) { logger.error("Unable to read ehcache.xml, using default configuration", e); cacheManager = cachingProvider.getCacheManager(); } // Make sure we start from a clean state - this is mainly useful for tests cacheManager.unwrap(InternalCacheManager.class).deregisterListener(ehcacheLoggingListener); cacheManager.unwrap(InternalCacheManager.class).registerListener(ehcacheLoggingListener); for (final BaseCacheLoader<?, ?> cacheLoader : cacheLoaders) { createCache(cacheManager, cacheLoader.getCacheType().getCacheName(), cacheLoader.getCacheType().getKeyType(), cacheLoader.getCacheType().getValueType()); } return cacheManager; } }
@Test public void testUnwrap() { //Assumes rule will exclude this test when no unwrapClass is specified final Class<?> unwrapClass = getUnwrapClass(CacheManager.class); final CacheManager cacheManager = getCacheManager(); final Object unwrappedCacheManager = cacheManager.unwrap(unwrapClass); assertTrue(unwrapClass.isAssignableFrom(unwrappedCacheManager.getClass())); }
@Test(expected = IllegalArgumentException.class) public void unwrapThrowsInvalidArgument() { final Class ALWAYS_INVALID_UNWRAP_CLASS = Exception.class; getCacheManager().unwrap(Exception.class); fail(); }
@Override public void call() { cm.defineConfiguration("UnwrapCache", new ConfigurationBuilder().build()); CacheManager jCacheManager = new JCacheManager(URI.create("UnwrapCacheManager"), cm, null); Cache<Object, Object> jcache = jCacheManager.getCache("UnwrapCache"); assertTrue(jCacheManager.unwrap(JCacheManager.class) != null); assertTrue(jcache.unwrap(JCache.class) != null); assertTrue(jCacheManager.unwrap(EmbeddedCacheManager.class) != null); assertTrue(jcache.unwrap(org.infinispan.Cache.class) != null); } });