Interface StateRepository<V>
-
- Type Parameters:
V- The type of the event-sourced entities stored in theStateRepository
- All Superinterfaces:
java.lang.AutoCloseable
- All Known Implementing Classes:
ChronicleMapStateRepository,ConcurrentMapStateRepository,DelegatingStateRepository,NitriteStateRepository
public interface StateRepository<V> extends java.lang.AutoCloseableAStateRepositoryis used to store the aggregated state of event-sourced entities.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description voidclear()Removes all of the mappings from this repository (optional operation).voidclose()Closes theStateRepository.java.util.Optional<V>compute(java.lang.String key, java.util.function.BiFunction<? super java.lang.String,? super java.util.Optional<V>,? extends V> remappingFunction)Attempts to compute a mapping for the specified key and its current mapped value (ornullif there is no current mapping).voidconsumeAll(java.util.function.BiConsumer<? super java.lang.String,? super V> consumer)Computes each entry within the repository.java.util.Optional<V>get(java.lang.String key)Returns the optional value to which the specified key is mapped, orOptional.empty()if this repository contains no mapping for the key.java.lang.StringgetName()The unique name of theStateRepository.java.util.Set<java.lang.String>keySet()Returns an immutable set of the keys in this repository.java.util.Optional<V>put(java.lang.String key, V value)Associates the specified value with the specified key in this repository.java.util.Optional<V>remove(java.lang.String key)Removes the mapping for a key from this repository if it is present.longsize()Returns the number of key-value mappings in this repository.
-
-
-
Method Detail
-
getName
java.lang.String getName()
The unique name of theStateRepository.Using the same name for multiple repositories will lead to
- Returns:
- name
-
keySet
java.util.Set<java.lang.String> keySet()
Returns an immutable set of the keys in this repository.- Returns:
- a set view of the keys contained in this repository
-
get
java.util.Optional<V> get(java.lang.String key)
Returns the optional value to which the specified key is mapped, orOptional.empty()if this repository contains no mapping for the key.More formally, if this repository contains a mapping from a key
kto a valuevsuch that(key==null ? k==null : key.equals(k)), then this method returnsOptional.of(v); otherwise it returnsOptional.empty(). (There can be at most one such mapping.)- Parameters:
key- the key whose associated value is to be returned- Returns:
- the Optional containing the value to which the specified key is mapped, or
Optional.empty()if this repository contains no mapping for the key - Throws:
java.lang.NullPointerException- if the specified key is null
-
consumeAll
void consumeAll(java.util.function.BiConsumer<? super java.lang.String,? super V> consumer)
Computes each entry within the repository.- Parameters:
consumer- the consumer that will be applied on each repository entry
-
put
java.util.Optional<V> put(java.lang.String key, V value)
Associates the specified value with the specified key in this repository. If the repository previously contained a mapping for the key, the old value is replaced by the specified value. (A repository m is said to contain a mapping for a key k if and only ifm.get(k)would return a non-empty value.)- Parameters:
key- key with which the specified value is to be associatedvalue- value to be associated with the specified key- Returns:
- the previous value associated with 'key', or 'Optional.empty()' if there was no mapping for 'key'
- Throws:
java.lang.ClassCastException- if the class of the specified value prevents it from being stored in this repositoryjava.lang.NullPointerException- if the specified key or value is nulljava.lang.IllegalArgumentException- if some property of the specified key or value prevents it from being stored in this repository
-
compute
java.util.Optional<V> compute(java.lang.String key, java.util.function.BiFunction<? super java.lang.String,? super java.util.Optional<V>,? extends V> remappingFunction)
Attempts to compute a mapping for the specified key and its current mapped value (ornullif there is no current mapping). For example, to either create or append aStringmsg to a value mapping:repository.compute(key, (k, v) -> (v == null) ? msg : v.concat(msg))If the function returns
null, the mapping is removed (or remains absent if initially absent). If the function itself throws an (unchecked) exception, the exception is rethrown, and the current mapping is left unchanged.The default implementation is equivalent to performing the following steps for this
repository, then returning the current value ornullif absent:OptionalV> oldValue = repository.get(key); V newValue = remappingFunction.apply(key, oldValue); if (!oldValue.isEmpty()) { if (newValue != null) repository.put(key, newValue); else repository.remove(key); } else { if (newValue != null) repository.put(key, newValue); else return Optional.empty(); }- Parameters:
key- key with which the specified value is to be associatedremappingFunction- the function to compute a value- Returns:
- the Optional containing the new value associated with the specified key, or Optional.empty() if none
- Throws:
java.lang.NullPointerException- if the specified key is null, or the remappingFunction is nulljava.lang.ClassCastException- if the class of the specified value prevents it from being stored in this repository
-
remove
java.util.Optional<V> remove(java.lang.String key)
Removes the mapping for a key from this repository if it is present. More formally, if this repository contains a mapping from key 'k' to value 'v' such that(key==null ? k==null : key.equals(k)), that mapping is removed. (The repository can contain at most one such mapping.)Returns the optional value to which this repository previously associated the key, or 'Optional.empty()' if the repository contained no mapping for the key.
The repository will not contain a mapping for the specified key once the call returns.
- Parameters:
key- key whose mapping is to be removed from the repository- Returns:
- the optional previous value associated with 'key', or 'Optional.empty()' if there was no mapping for 'key'.
- Throws:
java.lang.NullPointerException- if the specified key is null
-
clear
void clear()
Removes all of the mappings from this repository (optional operation). The repository will be empty after this call returns.- Throws:
java.lang.UnsupportedOperationException- if the 'clear' operation is not supported by this repository
-
size
long size()
Returns the number of key-value mappings in this repository. If the repository contains more than 'Integer.MAX_VALUE' elements, returns 'Integer.MAX_VALUE'.- Returns:
- the number of key-value mappings in this repository
-
close
void close() throws java.lang.ExceptionCloses theStateRepository.Depending on the implementation of the interface, it might be required to close() the repository on shutdown in order to prevent data loss.
- Specified by:
closein interfacejava.lang.AutoCloseable- Throws:
java.lang.Exception- if closing the repository fails for some reason.
-
-