Example usage for com.google.common.cache CacheBuilder expireAfterAccess

List of usage examples for com.google.common.cache CacheBuilder expireAfterAccess

Introduction

In this page you can find the example usage for com.google.common.cache CacheBuilder expireAfterAccess.

Prototype

public CacheBuilder<K, V> expireAfterAccess(long duration, TimeUnit unit) 

Source Link

Document

Specifies that each entry should be automatically removed from the cache once a fixed duration has elapsed after the entry's creation, the most recent replacement of its value, or its last access.

Usage

From source file:org.pentaho.caching.ri.impl.GuavaCacheManager.java

<K, V> void configureCacheBuilder(CompleteConfiguration<K, V> completeConfiguration,
        CacheBuilder<Object, Object> cacheBuilder) {
    ExpiryPolicy expiryPolicy = completeConfiguration.getExpiryPolicyFactory().create();

    Duration expiryForAccess = expiryPolicy.getExpiryForAccess();
    if (expiryForAccess != null && !expiryForAccess.isEternal()) {
        cacheBuilder.expireAfterAccess(expiryForAccess.getDurationAmount(), expiryForAccess.getTimeUnit());
    }/*from ww w  . jav  a2s . c om*/
    Duration expiryForUpdate = expiryPolicy.getExpiryForUpdate();
    if (expiryForUpdate != null && !expiryForUpdate.isEternal()) {
        cacheBuilder.expireAfterWrite(expiryForUpdate.getDurationAmount(), expiryForUpdate.getTimeUnit());
    }
}

From source file:org.elasticsearch.indices.cache.filter.terms.IndicesTermsFilterCache.java

@Inject
public IndicesTermsFilterCache(Settings settings, Client client) {
    super(settings);
    this.client = client;

    ByteSizeValue size = componentSettings.getAsBytesSize("size", new ByteSizeValue(10, ByteSizeUnit.MB));
    TimeValue expireAfterWrite = componentSettings.getAsTime("expire_after_write", null);
    TimeValue expireAfterAccess = componentSettings.getAsTime("expire_after_access", null);

    CacheBuilder<BytesRef, TermsFilterValue> builder = CacheBuilder.newBuilder().maximumWeight(size.bytes())
            .weigher(new TermsFilterValueWeigher());

    if (expireAfterAccess != null) {
        builder.expireAfterAccess(expireAfterAccess.millis(), TimeUnit.MILLISECONDS);
    }/*from  w w  w. jav  a  2 s.c  om*/
    if (expireAfterWrite != null) {
        builder.expireAfterWrite(expireAfterWrite.millis(), TimeUnit.MILLISECONDS);
    }

    this.cache = builder.build();
}

From source file:com.datatorrent.lib.db.cache.CacheStore.java

@Override
public void connect() throws IOException {
    open = true;/*from w ww  .  ja v  a 2s.c om*/

    CacheBuilder<Object, Object> cacheBuilder = CacheBuilder.newBuilder();
    cacheBuilder.maximumSize(maxCacheSize);
    if (entryExpiryStrategy == ExpiryType.EXPIRE_AFTER_ACCESS) {
        cacheBuilder.expireAfterAccess(entryExpiryDurationInMillis, TimeUnit.MILLISECONDS);
    } else if (entryExpiryStrategy == ExpiryType.EXPIRE_AFTER_WRITE) {
        cacheBuilder.expireAfterWrite(entryExpiryDurationInMillis, TimeUnit.MILLISECONDS);
    }
    cache = cacheBuilder.build();
    this.cleanupScheduler = Executors.newScheduledThreadPool(1);
    cleanupScheduler.scheduleAtFixedRate(new Runnable() {
        @Override
        public void run() {
            cache.cleanUp();
        }
    }, cacheCleanupIntervalInMillis, cacheCleanupIntervalInMillis, TimeUnit.MILLISECONDS);
}

From source file:org.restheart.cache.impl.GuavaLoadingCache.java

public GuavaLoadingCache(long size, EXPIRE_POLICY expirePolicy, long ttl, Function<K, V> loader) {
    CacheBuilder builder = CacheBuilder.newBuilder();

    builder.maximumSize(size);/*from ww  w  .  j a va 2 s . com*/

    if (ttl > 0 && expirePolicy == EXPIRE_POLICY.AFTER_WRITE) {
        builder.expireAfterWrite(ttl, TimeUnit.MILLISECONDS);
    } else if (ttl > 0 && expirePolicy == EXPIRE_POLICY.AFTER_READ) {
        builder.expireAfterAccess(ttl, TimeUnit.MILLISECONDS);
    }

    wrapped = builder.build(new CacheLoader<K, Optional<V>>() {
        @Override
        public Optional<V> load(K key) throws Exception {
            return Optional.ofNullable(loader.apply(key));
        }
    });
}

From source file:org.restheart.cache.impl.GuavaCache.java

public GuavaCache(long size, EXPIRE_POLICY expirePolicy, long ttl) {
    CacheBuilder builder = CacheBuilder.newBuilder();

    builder.maximumSize(size);//ww  w  .  j a v  a2 s  .c  om

    if (ttl > 0 && expirePolicy == EXPIRE_POLICY.AFTER_WRITE) {
        builder.expireAfterWrite(ttl, TimeUnit.MILLISECONDS);
    } else if (ttl > 0 && expirePolicy == EXPIRE_POLICY.AFTER_READ) {
        builder.expireAfterAccess(ttl, TimeUnit.MILLISECONDS);
    }

    wrapped = builder.build();
}

