@Override public int hashCode() { return Objects.hashCode( initialCapacity, maximumSize, maximumWeight, concurrencyLevel, keyStrength, valueStrength, recordStats, durationInNanos(writeExpirationDuration, writeExpirationTimeUnit), durationInNanos(accessExpirationDuration, accessExpirationTimeUnit), durationInNanos(refreshDuration, refreshTimeUnit)); }
/** Returns a CacheBuilderSpec that will prevent caching. */ public static CacheBuilderSpec disableCaching() { // Maximum size of zero is one way to block caching return CacheBuilderSpec.parse("maximumSize=0"); }
/** * Constructs a new {@code CacheBuilder} instance with the settings specified in {@code spec}. * * @since 12.0 */ @GwtIncompatible // To be supported public static CacheBuilder<Object, Object> from(CacheBuilderSpec spec) { return spec.toCacheBuilder().lenientParsing(); }
/** * Returns a string representation for this CacheBuilderSpec instance. The form of this * representation is not guaranteed. */ @Override public String toString() { return MoreObjects.toStringHelper(this).addValue(toParsableString()).toString(); }
/** * Creates a CacheBuilderSpec from a string. * * @param cacheBuilderSpecification the string form */ public static CacheBuilderSpec parse(String cacheBuilderSpecification) { CacheBuilderSpec spec = new CacheBuilderSpec(cacheBuilderSpecification); if (!cacheBuilderSpecification.isEmpty()) { for (String keyValuePair : KEYS_SPLITTER.split(cacheBuilderSpecification)) { List<String> keyAndValue = ImmutableList.copyOf(KEY_VALUE_SPLITTER.split(keyValuePair)); checkArgument(!keyAndValue.isEmpty(), "blank key-value pair"); checkArgument( keyAndValue.size() <= 2, "key-value pair %s with more than one equals sign", keyValuePair); // Find the ValueParser for the current key. String key = keyAndValue.get(0); ValueParser valueParser = VALUE_PARSERS.get(key); checkArgument(valueParser != null, "unknown key %s", key); String value = keyAndValue.size() == 1 ? null : keyAndValue.get(1); valueParser.parse(spec, key, value); } } return spec; }
/** * Constructs a new {@code CacheBuilder} instance with the settings specified in {@code spec}. * This is especially useful for command-line configuration of a {@code CacheBuilder}. * * @param spec a String in the format specified by {@link CacheBuilderSpec} * @since 12.0 */ @GwtIncompatible // To be supported public static CacheBuilder<Object, Object> from(String spec) { return from(CacheBuilderSpec.parse(spec)); }
@Override public boolean equals(@NullableDecl Object obj) { if (this == obj) { return true; } if (!(obj instanceof CacheBuilderSpec)) { return false; } CacheBuilderSpec that = (CacheBuilderSpec) obj; return Objects.equal(initialCapacity, that.initialCapacity) && Objects.equal(maximumSize, that.maximumSize) && Objects.equal(maximumWeight, that.maximumWeight) && Objects.equal(concurrencyLevel, that.concurrencyLevel) && Objects.equal(keyStrength, that.keyStrength) && Objects.equal(valueStrength, that.valueStrength) && Objects.equal(recordStats, that.recordStats) && Objects.equal( durationInNanos(writeExpirationDuration, writeExpirationTimeUnit), durationInNanos(that.writeExpirationDuration, that.writeExpirationTimeUnit)) && Objects.equal( durationInNanos(accessExpirationDuration, accessExpirationTimeUnit), durationInNanos(that.accessExpirationDuration, that.accessExpirationTimeUnit)) && Objects.equal( durationInNanos(refreshDuration, refreshTimeUnit), durationInNanos(that.refreshDuration, that.refreshTimeUnit)); }