@Override public void releaseStore(Store<?, ?> resource) { try { if (resource instanceof LocalWriteBehindLoaderWriterStore<?, ?>) { writeBehindProvider.releaseWriteBehindLoaderWriter(((LocalWriteBehindLoaderWriterStore<?, ?>) resource).getCacheLoaderWriter()); } } finally { super.releaseStore(resource); } }
@Override protected <K, V> Store<K, V> wrap(Store<K, V> store, Store.Configuration<K, V> storeConfig, ServiceConfiguration<?>... serviceConfigs) { WriteBehindConfiguration writeBehindConfiguration = findSingletonAmongst(WriteBehindConfiguration.class, (Object[]) serviceConfigs); if(writeBehindConfiguration == null) { return new LocalLoaderWriterStore<>(store, storeConfig.getCacheLoaderWriter(), storeConfig.useLoaderInAtomics(), storeConfig.getExpiry()); } else { CacheLoaderWriter<? super K, V> writeBehindLoaderWriter = writeBehindProvider.createWriteBehindLoaderWriter(storeConfig.getCacheLoaderWriter(), writeBehindConfiguration); return new LocalWriteBehindLoaderWriterStore<>(store, writeBehindLoaderWriter, storeConfig.useLoaderInAtomics(), storeConfig.getExpiry()); } }
@Test public void testWriteBehindWithoutCacheLoaderWriter() { expectedEx.expect(NullPointerException.class); expectedEx.expectMessage("WriteBehind requires a non null CacheLoaderWriter"); WriteBehindProviderFactory factory = new WriteBehindProviderFactory(); factory.create(null).createWriteBehindLoaderWriter(null, null); }
} else { final WriteBehindProvider factory = serviceLocator.getService(WriteBehindProvider.class); decorator = factory.createWriteBehindLoaderWriter(loaderWriter, writeBehindConfiguration); if(decorator != null) { lifeCycledList.add(new LifeCycledAdapter() {
@Override public void close() { factory.releaseWriteBehindLoaderWriter(decorator); } });