package org.ehcache.impl.internal.spi.loaderwriter;
import org.ehcache.config.CacheConfiguration;
import org.ehcache.impl.config.loaderwriter.DefaultCacheLoaderWriterConfiguration;
import org.ehcache.impl.config.loaderwriter.DefaultCacheLoaderWriterProviderConfiguration;
import org.ehcache.impl.internal.classes.ClassInstanceProvider;
import org.ehcache.spi.loaderwriter.CacheLoaderWriter;
import org.ehcache.spi.loaderwriter.CacheLoaderWriterConfiguration;
import org.ehcache.spi.loaderwriter.CacheLoaderWriterProvider;
import java.util.HashSet;
import java.util.Set;
public class DefaultCacheLoaderWriterProvider extends ClassInstanceProvider<String, DefaultCacheLoaderWriterConfiguration, CacheLoaderWriter<?, ?>> implements CacheLoaderWriterProvider {
private final Set<String> cachesWithJsrRegisteredLoaders = new HashSet<>();
public DefaultCacheLoaderWriterProvider(DefaultCacheLoaderWriterProviderConfiguration configuration) {
super(configuration, DefaultCacheLoaderWriterConfiguration.class, true);
}
@SuppressWarnings("unchecked")
@Override
public <K, V> CacheLoaderWriter<? super K, V> createCacheLoaderWriter(final String alias, final CacheConfiguration<K, V> cacheConfiguration) {
return (CacheLoaderWriter<? super K, V>) newInstance(alias, cacheConfiguration);
}
@Override
public void releaseCacheLoaderWriter(String alias, CacheLoaderWriter<?, ?> cacheLoaderWriter) throws Exception {
releaseInstance(cacheLoaderWriter);
}
@Override
public CacheLoaderWriterConfiguration<?> getPreConfiguredCacheLoaderWriterConfig(String alias) {
return getPreconfigured(alias);
}
@Override
public boolean isLoaderJsrProvided(String alias) {
return cachesWithJsrRegisteredLoaders.contains(alias);
}
protected void registerJsrLoaderForCache(String alias) {
cachesWithJsrRegisteredLoaders.add(alias);
}
protected void deregisterJsrLoaderForCache(String alias) {
cachesWithJsrRegisteredLoaders.remove(alias);
}
}