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.apache.nifi.processors.automna.Parser.java

@OnScheduled
public void onScheduled(final ProcessContext context) {
    final ComponentLog logger = getLogger();

    if (CACHE_SIZE > 0) {
        CacheBuilder cacheBuilder = CacheBuilder.newBuilder().maximumSize(CACHE_SIZE);
        if (CACHE_TTL_AFTER_LAST_ACCESS > 0) {
            cacheBuilder = cacheBuilder.expireAfterAccess(CACHE_TTL_AFTER_LAST_ACCESS, TimeUnit.SECONDS);
        }/* w ww  .java2  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:org.eclipse.xtext.xbase.ide.types.ClasspathScanner.java

protected Cache<Pair<URI, Collection<String>>, Iterable<ITypeDescriptor>> createUriCache() {
    CacheBuilder<Object, Object> _newBuilder = CacheBuilder.newBuilder();
    CacheBuilder<Object, Object> _initialCapacity = _newBuilder.initialCapacity(64);
    CacheBuilder<Object, Object> _concurrencyLevel = _initialCapacity.concurrencyLevel(2);
    CacheBuilder<Object, Object> _maximumSize = _concurrencyLevel.maximumSize(256);
    CacheBuilder<Object, Object> _expireAfterAccess = _maximumSize.expireAfterAccess(30, TimeUnit.MINUTES);
    return _expireAfterAccess.<Pair<URI, Collection<String>>, Iterable<ITypeDescriptor>>build();
}

From source file:org.geogit.di.caching.CacheFactory.java

protected synchronized void createCache() {
    if (cache != null) {
        return;//from  www. j  ava  2  s .c  om
    }
    if (!cacheIsEnabled()) {
        this.cache = NO_CACHE;
        return;
    }
    final int maxSize = getConfig("maxSize", 50 * 1000);
    final int concurrencyLevel = getConfig("concurrencyLevel", 0);
    if (concurrencyLevel == 0) {
        this.cache = new SimpleCache<ObjectId, RevObject>(maxSize);
        LOGGER.info("Cache '{}' configured with maxSize: {}", configKeywordPrefix, maxSize);
        return;
    }

    final int expireSeconds = getConfig("expireSeconds", 30);
    final int initialCapacity = getConfig("initialCapacity", 10 * 1000);
    CacheBuilder<Object, Object> cacheBuilder = CacheBuilder.newBuilder();
    cacheBuilder = cacheBuilder.maximumSize(maxSize);
    cacheBuilder.expireAfterAccess(expireSeconds, TimeUnit.SECONDS);
    cacheBuilder.initialCapacity(initialCapacity);
    cacheBuilder.concurrencyLevel(concurrencyLevel);

    try {
        this.cache = cacheBuilder.build();
    } catch (RuntimeException e) {
        LOGGER.error(
                "Error configuring cache '{}' with maxSize: {}, expireSeconds: {}, initialCapacity: {}, concurrencyLevel: {}",
                configKeywordPrefix, maxSize, expireSeconds, initialCapacity, concurrencyLevel, e);

        throw e;
    }

    LOGGER.debug(
            "Cache '{}' configured with maxSize: {}, expireSeconds: {}, initialCapacity: {}, concurrencyLevel: {}",
            configKeywordPrefix, maxSize, expireSeconds, initialCapacity, concurrencyLevel);

}

From source file:org.apache.apex.malhar.lib.db.cache.CacheStore.java

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

    if (numInitCacheLines > maxCacheSize) {
        logger.warn("numInitCacheLines = {} is greater than maxCacheSize = {}, maxCacheSize was set to {}",
                numInitCacheLines, maxCacheSize, numInitCacheLines);
        maxCacheSize = numInitCacheLines;
    }

    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();

    if (entryExpiryStrategy == ExpiryType.NO_EVICTION) {
        return;
    }

    this.cleanupScheduler = Executors.newScheduledThreadPool(1);
    cleanupScheduler.scheduleAtFixedRate(new Runnable() {
        @Override
        public void run() {
            cache.cleanUp();
        }
    }, cacheCleanupIntervalInMillis, cacheCleanupIntervalInMillis, TimeUnit.MILLISECONDS);
}

From source file:org.elasticsearch.script.ScriptService.java

@Inject
public ScriptService(Settings settings, Environment env, Set<ScriptEngineService> scriptEngines,
        ResourceWatcherService resourceWatcherService) {
    super(settings);

    int cacheMaxSize = componentSettings.getAsInt("cache.max_size", 500);
    TimeValue cacheExpire = componentSettings.getAsTime("cache.expire", null);
    logger.debug("using script cache with max_size [{}], expire [{}]", cacheMaxSize, cacheExpire);

    this.defaultLang = componentSettings.get("default_lang", "mvel");
    this.disableDynamic = componentSettings.getAsBoolean("disable_dynamic", true);

    CacheBuilder cacheBuilder = CacheBuilder.newBuilder();
    if (cacheMaxSize >= 0) {
        cacheBuilder.maximumSize(cacheMaxSize);
    }//ww w  .  j a v a2s. c  o  m
    if (cacheExpire != null) {
        cacheBuilder.expireAfterAccess(cacheExpire.nanos(), TimeUnit.NANOSECONDS);
    }
    this.cache = cacheBuilder.build();

    ImmutableMap.Builder<String, ScriptEngineService> builder = ImmutableMap.builder();
    for (ScriptEngineService scriptEngine : scriptEngines) {
        for (String type : scriptEngine.types()) {
            builder.put(type, scriptEngine);
        }
    }
    this.scriptEngines = builder.build();

    // put some default optimized scripts
    staticCache.put("doc.score", new CompiledScript("native", new DocScoreNativeScriptFactory()));

    // add file watcher for static scripts
    scriptsDirectory = new File(env.configFile(), "scripts");
    FileWatcher fileWatcher = new FileWatcher(scriptsDirectory);
    fileWatcher.addListener(new ScriptChangesListener());

    if (componentSettings.getAsBoolean("auto_reload_enabled", true)) {
        // automatic reload is enabled - register scripts
        resourceWatcherService.add(fileWatcher);
    } else {
        // automatic reload is disable just load scripts once
        fileWatcher.init();
    }
}

From source file:org.eclipse.osee.cache.admin.internal.CacheFactory.java

private CacheBuilder<Object, Object> createCacheBuilder(CacheConfiguration config) {
    CacheBuilder<Object, Object> builder = CacheBuilder.newBuilder();
    if (config.hasInitialCapacity()) {
        builder = builder.initialCapacity(config.getInitialCapacity());
    }//  w w  w .ja v  a 2s.  co  m
    if (config.hasMaximumSize()) {
        builder = builder.maximumSize(config.getMaximumSize());
    }
    if (config.isExpireAfterAccess()) {
        Pair<Long, TimeUnit> data = config.getExpireAfterAccess();
        builder = builder.expireAfterAccess(data.getFirst(), data.getSecond());
    }
    if (config.isExpireAfterWrite()) {
        Pair<Long, TimeUnit> data = config.getExpireAfterWrite();
        builder = builder.expireAfterWrite(data.getFirst(), data.getSecond());
    }
    if (config.isRefreshAfterWrite()) {
        Pair<Long, TimeUnit> data = config.getRefreshAfterWrite();
        builder = builder.refreshAfterWrite(data.getFirst(), data.getSecond());
    }
    return builder;
}

From source file:org.alfresco.repo.cache.DefaultSimpleCache.java

/**
 * Construct a cache using the specified capacity and name.
 * /*from   w w w . ja  v  a2 s.c o  m*/
 * @param maxItems The cache capacity. 0 = use {@link #DEFAULT_CAPACITY}
 * @param useMaxItems Whether the maxItems value should be applied as a size-cap for the cache.
 * @param cacheName An arbitrary cache name.
 */
@SuppressWarnings("unchecked")
public DefaultSimpleCache(int maxItems, boolean useMaxItems, int ttlSecs, int maxIdleSecs, String cacheName) {
    if (maxItems == 0) {
        maxItems = DEFAULT_CAPACITY;
    } else if (maxItems < 0) {
        throw new IllegalArgumentException("maxItems may not be negative, but was " + maxItems);
    }
    this.maxItems = maxItems;
    this.useMaxItems = useMaxItems;
    this.ttlSecs = ttlSecs;
    this.maxIdleSecs = maxIdleSecs;
    setBeanName(cacheName);

    // The map will have a bounded size determined by the maxItems member variable.
    @SuppressWarnings("rawtypes")
    CacheBuilder builder = CacheBuilder.newBuilder();

    if (useMaxItems) {
        builder.maximumSize(maxItems);
    }
    if (ttlSecs > 0) {
        builder.expireAfterWrite(ttlSecs, TimeUnit.SECONDS);
    }
    if (maxIdleSecs > 0) {
        builder.expireAfterAccess(maxIdleSecs, TimeUnit.SECONDS);
    }
    builder.concurrencyLevel(32);

    cache = (Cache<K, AbstractMap.SimpleImmutableEntry<K, V>>) builder.build();
}

From source file:com.github.pagehelper.cache.GuavaCache.java

public GuavaCache(Properties properties, String prefix) {
    CacheBuilder cacheBuilder = CacheBuilder.newBuilder();
    String maximumSize = properties.getProperty(prefix + ".maximumSize");
    if (StringUtil.isNotEmpty(maximumSize)) {
        cacheBuilder.maximumSize(Long.parseLong(maximumSize));
    } else {//from   w w  w . ja  v  a2  s .c  om
        cacheBuilder.maximumSize(1000);
    }
    String expireAfterAccess = properties.getProperty(prefix + ".expireAfterAccess");
    if (StringUtil.isNotEmpty(expireAfterAccess)) {
        cacheBuilder.expireAfterAccess(Long.parseLong(expireAfterAccess), TimeUnit.MILLISECONDS);
    }
    String expireAfterWrite = properties.getProperty(prefix + ".expireAfterWrite");
    if (StringUtil.isNotEmpty(expireAfterWrite)) {
        cacheBuilder.expireAfterWrite(Long.parseLong(expireAfterWrite), TimeUnit.MILLISECONDS);
    }
    String initialCapacity = properties.getProperty(prefix + ".initialCapacity");
    if (StringUtil.isNotEmpty(initialCapacity)) {
        cacheBuilder.initialCapacity(Integer.parseInt(initialCapacity));
    }
    CACHE = cacheBuilder.build();
}

From source file:com.sinotopia.mybatis.pagehelper.cache.GuavaCache.java

public GuavaCache(Properties properties, String prefix) {

    CacheBuilder cacheBuilder = CacheBuilder.newBuilder();
    String maximumSize = properties.getProperty(prefix + ".maximumSize");
    if (StringUtil.isNotEmpty(maximumSize)) {
        cacheBuilder.maximumSize(Long.parseLong(maximumSize));
    } else {/*from   w ww  .  j  a  v  a  2 s. c  om*/
        cacheBuilder.maximumSize(1000);
    }
    String expireAfterAccess = properties.getProperty(prefix + ".expireAfterAccess");
    if (StringUtil.isNotEmpty(expireAfterAccess)) {
        cacheBuilder.expireAfterAccess(Long.parseLong(expireAfterAccess), TimeUnit.MILLISECONDS);
    }
    String expireAfterWrite = properties.getProperty(prefix + ".expireAfterWrite");
    if (StringUtil.isNotEmpty(expireAfterWrite)) {
        cacheBuilder.expireAfterWrite(Long.parseLong(expireAfterWrite), TimeUnit.MILLISECONDS);
    }
    String initialCapacity = properties.getProperty(prefix + ".initialCapacity");
    if (StringUtil.isNotEmpty(initialCapacity)) {
        cacheBuilder.initialCapacity(Integer.parseInt(initialCapacity));
    }
    CACHE = cacheBuilder.build();
}

From source file:org.elasticsearch.indices.cache.filter.IndicesFilterCache.java

private void buildCache() {
    CacheBuilder<WeightedFilterCache.FilterCacheKey, DocIdSet> cacheBuilder = CacheBuilder.newBuilder()
            .removalListener(this).maximumWeight(sizeInBytes)
            .weigher(new WeightedFilterCache.FilterCacheValueWeigher());

    // defaults to 4, but this is a busy map for all indices, increase it a bit
    cacheBuilder.concurrencyLevel(16);// w  ww. ja  v a  2 s. c  om

    if (expire != null) {
        cacheBuilder.expireAfterAccess(expire.millis(), TimeUnit.MILLISECONDS);
    }

    cache = cacheBuilder.build();
}