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 Detail

      • get

        Object get​(Object key)
        Get the value 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.

        For greater type safety, consider using get(Object, Class) instead.

        Parameters:
        key - the key; never null
        Returns:
        the value; potentially null
        See Also:
        get(Object, Class)
      • 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)
      • 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)