public final class CacheBuilderSpec
extends java.lang.Object
CacheBuilder
configuration.
CacheBuilderSpec
supports parsing configuration off of a string, which makes it
especially useful for command-line configuration of a CacheBuilder
.
The string syntax is a series of comma-separated keys or key-value pairs, each corresponding
to a CacheBuilder
method.
concurrencyLevel=[integer]
: sets CacheBuilder.concurrencyLevel
.
initialCapacity=[integer]
: sets CacheBuilder.initialCapacity
.
maximumSize=[long]
: sets CacheBuilder.maximumSize
.
maximumWeight=[long]
: sets CacheBuilder.maximumWeight
.
expireAfterAccess=[duration]
: sets CacheBuilder.expireAfterAccess(java.time.Duration)
.
expireAfterWrite=[duration]
: sets CacheBuilder.expireAfterWrite(java.time.Duration)
.
refreshAfterWrite=[duration]
: sets CacheBuilder.refreshAfterWrite(java.time.Duration)
.
weakKeys
: sets CacheBuilder.weakKeys()
.
softValues
: sets CacheBuilder.softValues()
.
weakValues
: sets CacheBuilder.weakValues()
.
recordStats
: sets CacheBuilder.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
and maximumWeight
softValues
and weakValues
CacheBuilderSpec
does not support configuring CacheBuilder
methods with
non-value parameters. These must be configured in code.
A new CacheBuilder
can be instantiated from a CacheBuilderSpec
using CacheBuilder.from(CacheBuilderSpec)
or CacheBuilder.from(String)
.
Modifier and Type | Class and 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 refreshAfterWrite
|
private 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
|
Modifier and Type | Field and 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 |
Modifier | Constructor and Description |
---|---|
private |
CacheBuilderSpec(java.lang.String specification) |
Modifier and Type | Method and 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 equivalent
CacheBuilderSpec . |
java.lang.String |
toString()
Returns a string representation for this CacheBuilderSpec instance.
|
private static final Splitter KEYS_SPLITTER
private static final Splitter KEY_VALUE_SPLITTER
private static final ImmutableMap<java.lang.String,CacheBuilderSpec.ValueParser> VALUE_PARSERS
java.lang.Integer initialCapacity
java.lang.Long maximumSize
java.lang.Long maximumWeight
java.lang.Integer concurrencyLevel
LocalCache.Strength keyStrength
LocalCache.Strength valueStrength
java.lang.Boolean recordStats
long writeExpirationDuration
java.util.concurrent.TimeUnit writeExpirationTimeUnit
long accessExpirationDuration
java.util.concurrent.TimeUnit accessExpirationTimeUnit
long refreshDuration
java.util.concurrent.TimeUnit refreshTimeUnit
private final java.lang.String specification
public static CacheBuilderSpec parse(java.lang.String cacheBuilderSpecification)
cacheBuilderSpecification
- the string formpublic static CacheBuilderSpec disableCaching()
CacheBuilder<java.lang.Object,java.lang.Object> toCacheBuilder()
public java.lang.String toParsableString()
CacheBuilderSpec
. The order
and form of this representation is not guaranteed, except that reparsing its output will
produce a CacheBuilderSpec
equal to this instance.public java.lang.String toString()
toString
in class java.lang.Object
public int hashCode()
hashCode
in class java.lang.Object
public boolean equals(java.lang.Object obj)
equals
in class java.lang.Object
private static java.lang.Long durationInNanos(long duration, java.util.concurrent.TimeUnit unit)
private static java.lang.String format(java.lang.String format, java.lang.Object... args)