List of usage examples for com.google.common.cache CacheBuilder removalListener
RemovalListener removalListener
To view the source code for com.google.common.cache CacheBuilder removalListener.
Click Source Link
From source file:ca.exprofesso.guava.jcache.GuavaCache.java
public GuavaCache(String cacheName, CompleteConfiguration<K, V> configuration, CacheManager cacheManager) { this.cacheName = cacheName; this.configuration = configuration; this.cacheManager = cacheManager; String properties = cacheManager.getProperties().toString(); CacheBuilderSpec cacheBuilderSpec = CacheBuilderSpec .parse(properties.substring(1, properties.length() - 1)); CacheBuilder cacheBuilder = CacheBuilder.from(cacheBuilderSpec); ExpiryPolicy expiryPolicy = configuration.getExpiryPolicyFactory().create(); if (expiryPolicy instanceof ModifiedExpiryPolicy) // == Guava expire after write {/*w ww. j a va2 s . c om*/ Duration d = expiryPolicy.getExpiryForUpdate(); cacheBuilder.expireAfterWrite(d.getDurationAmount(), d.getTimeUnit()); } else if (expiryPolicy instanceof TouchedExpiryPolicy) // == Guava expire after access { Duration d = expiryPolicy.getExpiryForAccess(); cacheBuilder.expireAfterAccess(d.getDurationAmount(), d.getTimeUnit()); } this.cacheEntryListenerConfigurations = Sets .newHashSet(configuration.getCacheEntryListenerConfigurations()); if (!this.cacheEntryListenerConfigurations.isEmpty()) { cacheBuilder = cacheBuilder.removalListener(this); } if (configuration.isManagementEnabled()) { GuavaCacheMXBean bean = new GuavaCacheMXBean(this); try { ManagementFactory.getPlatformMBeanServer().registerMBean(bean, new ObjectName(bean.getObjectName())); } catch (OperationsException | MBeanException e) { throw new CacheException(e); } } if (configuration.isStatisticsEnabled()) { GuavaCacheStatisticsMXBean bean = new GuavaCacheStatisticsMXBean(this); try { ManagementFactory.getPlatformMBeanServer().registerMBean(bean, new ObjectName(bean.getObjectName())); } catch (OperationsException | MBeanException e) { throw new CacheException(e); } cacheBuilder.recordStats(); } if (configuration.isReadThrough()) { Factory<CacheLoader<K, V>> factory = configuration.getCacheLoaderFactory(); this.cache = (Cache<K, V>) cacheBuilder.build(new GuavaCacheLoader<>(factory.create())); } else { this.cache = (Cache<K, V>) cacheBuilder.build(); } this.view = cache.asMap(); }
From source file:uk.q3c.krail.core.user.opt.GuavaCacheConfiguration.java
public CacheBuilder<Object, Object> builder() { CacheBuilder<Object, Object> builder = CacheBuilder.newBuilder(); if (initialCapacity != null) { builder.initialCapacity(initialCapacity); }/*from ww w . ja v a 2 s. c o m*/ if (maximumSize != null) { builder.maximumSize(maximumSize); } if (maximumWeight != null) { builder.maximumWeight(maximumWeight); } if (concurrencyLevel != null) { builder.concurrencyLevel(concurrencyLevel); } if (weakKeys) { builder.weakKeys(); } if (weakValues) { } builder.weakValues(); if (softValues) { builder.softValues(); } if (expireAfterWriteDuration != null) { builder.expireAfterWrite(expireAfterWriteDuration, expireAfterWriteTimeUnit); } if (expireAfterAccessDuration != null) { builder.expireAfterAccess(expireAfterAccessDuration, expireAfterAccessTimeUnit); } if (refreshAfterWriteDuration != null) { builder.refreshAfterWrite(refreshAfterWriteDuration, refreshAfterWriteTimeUnit); } if (ticker != null) { builder.ticker(ticker); } if (removalListener != null) { builder.removalListener(removalListener); } if (recordStats) { builder.recordStats(); } return builder; }
From source file:com.github.benmanes.caffeine.cache.testing.GuavaCacheFromContext.java
/** Returns a Guava-backed cache. */ @SuppressWarnings("CheckReturnValue") public static <K, V> Cache<K, V> newGuavaCache(CacheContext context) { checkState(!context.isAsync(), "Guava caches are synchronous only"); CacheBuilder<Object, Object> builder = CacheBuilder.newBuilder(); context.guava = builder;/* ww w . j ava 2 s.c o m*/ builder.concurrencyLevel(1); if (context.initialCapacity != InitialCapacity.DEFAULT) { builder.initialCapacity(context.initialCapacity.size()); } if (context.isRecordingStats()) { builder.recordStats(); } if (context.maximumSize != Maximum.DISABLED) { if (context.weigher == CacheWeigher.DEFAULT) { builder.maximumSize(context.maximumSize.max()); } else { builder.weigher(new GuavaWeigher<Object, Object>(context.weigher)); builder.maximumWeight(context.maximumWeight()); } } if (context.afterAccess != Expire.DISABLED) { builder.expireAfterAccess(context.afterAccess.timeNanos(), TimeUnit.NANOSECONDS); } if (context.afterWrite != Expire.DISABLED) { builder.expireAfterWrite(context.afterWrite.timeNanos(), TimeUnit.NANOSECONDS); } if (context.refresh != Expire.DISABLED) { builder.refreshAfterWrite(context.refresh.timeNanos(), TimeUnit.NANOSECONDS); } if (context.expires() || context.refreshes()) { builder.ticker(context.ticker()); } if (context.keyStrength == ReferenceType.WEAK) { builder.weakKeys(); } else if (context.keyStrength == ReferenceType.SOFT) { throw new IllegalStateException(); } if (context.valueStrength == ReferenceType.WEAK) { builder.weakValues(); } else if (context.valueStrength == ReferenceType.SOFT) { builder.softValues(); } if (context.removalListenerType != Listener.DEFAULT) { boolean translateZeroExpire = (context.afterAccess == Expire.IMMEDIATELY) || (context.afterWrite == Expire.IMMEDIATELY); builder.removalListener(new GuavaRemovalListener<>(translateZeroExpire, context.removalListener)); } Ticker ticker = (context.ticker == null) ? Ticker.systemTicker() : context.ticker; if (context.loader == null) { context.cache = new GuavaCache<>(builder.<Integer, Integer>build(), ticker, context.isRecordingStats()); } else if (context.loader().isBulk()) { context.cache = new GuavaLoadingCache<>( builder.build(new BulkLoader<Integer, Integer>(context.loader())), ticker, context.isRecordingStats()); } else { context.cache = new GuavaLoadingCache<>( builder.build(new SingleLoader<Integer, Integer>(context.loader())), ticker, context.isRecordingStats()); } @SuppressWarnings("unchecked") Cache<K, V> castedCache = (Cache<K, V>) context.cache; return castedCache; }
From source file:com.github.benmanes.multiway.TransferPool.java
/** Creates the denormalized cache of resources based on the builder configuration. */ Cache<ResourceKey<K>, R> __makeCache(MultiwayPoolBuilder<? super K, ? super R> builder) { CacheBuilder<Object, Object> cacheBuilder = CacheBuilder.newBuilder(); if (builder.maximumSize != MultiwayPoolBuilder.UNSET_INT) { cacheBuilder.maximumSize(builder.maximumSize); }// ww w . j a v a2s . c o m if (builder.maximumWeight != MultiwayPoolBuilder.UNSET_INT) { cacheBuilder.maximumWeight(builder.maximumWeight); } if (builder.weigher != null) { final Weigher<? super K, ? super R> weigher = builder.weigher; cacheBuilder.weigher(new Weigher<ResourceKey<K>, R>() { @Override public int weigh(ResourceKey<K> resourceKey, R resource) { return weigher.weigh(resourceKey.getKey(), resource); } }); } if (builder.expireAfterWriteNanos != MultiwayPoolBuilder.UNSET_INT) { cacheBuilder.expireAfterWrite(builder.expireAfterWriteNanos, TimeUnit.NANOSECONDS); } if (builder.ticker != null) { cacheBuilder.ticker(builder.ticker); } if (builder.recordStats) { cacheBuilder.recordStats(); } cacheBuilder.concurrencyLevel(builder.getConcurrencyLevel()); cacheBuilder.removalListener(new CacheRemovalListener()); return cacheBuilder.build(); }