From source file:org.restheart.cache.impl.GuavaCache.java

public GuavaCache(long size, EXPIRE_POLICY expirePolicy, long ttl,
        Consumer<Map.Entry<K, Optional<V>>> remover) {
    CacheBuilder builder = CacheBuilder.newBuilder();

    builder.maximumSize(size);//from  ww  w .j  a v  a  2 s .  c o m

    if (ttl > 0 && expirePolicy == EXPIRE_POLICY.AFTER_WRITE) {
        builder.expireAfterWrite(ttl, TimeUnit.MILLISECONDS);
    } else if (ttl > 0 && expirePolicy == EXPIRE_POLICY.AFTER_READ) {
        builder.expireAfterAccess(ttl, TimeUnit.MILLISECONDS);
    }

    wrapped = builder.removalListener((RemovalNotification notification) -> {
        remover.accept(notification);
    }).build();
}

From source file:org.apache.nifi.processors.standard.TransformXml.java

@OnScheduled
public void onScheduled(final ProcessContext context) {
    final ComponentLog logger = getLogger();
    final Integer cacheSize = context.getProperty(CACHE_SIZE).asInteger();
    final Long cacheTTL = context.getProperty(CACHE_TTL_AFTER_LAST_ACCESS).asTimePeriod(TimeUnit.SECONDS);

    if (cacheSize > 0) {
        CacheBuilder cacheBuilder = CacheBuilder.newBuilder().maximumSize(cacheSize);
        if (cacheTTL > 0) {
            cacheBuilder = cacheBuilder.expireAfterAccess(cacheTTL, TimeUnit.SECONDS);
        }/*from w w  w .  j  a  v a2 s  .  c  o m*/

        cache = cacheBuilder.build(new CacheLoader<String, Templates>() {
            public Templates load(String path) throws TransformerConfigurationException {
                return newTemplates(path);
            }
        });
    } else {
        cache = null;
        logger.warn("Stylesheet cache disabled because cache size is set to 0");
    }
}

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;/*from  w w  w . j  av a  2s. 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:org.apache.druid.server.lookup.cache.loading.OnHeapLoadingCache.java

/**
 * @param concurrencyLevel  default to {@code DEFAULT_CONCURRENCY_LEVEL}
 * @param initialCapacity   default to {@code DEFAULT_INITIAL_CAPACITY}
 * @param maximumSize       Max number of entries that the cache can hold, When set to zero, elements will be evicted immediately after being loaded into the
 *                          cache.//from w  w w .  j av a  2 s.  c  o  m
 *                          When set to null, cache maximum size is infinity
 * @param expireAfterAccess Specifies that each entry should be automatically removed from the cache once a fixed duration
 *                          has elapsed after the entry's creation, the most recent replacement of its value, or its last
 *                          access. Access time is reset by all cache read and write operations.
 *                          No read-time-based eviction when set to null.
 * @param expireAfterWrite  Specifies that each entry should be automatically removed from the cache once a fixed duration
 *                          has elapsed after the entry's creation, or the most recent replacement of its value.
 *                          No write-time-based eviction when set to null.
 */
@JsonCreator
public OnHeapLoadingCache(@JsonProperty("concurrencyLevel") int concurrencyLevel,
        @JsonProperty("initialCapacity") int initialCapacity, @JsonProperty("maximumSize") Long maximumSize,
        @JsonProperty("expireAfterAccess") Long expireAfterAccess,
        @JsonProperty("expireAfterWrite") Long expireAfterWrite) {
    this.concurrencyLevel = concurrencyLevel <= 0 ? DEFAULT_CONCURRENCY_LEVEL : concurrencyLevel;
    this.initialCapacity = initialCapacity <= 0 ? DEFAULT_INITIAL_CAPACITY : initialCapacity;
    this.maximumSize = maximumSize;
    this.expireAfterAccess = expireAfterAccess;
    this.expireAfterWrite = expireAfterWrite;
    CacheBuilder builder = CacheBuilder.newBuilder().concurrencyLevel(this.concurrencyLevel)
            .initialCapacity(this.initialCapacity).recordStats();
    if (this.expireAfterAccess != null) {
        builder.expireAfterAccess(expireAfterAccess, TimeUnit.MILLISECONDS);
    }
    if (this.expireAfterWrite != null) {
        builder.expireAfterWrite(this.expireAfterWrite, TimeUnit.MILLISECONDS);
    }
    if (this.maximumSize != null) {
        builder.maximumSize(this.maximumSize);
    }

    this.cache = builder.build();

    if (isClosed.getAndSet(false)) {
        log.info("Guava Based OnHeapCache started with spec [%s]", cache.toString());
    }
}

From source file:org.eclipse.xtext.xbase.ide.types.ClasspathScanner.java

protected Cache<Pair<ClassLoader, Collection<String>>, Iterable<ITypeDescriptor>> createClassLoaderCache() {
    CacheBuilder<Object, Object> _newBuilder = CacheBuilder.newBuilder();
    CacheBuilder<Object, Object> _initialCapacity = _newBuilder.initialCapacity(8);
    CacheBuilder<Object, Object> _concurrencyLevel = _initialCapacity.concurrencyLevel(2);
    CacheBuilder<Object, Object> _maximumSize = _concurrencyLevel.maximumSize(32);
    CacheBuilder<Object, Object> _expireAfterAccess = _maximumSize.expireAfterAccess(5, TimeUnit.MINUTES);
    return _expireAfterAccess.<Pair<ClassLoader, Collection<String>>, Iterable<ITypeDescriptor>>build();
}