Class CacheBuilderSpec
- java.lang.Object
-
- com.google.common.cache.CacheBuilderSpec
-
@GwtIncompatible public final class CacheBuilderSpec extends java.lang.Object
A specification of aCacheBuilder
configuration.CacheBuilderSpec
supports parsing configuration off of a string, which makes it especially useful for command-line configuration of aCacheBuilder
.The string syntax is a series of comma-separated keys or key-value pairs, each corresponding to a
CacheBuilder
method.concurrencyLevel=[integer]
: setsCacheBuilder.concurrencyLevel
.initialCapacity=[integer]
: setsCacheBuilder.initialCapacity
.maximumSize=[long]
: setsCacheBuilder.maximumSize
.maximumWeight=[long]
: setsCacheBuilder.maximumWeight
.expireAfterAccess=[duration]
: setsCacheBuilder.expireAfterAccess(java.time.Duration)
.expireAfterWrite=[duration]
: setsCacheBuilder.expireAfterWrite(java.time.Duration)
.refreshAfterWrite=[duration]
: setsCacheBuilder.refreshAfterWrite(java.time.Duration)
.weakKeys
: setsCacheBuilder.weakKeys()
.softValues
: setsCacheBuilder.softValues()
.weakValues
: setsCacheBuilder.weakValues()
.recordStats
: setsCacheBuilder.recordStats()
.
The set of supported keys will grow as
CacheBuilder
evolves, but existing keys will never be removed.Durations are represented by an integer, followed by one of "d", "h", "m", or "s", representing days, hours, minutes, or seconds respectively. (There is currently no syntax to request expiration in milliseconds, microseconds, or nanoseconds.)
Whitespace before and after commas and equal signs is ignored. Keys may not be repeated; it is also illegal to use the following pairs of keys in a single value:
maximumSize
andmaximumWeight
softValues
andweakValues
CacheBuilderSpec
does not support configuringCacheBuilder
methods with non-value parameters. These must be configured in code.A new
CacheBuilder
can be instantiated from aCacheBuilderSpec
usingCacheBuilder.from(CacheBuilderSpec)
orCacheBuilder.from(String)
.- Since:
- 12.0
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static class
CacheBuilderSpec.AccessDurationParser
Parse expireAfterAccess(package private) static class
CacheBuilderSpec.ConcurrencyLevelParser
Parse concurrencyLevel(package private) static class
CacheBuilderSpec.DurationParser
Base class for parsing times with durations(package private) static class
CacheBuilderSpec.InitialCapacityParser
Parse initialCapacity(package private) static class
CacheBuilderSpec.IntegerParser
Base class for parsing integers.(package private) static class
CacheBuilderSpec.KeyStrengthParser
Parse weakKeys(package private) static class
CacheBuilderSpec.LongParser
Base class for parsing integers.(package private) static class
CacheBuilderSpec.MaximumSizeParser
Parse maximumSize(package private) static class
CacheBuilderSpec.MaximumWeightParser
Parse maximumWeight(package private) static class
CacheBuilderSpec.RecordStatsParser
Parse recordStats(package private) static class
CacheBuilderSpec.RefreshDurationParser
Parse refreshAfterWriteprivate static interface
CacheBuilderSpec.ValueParser
Parses a single value.(package private) static class
CacheBuilderSpec.ValueStrengthParser
Parse weakValues and softValues(package private) static class
CacheBuilderSpec.WriteDurationParser
Parse expireAfterWrite
-
Field Summary
Fields Modifier and Type Field Description (package private) long
accessExpirationDuration
(package private) java.util.concurrent.TimeUnit
accessExpirationTimeUnit
(package private) java.lang.Integer
concurrencyLevel
(package private) java.lang.Integer
initialCapacity
private static Splitter
KEY_VALUE_SPLITTER
Splits the key from the value.private static Splitter
KEYS_SPLITTER
Splits each key-value pair.(package private) LocalCache.Strength
keyStrength
(package private) java.lang.Long
maximumSize
(package private) java.lang.Long
maximumWeight
(package private) java.lang.Boolean
recordStats
(package private) long
refreshDuration
(package private) java.util.concurrent.TimeUnit
refreshTimeUnit
private java.lang.String
specification
Specification; used for toParseableString().private static ImmutableMap<java.lang.String,CacheBuilderSpec.ValueParser>
VALUE_PARSERS
Map of names to ValueParser.(package private) LocalCache.Strength
valueStrength
(package private) long
writeExpirationDuration
(package private) java.util.concurrent.TimeUnit
writeExpirationTimeUnit
-
Constructor Summary
Constructors Modifier Constructor Description private
CacheBuilderSpec(java.lang.String specification)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static CacheBuilderSpec
disableCaching()
Returns a CacheBuilderSpec that will prevent caching.private static java.lang.Long
durationInNanos(long duration, java.util.concurrent.TimeUnit unit)
Converts an expiration duration/unit pair into a single Long for hashing and equality.boolean
equals(java.lang.Object obj)
private static java.lang.String
format(java.lang.String format, java.lang.Object... args)
int
hashCode()
static CacheBuilderSpec
parse(java.lang.String cacheBuilderSpecification)
Creates a CacheBuilderSpec from a string.(package private) CacheBuilder<java.lang.Object,java.lang.Object>
toCacheBuilder()
Returns a CacheBuilder configured according to this instance's specification.java.lang.String
toParsableString()
Returns a string that can be used to parse an equivalentCacheBuilderSpec
.java.lang.String
toString()
Returns a string representation for this CacheBuilderSpec instance.
-
-
-
Field Detail
-
KEYS_SPLITTER
private static final Splitter KEYS_SPLITTER
Splits each key-value pair.
-
KEY_VALUE_SPLITTER
private static final Splitter KEY_VALUE_SPLITTER
Splits the key from the value.
-
VALUE_PARSERS
private static final ImmutableMap<java.lang.String,CacheBuilderSpec.ValueParser> VALUE_PARSERS
Map of names to ValueParser.
-
initialCapacity
java.lang.Integer initialCapacity
-
maximumSize
java.lang.Long maximumSize
-
maximumWeight
java.lang.Long maximumWeight
-
concurrencyLevel
java.lang.Integer concurrencyLevel
-
keyStrength
LocalCache.Strength keyStrength
-
valueStrength
LocalCache.Strength valueStrength
-
recordStats
java.lang.Boolean recordStats
-
writeExpirationDuration
long writeExpirationDuration
-
writeExpirationTimeUnit
java.util.concurrent.TimeUnit writeExpirationTimeUnit
-
accessExpirationDuration
long accessExpirationDuration
-
accessExpirationTimeUnit
java.util.concurrent.TimeUnit accessExpirationTimeUnit
-
refreshDuration
long refreshDuration
-
refreshTimeUnit
java.util.concurrent.TimeUnit refreshTimeUnit
-
specification
private final java.lang.String specification
Specification; used for toParseableString().
-
-
Method Detail
-
parse
public static CacheBuilderSpec parse(java.lang.String cacheBuilderSpecification)
Creates a CacheBuilderSpec from a string.- Parameters:
cacheBuilderSpecification
- the string form
-
disableCaching
public static CacheBuilderSpec disableCaching()
Returns a CacheBuilderSpec that will prevent caching.
-
toCacheBuilder
CacheBuilder<java.lang.Object,java.lang.Object> toCacheBuilder()
Returns a CacheBuilder configured according to this instance's specification.
-
toParsableString
public java.lang.String toParsableString()
Returns a string that can be used to parse an equivalentCacheBuilderSpec
. The order and form of this representation is not guaranteed, except that reparsing its output will produce aCacheBuilderSpec
equal to this instance.
-
toString
public java.lang.String toString()
Returns a string representation for this CacheBuilderSpec instance. The form of this representation is not guaranteed.- Overrides:
toString
in classjava.lang.Object
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
equals
public boolean equals(java.lang.Object obj)
- Overrides:
equals
in classjava.lang.Object
-
durationInNanos
private static java.lang.Long durationInNanos(long duration, java.util.concurrent.TimeUnit unit)
Converts an expiration duration/unit pair into a single Long for hashing and equality. Uses nanos to match CacheBuilder implementation.
-
format
private static java.lang.String format(java.lang.String format, java.lang.Object... args)
-
-