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

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

Introduction

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

Prototype

long maximumSize

To view the source code for com.google.common.cache CacheBuilder maximumSize.

Click Source Link

Usage

From source file:com.davidbracewell.cache.impl.GuavaCacheUtils.java

/**
 * Converts a CacheSpec into a CacheBuilder
 *
 * @param specification The specification
 * @param <K>           The key type
 * @param <V>           The value type
 * @return The CacheBuilder//from   w  w w .  ja va  2 s  .  c  o m
 */
public static <K, V> CacheBuilder<K, V> cacheBuilderFromSpec(CacheSpec<K, V> specification) {
    CacheBuilder cacheBuilder = CacheBuilder.newBuilder();
    if (specification.getMaxSize() > 0) {
        cacheBuilder.maximumSize(specification.getMaxSize());
    }
    if (specification.getConcurrencyLevel() > 0) {
        cacheBuilder.concurrencyLevel(specification.getMaxSize());
    }
    if (specification.getInitialCapacity() > 0) {
        cacheBuilder.initialCapacity(specification.getInitialCapacity());
    }
    if (specification.getExpiresAfterAccess() > 0) {
        cacheBuilder.expireAfterAccess(specification.getExpiresAfterAccess(), TimeUnit.MILLISECONDS);
    }
    if (specification.getExpiresAfterWrite() > 0) {
        cacheBuilder.expireAfterWrite(specification.getExpiresAfterWrite(), TimeUnit.MILLISECONDS);
    }
    if (specification.isWeakKeys()) {
        cacheBuilder.weakKeys();
    }
    if (specification.isWeakValues()) {
        cacheBuilder.weakValues();
    }
    return Cast.as(cacheBuilder);
}

From source file:no.digipost.cache.inmemory.CacheConfig.java

public static CacheConfig maximumSize(final long size) {
    return new CacheConfig() {
        @Override//from w w w. java 2 s  . c  om
        public CacheBuilder<Object, Object> configure(CacheBuilder<Object, Object> builder) {
            LOG.info("Maximum size = {}", size);
            return builder.maximumSize(size);
        }
    };
}

From source file:com.google.gitiles.ConfigUtil.java

/**
 * Get a {@link CacheBuilder} from a config.
 *
 * @param config JGit config object.//w ww . jav a 2  s .  co  m
 * @param name name of the cache subsection under the "cache" section.
 * @return a new cache builder.
 */
public static CacheBuilder<Object, Object> getCacheBuilder(Config config, String name) {
    CacheBuilder<Object, Object> b = CacheBuilder.newBuilder();
    try {
        if (config.getString("cache", name, "maximumWeight") != null) {
            b.maximumWeight(config.getLong("cache", name, "maximumWeight", 20 << 20));
        }
        if (config.getString("cache", name, "maximumSize") != null) {
            b.maximumSize(config.getLong("cache", name, "maximumSize", 16384));
        }
        Duration expireAfterWrite = getDuration(config, "cache", name, "expireAfterWrite", null);
        if (expireAfterWrite != null) {
            b.expireAfterWrite(expireAfterWrite.getMillis(), TimeUnit.MILLISECONDS);
        }
        Duration expireAfterAccess = getDuration(config, "cache", name, "expireAfterAccess", null);
        if (expireAfterAccess != null) {
            b.expireAfterAccess(expireAfterAccess.getMillis(), TimeUnit.MILLISECONDS);
        }
        // Add other methods as needed.
    } catch (IllegalArgumentException e) {
        throw new IllegalArgumentException("Error getting CacheBuilder for " + name, e);
    } catch (IllegalStateException e) {
        throw new IllegalStateException("Error getting CacheBuilder for " + name, e);
    }
    return b;
}

From source file:com.vsct.dt.hesperides.util.HesperidesCacheBuilder.java

/**
 * Create cache with easy setup.//from   w w  w .java 2  s  .  c  om
 *
 * @param config setup
 * @param weigher Guava weighter
 *
 * @return cache
 */
public static CacheBuilder<Object, Object> newBuilder(final HesperidesCacheParameter config,
        final Weigher<? extends Object, ? extends Object> weigher) {
    final CacheBuilder<Object, Object> cache = CacheBuilder.newBuilder();

    if (config != null) {
        final int maxSize = config.getMaxSize();
        final int weight = config.getWeight();
        final String expire = config.getItemExpireAfter();

        if (maxSize != HesperidesCacheParameter.NOT_SET) {
            cache.maximumSize(maxSize);
        }

        if (weight != HesperidesCacheParameter.NOT_SET) {
            if (weigher == null) {
                throw new IllegalArgumentException("Parameter 'weight' is not supported for this cache.");
            }

            cache.maximumWeight(weight);
        }

        if (expire != null) {
            final Pattern p = Pattern.compile("^([0-9]+)(m|s|h|d)");
            final Matcher m = p.matcher(expire);

            if (m.find()) {
                final int time = Integer.valueOf(m.group(1));
                TimeUnit unit = TimeUnit.SECONDS;

                switch (m.group(2)) {
                case "m":
                    unit = TimeUnit.MINUTES;
                    break;
                case "h":
                    unit = TimeUnit.HOURS;
                    break;
                case "d":
                    unit = TimeUnit.DAYS;
                    break;
                default:
                    // Nothing
                }

                cache.expireAfterWrite(time, unit);
                cache.expireAfterAccess(time, unit);
            } else {
                throw new IllegalArgumentException(
                        "Parameter 'itemExpireAfter' is not valid. Valid usage is [0-9]+(m|h|d|s). (Where 'm' is minutes, 'h' is hours, 'd' is days, 's' seconds.");
            }
        }
    }

    return cache;
}

