Interface StateRepository<V>

    • Method Summary

      Modifier and Type Method Description
      void clear()
      Removes all of the mappings from this repository (optional operation).
      void close()
      Closes the StateRepository.
      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 (or null if there is no current mapping).
      void consumeAll​(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, or Optional.empty() if this repository contains no mapping for the key.
      java.lang.String getName()
      The unique name of the StateRepository.
      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.
      long size()
      Returns the number of key-value mappings in this repository.
    • Method Detail

      • getName

        java.lang.String getName()
        The unique name of the StateRepository.

        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, or Optional.empty() if this repository contains no mapping for the key.

        More formally, if this repository contains a mapping from a key k to a value v such that (key==null ? k==null : key.equals(k)), then this method returns Optional.of(v); otherwise it returns Optional.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 if m.get(k) would return a non-empty value.)
        Parameters:
        key - key with which the specified value is to be associated
        value - 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 repository
        java.lang.NullPointerException - if the specified key or value is null
        java.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 (or null if there is no current mapping). For example, to either create or append a String msg 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 or null if 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 associated
        remappingFunction - 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 null
        java.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.Exception
        Closes the StateRepository.

        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:
        close in interface java.lang.AutoCloseable
        Throws:
        java.lang.Exception - if closing the repository fails for some reason.