Class CaffeineSpec
- java.lang.Object
-
- com.github.benmanes.caffeine.cache.CaffeineSpec
-
public final class CaffeineSpec extends java.lang.Object
A specification of aCaffeine
builder configuration.CaffeineSpec
supports parsing configuration off of a string, which makes it especially useful for command-line configuration of aCaffeine
builder.The string syntax is a series of comma-separated keys or key-value pairs, each corresponding to a
Caffeine
builder method.initialCapacity=[integer]
: setsCaffeine.initialCapacity
.maximumSize=[long]
: setsCaffeine.maximumSize
.maximumWeight=[long]
: setsCaffeine.maximumWeight
.expireAfterAccess=[duration]
: setsCaffeine.expireAfterAccess(long, java.util.concurrent.TimeUnit)
.expireAfterWrite=[duration]
: setsCaffeine.expireAfterWrite(long, java.util.concurrent.TimeUnit)
.refreshAfterWrite=[duration]
: setsCaffeine.refreshAfterWrite(long, java.util.concurrent.TimeUnit)
.weakKeys
: setsCaffeine.weakKeys()
.weakValues
: setsCaffeine.weakValues()
.softValues
: setsCaffeine.softValues()
.recordStats
: setsCaffeine.recordStats()
.
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
weakValues
andsoftValues
CaffeineSpec
does not support configuringCaffeine
methods with non-value parameters. These must be configured in code.A new
Caffeine
builder can be instantiated from aCaffeineSpec
usingCaffeine.from(CaffeineSpec)
orCaffeine.from(String)
.
-
-
Field Summary
Fields Modifier and Type Field Description (package private) long
expireAfterAccessDuration
(package private) java.util.concurrent.TimeUnit
expireAfterAccessTimeUnit
(package private) long
expireAfterWriteDuration
(package private) java.util.concurrent.TimeUnit
expireAfterWriteTimeUnit
(package private) int
initialCapacity
(package private) Caffeine.Strength
keyStrength
(package private) long
maximumSize
(package private) long
maximumWeight
(package private) boolean
recordStats
(package private) long
refreshAfterWriteDuration
(package private) java.util.concurrent.TimeUnit
refreshAfterWriteTimeUnit
(package private) java.lang.String
specification
(package private) static java.lang.String
SPLIT_KEY_VALUE
(package private) static java.lang.String
SPLIT_OPTIONS
(package private) Caffeine.Strength
valueStrength
-
Constructor Summary
Constructors Modifier Constructor Description private
CaffeineSpec(java.lang.String specification)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) void
configure(java.lang.String key, java.lang.String value)
Configures the setting.(package private) static 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 o)
(package private) void
expireAfterAccess(java.lang.String key, java.lang.String value)
Configures expire after access.(package private) void
expireAfterWrite(java.lang.String key, java.lang.String value)
Configures expire after write.int
hashCode()
(package private) void
initialCapacity(java.lang.String key, java.lang.String value)
Configures the initial capacity.(package private) void
maximumSize(java.lang.String key, java.lang.String value)
Configures the maximum size.(package private) void
maximumWeight(java.lang.String key, java.lang.String value)
Configures the maximum size.static CaffeineSpec
parse(java.lang.String specification)
Creates a CaffeineSpec from a string.(package private) static long
parseDuration(java.lang.String key, java.lang.String value)
Returns a parsed duration value.(package private) static int
parseInt(java.lang.String key, java.lang.String value)
Returns a parsed int value.(package private) static long
parseLong(java.lang.String key, java.lang.String value)
Returns a parsed long value.(package private) void
parseOption(java.lang.String option)
Parses and applies the configuration option.(package private) static java.util.concurrent.TimeUnit
parseTimeUnit(java.lang.String key, java.lang.String value)
Returns a parsedTimeUnit
value.(package private) void
recordStats(java.lang.String value)
Configures the value as weak or soft references.(package private) void
refreshAfterWrite(java.lang.String key, java.lang.String value)
Configures refresh after write.(package private) Caffeine<java.lang.Object,java.lang.Object>
toBuilder()
Returns aCaffeine
builder configured according to this specification.java.lang.String
toParsableString()
Returns a string that can be used to parse an equivalentCaffeineSpec
.java.lang.String
toString()
Returns a string representation for thisCaffeineSpec
instance.(package private) void
valueStrength(java.lang.String key, java.lang.String value, Caffeine.Strength strength)
Configures the value as weak or soft references.(package private) void
weakKeys(java.lang.String value)
Configures the keys as weak references.
-
-
-
Field Detail
-
SPLIT_OPTIONS
static final java.lang.String SPLIT_OPTIONS
- See Also:
- Constant Field Values
-
SPLIT_KEY_VALUE
static final java.lang.String SPLIT_KEY_VALUE
- See Also:
- Constant Field Values
-
specification
final java.lang.String specification
-
initialCapacity
int initialCapacity
-
maximumWeight
long maximumWeight
-
maximumSize
long maximumSize
-
recordStats
boolean recordStats
-
keyStrength
Caffeine.Strength keyStrength
-
valueStrength
Caffeine.Strength valueStrength
-
expireAfterAccessDuration
long expireAfterAccessDuration
-
expireAfterAccessTimeUnit
java.util.concurrent.TimeUnit expireAfterAccessTimeUnit
-
expireAfterWriteDuration
long expireAfterWriteDuration
-
expireAfterWriteTimeUnit
java.util.concurrent.TimeUnit expireAfterWriteTimeUnit
-
refreshAfterWriteDuration
long refreshAfterWriteDuration
-
refreshAfterWriteTimeUnit
java.util.concurrent.TimeUnit refreshAfterWriteTimeUnit
-
-
Method Detail
-
toBuilder
Caffeine<java.lang.Object,java.lang.Object> toBuilder()
Returns aCaffeine
builder configured according to this specification.- Returns:
- a builder configured to the specification
-
parse
public static CaffeineSpec parse(java.lang.String specification)
Creates a CaffeineSpec from a string.- Parameters:
specification
- the string form- Returns:
- the parsed specification
-
parseOption
void parseOption(java.lang.String option)
Parses and applies the configuration option.
-
configure
void configure(java.lang.String key, @Nullable java.lang.String value)
Configures the setting.
-
initialCapacity
void initialCapacity(java.lang.String key, java.lang.String value)
Configures the initial capacity.
-
maximumSize
void maximumSize(java.lang.String key, java.lang.String value)
Configures the maximum size.
-
maximumWeight
void maximumWeight(java.lang.String key, java.lang.String value)
Configures the maximum size.
-
weakKeys
void weakKeys(@Nullable java.lang.String value)
Configures the keys as weak references.
-
valueStrength
void valueStrength(java.lang.String key, @Nullable java.lang.String value, Caffeine.Strength strength)
Configures the value as weak or soft references.
-
expireAfterAccess
void expireAfterAccess(java.lang.String key, java.lang.String value)
Configures expire after access.
-
expireAfterWrite
void expireAfterWrite(java.lang.String key, java.lang.String value)
Configures expire after write.
-
refreshAfterWrite
void refreshAfterWrite(java.lang.String key, java.lang.String value)
Configures refresh after write.
-
recordStats
void recordStats(@Nullable java.lang.String value)
Configures the value as weak or soft references.
-
parseInt
static int parseInt(java.lang.String key, java.lang.String value)
Returns a parsed int value.
-
parseLong
static long parseLong(java.lang.String key, java.lang.String value)
Returns a parsed long value.
-
parseDuration
static long parseDuration(java.lang.String key, java.lang.String value)
Returns a parsed duration value.
-
parseTimeUnit
static java.util.concurrent.TimeUnit parseTimeUnit(java.lang.String key, java.lang.String value)
Returns a parsedTimeUnit
value.
-
equals
public boolean equals(java.lang.Object o)
- Overrides:
equals
in classjava.lang.Object
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
durationInNanos
static long durationInNanos(long duration, @Nullable java.util.concurrent.TimeUnit unit)
Converts an expiration duration/unit pair into a single long for hashing and equality.
-
toParsableString
public java.lang.String toParsableString()
Returns a string that can be used to parse an equivalentCaffeineSpec
. The order and form of this representation is not guaranteed, except that parsing its output will produce aCaffeineSpec
equal to this instance.- Returns:
- a string representation of this specification
-
toString
public java.lang.String toString()
Returns a string representation for thisCaffeineSpec
instance. The form of this representation is not guaranteed.- Overrides:
toString
in classjava.lang.Object
-
-