package lego.gracekelly.cacheproviders.guava; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; import lego.gracekelly.api.CacheProvider; import lego.gracekelly.entities.CacheEntry; import lego.gracekelly.exceptions.CacheProviderException; public class GuavaCacheProvider<T> implements CacheProvider<T> { LoadingCache<String, CacheEntry<T>> cache; long maximumSize = 1000; public GuavaCacheProvider() { new GuavaCacheProvider(maximumSize); } public GuavaCacheProvider(long maximumSize) { this.cache = CacheBuilder.newBuilder() .maximumSize(maximumSize) .build( new CacheLoader<String, CacheEntry<T>>() { @Override public CacheEntry<T> load(String s) throws Exception { return null; } } ); } @Override public CacheEntry<T> get(String key) throws CacheProviderException { try { return cache.get(key); } catch (Exception e) { return null; } catch (Error e) { return null; } } @Override public Boolean put(String key, CacheEntry<T> cacheEntry) throws CacheProviderException { cache.put(key, cacheEntry); return true; } }