Interface FunctionalMap.ReadOnlyMap<K,V>
- All Superinterfaces:
AutoCloseable,FunctionalMap<K,V>
- All Known Implementing Classes:
ReadOnlyMapImpl
- Enclosing interface:
- FunctionalMap<K,
V>
EntryView.ReadEntryView.
Read-only operations have the advantage that no locks are acquired for the duration of the operation and so it makes sense to have them a top-level interface dedicated to them.
Browsing methods that provide a read-only view of the cached data
are available via keys() and entries().
Having keys() makes sense since that way keys can be traversed
without having to bring values. Having entries() makes sense
since it allows traversing both keys, values and any meta parameters
associated with them, but this is no extra cost to exposing just values
since keys are the main index and hence will always be available.
Hence, adding a method to only browse values offers nothing extra to
the API.
- Since:
- 8.0
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.infinispan.functional.FunctionalMap
FunctionalMap.ReadOnlyMap<K,V>, FunctionalMap.ReadWriteMap<K, V>, FunctionalMap.WriteOnlyMap<K, V> -
Method Summary
Modifier and TypeMethodDescriptionentries()Provides aTraversablethat allows clients to navigate all cached entries.<R> CompletableFuture<R>Evaluate a read-only function on the value associated with the key and return aCompletableFuturewith the return type of the function.default <R> CompletableFuture<R>eval(K key, SerializableFunction<EntryView.ReadEntryView<K, V>, R> f) Same aseval(Object, Function)except that the function must also implementSerializable<R> Traversable<R>Evaluate a read-only function on a key and potential value associated in the functional map, for each of the keys in the set passed in, and returns anTraversableto work on each computed function's result.default <R> Traversable<R>evalMany(Set<? extends K> keys, SerializableFunction<EntryView.ReadEntryView<K, V>, R> f) Same asevalMany(Set, Function)except that the function must also implementSerializablekeys()Provides aTraversablethat allows clients to navigate all cached keys.withParams(Param<?>... ps) Tweak read-only functional map executions providingParaminstances.Methods inherited from interface java.lang.AutoCloseable
closeMethods inherited from interface org.infinispan.functional.FunctionalMap
cache, getName, getStatus, isEncoded
-
Method Details
-
withParams
Tweak read-only functional map executions providingParaminstances.- Specified by:
withParamsin interfaceFunctionalMap<K,V>
-
eval
Evaluate a read-only function on the value associated with the key and return aCompletableFuturewith the return type of the function. If the user is not sure if the key is present,EntryView.ReadEntryView.find()can be used to find out for sure. Typically, function implementations would return value orMetaParaminformation from the cache entry in the functional map.By returning
CompletableFutureinstead of the function's return type directly, the method hints at the possibility that to execute the function might require to go remote to retrieve data in persistent store or another clustered node.This method can be used to implement read-only single-key based operations in
ConcurrentMapand javax.cache.Cache such as:Map.get(Object)Map.containsKey(Object)javax.cache.Cache#get(Object)javax.cache.Cache#containsKey(Object)
The function must not mutate neither the key returned through
EntryView.ReadEntryView.key()nor the internally stored value provided throughEntryView.ReadEntryView.get()orEntryView.ReadEntryView.find().- Type Parameters:
R- function return type- Parameters:
key- the key associated with theEntryView.ReadEntryViewto be passed to the function.f- function that takes aEntryView.ReadEntryViewassociated with the key, and returns a value.- Returns:
- a
CompletableFuturewhich will be completed with the returned value from the function
-
eval
default <R> CompletableFuture<R> eval(K key, SerializableFunction<EntryView.ReadEntryView<K, V>, R> f) Same aseval(Object, Function)except that the function must also implementSerializableThe compiler will pick this overload for lambda parameters, making them
Serializable -
evalMany
Evaluate a read-only function on a key and potential value associated in the functional map, for each of the keys in the set passed in, and returns anTraversableto work on each computed function's result.The function passed in will be executed for as many keys present in keys collection set. Similar to
eval(Object, Function), if the user is not sure whether a particular key is present,EntryView.ReadEntryView.find()can be used to find out for sure.This method can be used to implement operations such as
javax.cache.Cache#getAll(Set). DESIGN RATIONALE:- It makes sense to expose global operation like this instead of forcing users to iterate over the keys to lookup and call get individually since Infinispan can do things more efficiently.
The function must not mutate neither the key returned through
EntryView.ReadEntryView.key()nor the internally stored value provided throughEntryView.ReadEntryView.get()orEntryView.ReadEntryView.find().- Type Parameters:
R- function return type- Parameters:
keys- the keys associated with each of theEntryView.ReadEntryViewpassed in the function callbacksf- function that takes aEntryView.ReadEntryViewassociated with the key, and returns a value. It'll be invoked once for each key passed in- Returns:
- a sequential
Traversablethat can be navigated to retrieve each function return value
-
evalMany
default <R> Traversable<R> evalMany(Set<? extends K> keys, SerializableFunction<EntryView.ReadEntryView<K, V>, R> f) Same asevalMany(Set, Function)except that the function must also implementSerializableThe compiler will pick this overload for lambda parameters, making them
Serializable -
keys
Traversable<K> keys()Provides aTraversablethat allows clients to navigate all cached keys.This method can be used to implement operations such as:
- Returns:
- a sequential
Traversableto navigate each cached key
-
entries
Traversable<EntryView.ReadEntryView<K,V>> entries()Provides aTraversablethat allows clients to navigate all cached entries.This method can be used to implement operations such as:
Map.containsValue(Object)Map.values()Map.entrySet()javax.cache.Cache#iterator()
- Returns:
- a sequential
Traversableto navigate each cached entry
-