public abstract class AbstractValueAdaptingCache extends Object implements Cache
Cache implementations that need to adapt
null values (and potentially other such special values) before
passing them on to the underlying store.
Transparently replaces given null user values with an internal
NullValue.INSTANCE, if configured to support null values
(as indicated by isAllowNullValues().
Cache.ValueRetrievalException, Cache.ValueWrapper| Modifier | Constructor and Description |
|---|---|
protected |
AbstractValueAdaptingCache(boolean allowNullValues)
Create an
AbstractValueAdaptingCache with the given setting. |
| Modifier and Type | Method and Description |
|---|---|
protected Object |
fromStoreValue(Object storeValue)
Convert the given value from the internal store to a user value
returned from the get method (adapting
null). |
Cache.ValueWrapper |
get(Object key)
Return the value to which this cache maps the specified key.
|
<T> T |
get(Object key,
Class<T> type)
Return the value to which this cache maps the specified key,
generically specifying a type that return value will be cast to.
|
boolean |
isAllowNullValues()
Return whether
null values are allowed in this cache. |
protected abstract Object |
lookup(Object key)
Perform an actual lookup in the underlying store.
|
protected Object |
toStoreValue(Object userValue)
Convert the given user value, as passed into the put method,
to a value in the internal store (adapting
null). |
protected Cache.ValueWrapper |
toValueWrapper(Object storeValue)
Wrap the given store value with a
SimpleValueWrapper, also going
through fromStoreValue(java.lang.Object) conversion. |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitclear, evict, get, getName, getNativeCache, put, putIfAbsentprotected AbstractValueAdaptingCache(boolean allowNullValues)
AbstractValueAdaptingCache with the given setting.allowNullValues - whether to allow for null valuespublic final boolean isAllowNullValues()
null values are allowed in this cache.public Cache.ValueWrapper get(Object key)
CacheReturns null if the cache contains no mapping for this key;
otherwise, the cached value (which may be null itself) will
be returned in a Cache.ValueWrapper.
get in interface Cachekey - the key whose associated value is to be returnedCache.ValueWrapper which may also hold
a cached null value. A straight null being
returned means that the cache contains no mapping for this key.Cache.get(Object, Class)public <T> T get(Object key, Class<T> type)
CacheNote: This variant of get does not allow for differentiating
between a cached null value and no cache entry found at all.
Use the standard Cache.get(Object) variant for that purpose instead.
get in interface Cachekey - the key whose associated value is to be returnedtype - the required type of the returned value (may be
null to bypass a type check; in case of a null
value found in the cache, the specified type is irrelevant)null itself), or also null if
the cache contains no mapping for this keyCache.get(Object)protected abstract Object lookup(Object key)
key - the key whose associated value is to be returnedprotected Object fromStoreValue(Object storeValue)
null).storeValue - the store valueprotected Object toStoreValue(Object userValue)
null).userValue - the given user valueprotected Cache.ValueWrapper toValueWrapper(Object storeValue)
SimpleValueWrapper, also going
through fromStoreValue(java.lang.Object) conversion. Useful for get(Object)
and Cache.putIfAbsent(Object, Object) implementations.storeValue - the original value