From source file:org.opendaylight.infrautils.caches.guava.internal.GuavaCacheProvider.java

private static <K, V> CacheBuilder<K, V> newCacheBuilder(BaseCacheConfig cacheConfig,
        CachePolicy initialPolicy) {// w w w .  j  a  va2  s . c om
    Objects.requireNonNull(cacheConfig, "cacheConfig");
    @SuppressWarnings("unchecked")
    // TODO support from(String) with CacheBuilderSpec for configuration from CachePolicy's extensions
    CacheBuilder<K, V> builder = (CacheBuilder<K, V>) CacheBuilder.newBuilder();
    // builder.concurrencyLevel(concurrencyLevel) <= this is a Guava specific setting, TBD String CacheBuilderSpec
    if (initialPolicy.statsEnabled()) {
        builder.recordStats();
    }

    long maxEntries = initialPolicy.maxEntries();
    if (maxEntries != CachePolicy.UNLIMITED_ENTRIES) {
        builder.maximumSize(maxEntries);
    }

    // TODO @see CachePolicy
    //   * TODO builder.concurrencyLevel(initialPolicy.?.concurrencyLevel);
    //   * TODO builder.initialCapacity(initialPolicy.?.initialCapacity)
    return builder;
}

From source file:com.sri.ai.expresso.core.DefaultSymbol.java

private static Cache<Object, Symbol> newSymbolTable() {
    CacheBuilder<Object, Object> cb = CacheBuilder.newBuilder();

    long maximumSize = ExpressoConfiguration.getGlobalSymbolTableMaximumSize();
    // Note: a maximumSize of 
    // < 0 means no size restrictions
    // = 0 means no cache
    // > 0 means maximum size of cache
    if (maximumSize >= 0L) {
        cb.maximumSize(maximumSize);
    }/*from   w  w w . j  a  v a2 s . c  o m*/
    if (AICUtilConfiguration.isRecordCacheStatistics()) {
        cb.recordStats();
    }

    Cache<Object, Symbol> result = cb.build();

    return result;
}

From source file:com.streamsets.pipeline.lib.parser.net.netflow.v9.NetflowV9Decoder.java

public static Cache<FlowSetTemplateCacheKey, FlowSetTemplate> buildTemplateCache(int maxTemplateCacheSize,
        int templateCacheTimeoutMs) {
    CacheBuilder<Object, Object> cacheBuilder = CacheBuilder.newBuilder();
    if (maxTemplateCacheSize > 0) {
        cacheBuilder = cacheBuilder.maximumSize(maxTemplateCacheSize);
    }//  w w w  .j  a va  2s  .c  o  m
    if (templateCacheTimeoutMs > 0) {
        cacheBuilder = cacheBuilder.expireAfterAccess(templateCacheTimeoutMs, TimeUnit.MILLISECONDS);
    }
    if (LOG.isTraceEnabled()) {
        cacheBuilder = cacheBuilder.removalListener(
                (notification) -> LOG.trace("Removing flow set template entry {} for cause: {} ",
                        notification.getKey(), notification.getCause()));
    }
    return cacheBuilder.build();
}

From source file:com.sri.ai.expresso.core.DefaultSyntaxLeaf.java

private static Cache<Object, SyntaxLeaf> newSymbolTable() {
    CacheBuilder<Object, Object> cb = CacheBuilder.newBuilder();

    long maximumSize = ExpressoConfiguration.getGlobalSymbolTableMaximumSize();
    // Note: a maximumSize of 
    // < 0 means no size restrictions
    // = 0 means no cache
    // > 0 means maximum size of cache
    if (maximumSize >= 0L) {
        cb.maximumSize(maximumSize);
    }//  ww w.  j a  v  a2  s  . c  o  m
    if (AICUtilConfiguration.isRecordCacheStatistics()) {
        cb.recordStats();
    }

    Cache<Object, SyntaxLeaf> result = cb.build();

    return result;
}

From source file:com.github.benmanes.caffeine.cache.testing.GuavaLocalCache.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();
    if (context.initialCapacity != InitialCapacity.DEFAULT) {
        builder.initialCapacity(context.initialCapacity.size());
    }//from w w w . jav a 2  s.c o  m
    if (context.isRecordingStats()) {
        builder.recordStats();
    }
    if (context.maximumSize != MaximumSize.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);
    } else if (context.loader().isBulk()) {
        context.cache = new GuavaLoadingCache<>(
                builder.build(new BulkLoader<Integer, Integer>(context.loader())), ticker);
    } else {
        context.cache = new GuavaLoadingCache<>(
                builder.build(new SingleLoader<Integer, Integer>(context.loader())), ticker);
    }
    @SuppressWarnings("unchecked")
    Cache<K, V> castedCache = (Cache<K, V>) context.cache;
    return castedCache;
}

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;// w w w  .  j  ava2s.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;
}