Interface ExtensionContext.Store

  • All Known Implementing Classes:
    NamespaceAwareStore
    Enclosing interface:
    ExtensionContext

    public static interface ExtensionContext.Store
    Store provides methods for extensions to save and retrieve data.
    • Method Summary

      All Methods Instance Methods Abstract Methods Default Methods 
      Modifier and Type Method Description
      Object get​(Object key)
      Get the value that is stored under the supplied key.
      <V> V get​(Object key, Class<V> requiredType)
      Get the value of the specified required type that is stored under the supplied key.
      default <V> V getOrComputeIfAbsent​(Class<V> type)
      Get the object of type type that is present in this Store (keyed by type); and otherwise invoke the default constructor for type to generate the object, store it, and return it.
      <K,​V>
      Object
      getOrComputeIfAbsent​(K key, Function<K,​V> defaultCreator)
      Get the value that is stored under the supplied key.
      <K,​V>
      V
      getOrComputeIfAbsent​(K key, Function<K,​V> defaultCreator, Class<V> requiredType)
      Get the value of the specified required type that is stored under the supplied key.
      default <V> V getOrDefault​(Object key, Class<V> requiredType, V defaultValue)
      Get the value of the specified required type that is stored under the supplied key, or the supplied defaultValue if no value is found for the supplied key in this store or in an ancestor.
      void put​(Object key, Object value)
      Store a value for later retrieval under the supplied key.
      Object remove​(Object key)
      Remove the value that was previously stored under the supplied key.
      <V> V remove​(Object key, Class<V> requiredType)
      Remove the value of the specified required type that was previously stored under the supplied key.
    • Method Detail

      • get

        <V> V get​(Object key,
                  Class<V> requiredType)
        Get the value of the specified required type that is stored under the supplied key.

        If no value is stored in the current ExtensionContext for the supplied key, ancestors of the context will be queried for a value with the same key in the Namespace used to create this store.

        Type Parameters:
        V - the value type
        Parameters:
        key - the key; never null
        requiredType - the required type of the value; never null
        Returns:
        the value; potentially null
        See Also:
        get(Object), getOrDefault(Object, Class, Object)
      • getOrDefault

        @API(status=STABLE,
             since="5.5")
        default <V> V getOrDefault​(Object key,
                                   Class<V> requiredType,
                                   V defaultValue)
        Get the value of the specified required type that is stored under the supplied key, or the supplied defaultValue if no value is found for the supplied key in this store or in an ancestor.

        If no value is stored in the current ExtensionContext for the supplied key, ancestors of the context will be queried for a value with the same key in the Namespace used to create this store.

        Type Parameters:
        V - the value type
        Parameters:
        key - the key; never null
        requiredType - the required type of the value; never null
        defaultValue - the default value
        Returns:
        the value; potentially null
        Since:
        5.5
        See Also:
        get(Object, Class)
      • getOrComputeIfAbsent

        <K,​V> V getOrComputeIfAbsent​(K key,
                                           Function<K,​V> defaultCreator,
                                           Class<V> requiredType)
        Get the value of the specified required type that is stored under the supplied key.

        If no value is stored in the current ExtensionContext for the supplied key, ancestors of the context will be queried for a value with the same key in the Namespace used to create this store. If no value is found for the supplied key, a new value will be computed by the defaultCreator (given the key as input), stored, and returned.

        If requiredType implements ExtensionContext.Store.CloseableResource the close() method will be invoked on the stored object when the store is closed.

        Type Parameters:
        K - the key type
        V - the value type
        Parameters:
        key - the key; never null
        defaultCreator - the function called with the supplied key to create a new value; never null
        requiredType - the required type of the value; never null
        Returns:
        the value; potentially null
        See Also:
        getOrComputeIfAbsent(Class), getOrComputeIfAbsent(Object, Function), ExtensionContext.Store.CloseableResource
      • remove

        <V> V remove​(Object key,
                     Class<V> requiredType)
        Remove the value of the specified required type that was previously stored under the supplied key.

        The value will only be removed in the current ExtensionContext, not in ancestors. In addition, the ExtensionContext.Store.CloseableResource API will not be honored for values that are manually removed via this method.

        Type Parameters:
        V - the value type
        Parameters:
        key - the key; never null
        requiredType - the required type of the value; never null
        Returns:
        the previous value or null if no value was present for the specified key
        See Also:
        remove(Object)