@Test public void changeCacheLoaderRecreateCache() { CaffeineCacheManager cm = new CaffeineCacheManager("c1"); Cache cache1 = cm.getCache("c1"); CacheLoader<Object, Object> loader = mockCacheLoader(); cm.setCacheLoader(loader); Cache cache1x = cm.getCache("c1"); assertTrue(cache1x != cache1); cm.setCacheLoader(loader); // Set same instance Cache cache1xx = cm.getCache("c1"); assertSame(cache1x, cache1xx); }
@Test public void cacheLoaderUseLoadingCache() { CaffeineCacheManager cm = new CaffeineCacheManager("c1"); cm.setCacheLoader(new CacheLoader<Object, Object>() { @Override public Object load(Object key) throws Exception { if ("ping".equals(key)) { return "pong"; } throw new IllegalArgumentException("I only know ping"); } }); Cache cache1 = cm.getCache("c1"); Cache.ValueWrapper value = cache1.get("ping"); assertNotNull(value); assertEquals("pong", value.get()); thrown.expect(IllegalArgumentException.class); thrown.expectMessage("I only know ping"); assertNull(cache1.get("foo")); }