K
- the type of keyV
- the type of valueAutoCloseable
, Closeable
, Iterable<Cache.Entry<K,V>>
public interface Cache<K,V> extends Iterable<Cache.Entry<K,V>>, Closeable
Cache
is a Map-like data structure that provides temporary storage
of application data.
Cache.Entry
Iterable
null
will result in a NullPointerException
CacheLoader
(read-through-caching)
when a value being requested is not in a cacheCacheWriter
(write-through-caching)
when a value being created/updated/removed from a cacheA simple example of how to use a cache is:
String cacheName = "sampleCache";
CachingProvider provider = Caching.getCachingProvider();
CacheManager manager = provider.getCacheManager();
Cache<Integer, Date> cache = manager.getCache(cacheName, Integer.class,
Date.class);
Date value1 = new Date();
Integer key = 1;
cache.put(key, value1);
Date value2 = cache.get(key);
Modifier and Type | Interface | Description |
---|---|---|
static interface |
Cache.Entry<K,V> |
A cache entry (key-value pair).
|
Modifier and Type | Method | Description |
---|---|---|
void |
clear() |
Clears the contents of the cache, without notifying listeners or
CacheWriter s. |
void |
close() |
Closing a
Cache signals to the CacheManager that produced or
owns the Cache that it should no longer be managed. |
boolean |
containsKey(K key) |
Determines if the
Cache contains an entry for the specified key. |
void |
deregisterCacheEntryListener(CacheEntryListenerConfiguration<K,V> cacheEntryListenerConfiguration) |
Deregisters a listener, using the
CacheEntryListenerConfiguration that was used to register it. |
V |
get(K key) |
Gets an entry from the cache.
|
Map<K,V> |
getAll(Set<? extends K> keys) |
|
V |
getAndPut(K key,
V value) |
Associates the specified value with the specified key in this cache,
returning an existing value if one existed.
|
V |
getAndRemove(K key) |
Atomically removes the entry for a key only if currently mapped to some
value.
|
V |
getAndReplace(K key,
V value) |
Atomically replaces the value for a given key if and only if there is a
value currently mapped by the key.
|
CacheManager |
getCacheManager() |
Gets the
CacheManager that owns and manages the Cache . |
<C extends Configuration<K,V>> |
getConfiguration(Class<C> clazz) |
Provides a standard way to access the configuration of a cache using
JCache configuration or additional proprietary configuration.
|
String |
getName() |
Return the name of the cache.
|
<T> T |
invoke(K key,
EntryProcessor<K,V,T> entryProcessor,
Object... arguments) |
Invokes an
EntryProcessor against the Cache.Entry specified by
the provided key. |
<T> Map<K,EntryProcessorResult<T>> |
invokeAll(Set<? extends K> keys,
EntryProcessor<K,V,T> entryProcessor,
Object... arguments) |
Invokes an
EntryProcessor against the set of Cache.Entry s
specified by the set of keys. |
boolean |
isClosed() |
Determines whether this Cache instance has been closed.
|
Iterator<Cache.Entry<K,V>> |
iterator() |
|
void |
loadAll(Set<? extends K> keys,
boolean replaceExistingValues,
CompletionListener completionListener) |
Asynchronously loads the specified entries into the cache using the
configured
CacheLoader for the given keys. |
void |
put(K key,
V value) |
Associates the specified value with the specified key in the cache.
|
void |
putAll(Map<? extends K,? extends V> map) |
Copies all of the entries from the specified map to the
Cache . |
boolean |
putIfAbsent(K key,
V value) |
Atomically associates the specified key with the given value if it is
not already associated with a value.
|
void |
registerCacheEntryListener(CacheEntryListenerConfiguration<K,V> cacheEntryListenerConfiguration) |
Registers a
CacheEntryListener . |
boolean |
remove(K key) |
Removes the mapping for a key from this cache if it is present.
|
boolean |
remove(K key,
V oldValue) |
Atomically removes the mapping for a key only if currently mapped to the
given value.
|
void |
removeAll() |
Removes all of the mappings from this cache.
|
void |
removeAll(Set<? extends K> keys) |
Removes entries for the specified keys.
|
boolean |
replace(K key,
V value) |
Atomically replaces the entry for a key only if currently mapped to some
value.
|
boolean |
replace(K key,
V oldValue,
V newValue) |
Atomically replaces the entry for a key only if currently mapped to a
given value.
|
<T> T |
unwrap(Class<T> clazz) |
Provides a standard way to access the underlying concrete caching
implementation to provide access to further, proprietary features.
|
forEach, spliterator
V get(K key)
If the cache is configured to use read-through, and get would return null
because the entry is missing from the cache, the Cache's CacheLoader
is called in an attempt to load the entry.
key
- the key whose associated value is to be returnedIllegalStateException
- if the cache is isClosed()
NullPointerException
- if the key is nullCacheException
- if there is a problem fetching the valueClassCastException
- if the implementation is configured to perform
runtime-type-checking, and the key or value
types are incompatible with those that have been
configured for the Cache
Map<K,V> getAll(Set<? extends K> keys)
Cache
, returning them as
Map
of the values associated with the set of keys requested.
If the cache is configured read-through, and a get for a key would
return null because an entry is missing from the cache, the Cache's
CacheLoader
is called in an attempt to load the entry. If an
entry cannot be loaded for a given key, the key will not be present in
the returned Map.
keys
- The keys whose associated values are to be returned.NullPointerException
- if keys is null or if keys contains a nullIllegalStateException
- if the cache is isClosed()
CacheException
- if there is a problem fetching the valuesClassCastException
- if the implementation is configured to perform
runtime-type-checking, and the key or value
types are incompatible with those that have been
configured for the Cache
boolean containsKey(K key)
Cache
contains an entry for the specified key.
More formally, returns true if and only if this cache contains a mapping for a key k such that key.equals(k). (There can be at most one such mapping.)
If the cache is configured read-through the associated CacheLoader
is not called. Only the cache is checked.
key
- key whose presence in this cache is to be tested.NullPointerException
- if key is nullIllegalStateException
- if the cache is isClosed()
CacheException
- it there is a problem checking the mappingClassCastException
- if the implementation is configured to perform
runtime-type-checking, and the key or value
types are incompatible with those that have been
configured for the Cache
Map.containsKey(Object)
void loadAll(Set<? extends K> keys, boolean replaceExistingValues, CompletionListener completionListener)
CacheLoader
for the given keys.
If an entry for a key already exists in the Cache, a value will be loaded
if and only if replaceExistingValues
is true. If no loader
is configured for the cache, no objects will be loaded. If a problem is
encountered during the retrieving or loading of the objects,
an exception is provided to the CompletionListener
. Once the
operation has completed, the specified CompletionListener is notified.
Implementations may choose to load multiple keys from the provided
Set
in parallel. Iteration however must not occur in parallel,
thus allow for non-thread-safe Set
s to be used.
The thread on which the completion listener is called is implementation dependent. An implementation may also choose to serialize calls to different CompletionListeners rather than use a thread per CompletionListener.
keys
- the keys to loadreplaceExistingValues
- when true existing values in the Cache will
be replaced by those loaded from a CacheLoadercompletionListener
- the CompletionListener (may be null)NullPointerException
- if keys is null or if keys contains a null.IllegalStateException
- if the cache is isClosed()
CacheException
- thrown if there is a problem performing the
load. This may also be thrown on calling if
there are insufficient threads available to
perform the load.ClassCastException
- if the implementation is configured to perform
runtime-type-checking, and the key or value
types are incompatible with those that have been
configured for the Cache
void put(K key, V value)
If the Cache
previously contained a mapping for the key, the old
value is replaced by the specified value. (A cache c is said to
contain a mapping for a key k if and only if c.containsKey(k)
would return true.)
If the cache is configured write-through the
CacheWriter.write(Cache.Entry)
method will be called.
key
- key with which the specified value is to be associatedvalue
- value to be associated with the specified keyNullPointerException
- if key is null or if value is nullIllegalStateException
- if the cache is isClosed()
CacheException
- if there is a problem doing the putClassCastException
- if the implementation is configured to perform
runtime-type-checking, and the key or value
types are incompatible with those that have been
configured for the Cache
Map.put(Object, Object)
,
getAndPut(Object, Object)
,
getAndReplace(Object, Object)
,
CacheWriter.write(javax.cache.Cache.Entry<? extends K, ? extends V>)
V getAndPut(K key, V value)
If the cache previously contained a mapping for
the key, the old value is replaced by the specified value. (A cache
c is said to contain a mapping for a key k if and only
if c.containsKey(k)
would return
true.)
The previous value is returned, or null if there was no value associated with the key previously.
If the cache is configured write-through the associated
CacheWriter.write(Cache.Entry)
method will be called.
key
- key with which the specified value is to be associatedvalue
- value to be associated with the specified keyNullPointerException
- if key is null or if value is nullIllegalStateException
- if the cache is isClosed()
CacheException
- if there is a problem doing the putClassCastException
- if the implementation is configured to perform
runtime-type-checking, and the key or value
types are incompatible with those that have been
configured for the Cache
put(Object, Object)
,
getAndReplace(Object, Object)
,
CacheWriter.write(Cache.Entry)
void putAll(Map<? extends K,? extends V> map)
Cache
.
The effect of this call is equivalent to that of calling
put(k, v)
on this cache once for each mapping
from key k to value v in the specified map.
The order in which the individual puts occur is undefined.
The behavior of this operation is undefined if entries in the cache corresponding to entries in the map are modified or removed while this operation is in progress. or if map is modified while the operation is in progress.
In Default Consistency mode, individual puts occur atomically but not the entire putAll. Listeners may observe individual updates.
If the cache is configured write-through the associated
CacheWriter.writeAll(java.util.Collection<javax.cache.Cache.Entry<? extends K, ? extends V>>)
method will be called.
map
- mappings to be stored in this cacheNullPointerException
- if map is null or if map contains null keys
or values.IllegalStateException
- if the cache is isClosed()
CacheException
- if there is a problem doing the put.ClassCastException
- if the implementation is configured to perform
runtime-type-checking, and the key or value
types are incompatible with those that have been
configured for the Cache
CacheWriter.writeAll(java.util.Collection<javax.cache.Cache.Entry<? extends K, ? extends V>>)
boolean putIfAbsent(K key, V value)
This is equivalent to:
if (!cache.containsKey(key)) {}
cache.put(key, value);
return true;
} else {
return false;
}
except that the action is performed atomically.
If the cache is configured write-through, and this method returns true,
the associated CacheWriter.write(Cache.Entry)
method will be called.
key
- key with which the specified value is to be associatedvalue
- value to be associated with the specified keyNullPointerException
- if key is null or value is nullIllegalStateException
- if the cache is isClosed()
CacheException
- if there is a problem doing the putClassCastException
- if the implementation is configured to perform
runtime-type-checking, and the key or value
types are incompatible with those that have been
configured for the Cache
CacheWriter.write(javax.cache.Cache.Entry<? extends K, ? extends V>)
boolean remove(K key)
More formally, if this cache contains a mapping from key k to
value v such that
(key==null ? k==null : key.equals(k))
, that mapping is removed.
(The cache can contain at most one such mapping.)
Returns true if this cache previously associated the key, or false if the cache contained no mapping for the key.
The cache will not contain a mapping for the specified key once the call returns.
If the cache is configured write-through the associated
CacheWriter.delete(Object)
method will be called.
key
- key whose mapping is to be removed from the cacheNullPointerException
- if key is nullIllegalStateException
- if the cache is isClosed()
CacheException
- if there is a problem doing the removeClassCastException
- if the implementation is configured to perform
runtime-type-checking, and the key or value
types are incompatible with those that have been
configured for the Cache
CacheWriter.delete(java.lang.Object)
boolean remove(K key, V oldValue)
This is equivalent to:
if (cache.containsKey(key) && equals(cache.get(key), oldValue) {
cache.remove(key);
return true;
} else {
return false;
}
except that the action is performed atomically.
If the cache is configured write-through, and this method returns true,
the associated CacheWriter.delete(Object)
method will be called.
key
- key whose mapping is to be removed from the cacheoldValue
- value expected to be associated with the specified keyNullPointerException
- if key is nullIllegalStateException
- if the cache is isClosed()
CacheException
- if there is a problem doing the removeClassCastException
- if the implementation is configured to perform
runtime-type-checking, and the key or value
types are incompatible with those that have been
configured for the Cache
CacheWriter.delete(java.lang.Object)
V getAndRemove(K key)
This is equivalent to:
if (cache.containsKey(key)) {
V oldValue = cache.get(key);
cache.remove(key);
return oldValue;
} else {
return null;
}
except that the action is performed atomically.
If the cache is configured write-through the associated
CacheWriter.delete(Object)
method will be called.
key
- key with which the specified value is associatedNullPointerException
- if the specified key or value is null.IllegalStateException
- if the cache is isClosed()
CacheException
- if there is a problem during the removeClassCastException
- if the implementation is configured to perform
runtime-type-checking, and the key or value
types are incompatible with those that have been
configured for the Cache
CacheWriter.delete(java.lang.Object)
boolean replace(K key, V oldValue, V newValue)
This is equivalent to:
if (cache.containsKey(key) && equals(cache.get(key), oldValue)) {
cache.put(key, newValue);
return true;
} else {
return false;
}
except that the action is performed atomically.
If the cache is configured write-through, and this method returns true,
the associated CacheWriter.write(Cache.Entry)
method will be called.
key
- key with which the specified value is associatedoldValue
- value expected to be associated with the specified keynewValue
- value to be associated with the specified keyNullPointerException
- if key is null or if the values are nullIllegalStateException
- if the cache is isClosed()
CacheException
- if there is a problem during the replaceClassCastException
- if the implementation is configured to perform
runtime-type-checking, and the key or value
types are incompatible with those that have been
configured for the Cache
CacheWriter.write(javax.cache.Cache.Entry<? extends K, ? extends V>)
boolean replace(K key, V value)
This is equivalent to
if (cache.containsKey(key)) {
cache.put(key, value);
return true;
} else {
return false;
}
except that the action is performed atomically.
If the cache is configured write-through, and this method returns true,
the associated CacheWriter.write(Cache.Entry)
method will be called.
key
- the key with which the specified value is associatedvalue
- the value to be associated with the specified keyNullPointerException
- if key is null or if value is nullIllegalStateException
- if the cache is isClosed()
CacheException
- if there is a problem during the replaceClassCastException
- if the implementation is configured to perform
runtime-type-checking, and the key or value
types are incompatible with those that have been
configured for the Cache
getAndReplace(Object, Object)
,
CacheWriter.write(javax.cache.Cache.Entry<? extends K, ? extends V>)
V getAndReplace(K key, V value)
This is equivalent to
if (cache.containsKey(key)) {
V oldValue = cache.get(key);
cache.put(key, value);
return oldValue;
} else {
return null;
}
except that the action is performed atomically.
If the cache is configured write-through, and this method returns true,
the associated CacheWriter.write(Cache.Entry)
method will be called.
key
- key with which the specified value is associatedvalue
- value to be associated with the specified keyNullPointerException
- if key is null or if value is nullIllegalStateException
- if the cache is isClosed()
CacheException
- if there is a problem during the replaceClassCastException
- if the implementation is configured to perform
runtime-type-checking, and the key or value
types are incompatible with those that have been
configured for the Cache
ConcurrentMap.replace(Object, Object)
,
CacheWriter.write(javax.cache.Cache.Entry<? extends K, ? extends V>)
void removeAll(Set<? extends K> keys)
The order in which the individual entries are removed is undefined.
For every entry in the key set, the following are called:
CacheEntryRemovedListener
sCacheWriter
keys
- the keys to removeNullPointerException
- if keys is null or if it contains a null keyIllegalStateException
- if the cache is isClosed()
CacheException
- if there is a problem during the removeClassCastException
- if the implementation is configured to perform
runtime-type-checking, and the key or value
types are incompatible with those that have been
configured for the Cache
CacheWriter.deleteAll(java.util.Collection<?>)
void removeAll()
The order that the individual entries are removed is undefined.
For every mapping that exists the following are called:
CacheEntryRemovedListener
sCacheWriter
CacheWriter
is not called.
This is potentially an expensive operation as listeners are invoked.
Use clear()
to avoid this.
IllegalStateException
- if the cache is isClosed()
CacheException
- if there is a problem during the removeclear()
,
CacheWriter.deleteAll(java.util.Collection<?>)
void clear()
CacheWriter
s.IllegalStateException
- if the cache is isClosed()
CacheException
- if there is a problem during the clear<C extends Configuration<K,V>> C getConfiguration(Class<C> clazz)
The returned value must be immutable.
If the provider's implementation does not support the specified class,
the IllegalArgumentException
is thrown.
C
- the type of the Configurationclazz
- the configuration interface or class to return. This includes
Configuration
.class and
CompleteConfiguration
s.Configuration
IllegalArgumentException
- if the caching provider doesn't support
the specified class.<T> T invoke(K key, EntryProcessor<K,V,T> entryProcessor, Object... arguments) throws EntryProcessorException
EntryProcessor
against the Cache.Entry
specified by
the provided key.T
- the type of the return valuekey
- the key to the entryentryProcessor
- the EntryProcessor
to invokearguments
- additional arguments to pass to the
EntryProcessor
EntryProcessor
implementationNullPointerException
- if key or EntryProcessor
is nullIllegalStateException
- if the cache is isClosed()
ClassCastException
- if the implementation is configured to perform
runtime-type-checking, and the key or value
types are incompatible with those that have been
configured for the Cache
EntryProcessorException
- if an exception is thrown by the EntryProcessor
, a Caching Implementation
must wrap any Exception
thrown
wrapped in an EntryProcessorException
.EntryProcessor
<T> Map<K,EntryProcessorResult<T>> invokeAll(Set<? extends K> keys, EntryProcessor<K,V,T> entryProcessor, Object... arguments)
EntryProcessor
against the set of Cache.Entry
s
specified by the set of keys.
The order that the entries for the keys are processed is undefined.
Implementations may choose to process the entries in any order, including
concurrently. Furthermore there is no guarantee implementations will
use the same EntryProcessor
instance to process each entry, as
the case may be in a non-local cache topology.
The result of executing the EntryProcessor
is returned as a
Map
of EntryProcessorResult
s, one result per key. Should the
EntryProcessor
or Caching implementation throw an exception, the
exception is wrapped and re-thrown when a call to
EntryProcessorResult.get()
is made.
T
- the type of the return valuekeys
- the set of keys for entries to processentryProcessor
- the EntryProcessor
to invokearguments
- additional arguments to pass to the
EntryProcessor
EntryProcessorResult
s of the processing per key,
if any, defined by the EntryProcessor
implementation. No mappings
will be returned for EntryProcessor
s that return a
null
value for a key.NullPointerException
- if keys or EntryProcessor
are nullIllegalStateException
- if the cache is isClosed()
ClassCastException
- if the implementation is configured to perform
runtime-type-checking, and the key or value
types are incompatible with those that have been
configured for the Cache
EntryProcessor
String getName()
CacheManager getCacheManager()
CacheManager
that owns and manages the Cache
.null
if the Cache
is not
managedvoid close()
Cache
signals to the CacheManager
that produced or
owns the Cache
that it should no longer be managed. At this
point in time the CacheManager
:
CacheManager
. This includes calling the close
method on configured CacheLoader
,
CacheWriter
, registered CacheEntryListener
s and
ExpiryPolicy
instances that implement the java.io.Closeable
interface.
CacheEntryListener
s
registered on the Cache
IllegalStateException
.
Closing a Cache does not necessarily destroy the contents of a Cache. It simply signals to the owning CacheManager that the Cache is no longer required by the application and that future uses of a specific Cache instance should not be permitted.
Depending on the implementation and Cache topology, (e.g. a storage-backed or distributed cache), the contents of a closed Cache may still be available and accessible by other applications, or, in fact, via the Cache Manager that previously owned the Cache, if an application calls getCache at some point in the future.
close
in interface AutoCloseable
close
in interface Closeable
SecurityException
- when the operation could not be performed
due to the current security settingsboolean isClosed()
close()
method has been calledgetCacheManager()
has been closed, orgetCacheManager()
This method generally cannot be called to determine whether a Cache instance is valid or invalid. A typical client can determine that a Cache is invalid by catching any exceptions that might be thrown when an operation is attempted.
<T> T unwrap(Class<T> clazz)
If the provider's implementation does not support the specified class,
the IllegalArgumentException
is thrown.
T
- the type of the underlying Cache
implementationclazz
- the proprietary class or interface of the underlying concrete
cache. It is this type that is returned.IllegalArgumentException
- if the caching provider doesn't support
the specified class.SecurityException
- when the operation could not be performed
due to the current security settingsvoid registerCacheEntryListener(CacheEntryListenerConfiguration<K,V> cacheEntryListenerConfiguration)
CacheEntryListener
. The supplied
CacheEntryListenerConfiguration
is used to instantiate a listener
and apply it to those events specified in the configuration.cacheEntryListenerConfiguration
- a factory and related configuration
for creating the listenerIllegalArgumentException
- is the same CacheEntryListenerConfiguration
is used more than onceIllegalStateException
- if the cache is isClosed()
CacheEntryListener
void deregisterCacheEntryListener(CacheEntryListenerConfiguration<K,V> cacheEntryListenerConfiguration)
CacheEntryListenerConfiguration
that was used to register it.
Both listeners registered at configuration time,
and those created at runtime with registerCacheEntryListener(javax.cache.configuration.CacheEntryListenerConfiguration<K, V>)
can
be deregistered.
cacheEntryListenerConfiguration
- the factory and related configuration
that was used to create the
listenerIllegalStateException
- if the cache is isClosed()
Iterator<Cache.Entry<K,V>> iterator()
The ordering of iteration over entries is undefined.
During iteration, any entries that are removed will have their appropriate CacheEntryRemovedListeners notified.
When iterating over a cache it must be assumed that the underlying
cache may be changing, with entries being added, removed, evicted
and expiring. Iterator.next()
may therefore return
null.
iterator
in interface Iterable<K>
IllegalStateException
- if the cache is isClosed()
Copyright © 2017. All rights reserved.