Package io.vertx.core.spi.context.storage

## Interface ContextLocal<T>

-     public interface ContextLocal<T>

  A local storage for arbitrary data attached to a duplicated `Context`.

  Local storage should be registered before creating a `Vertx` instance, once registered a local storage cannot be unregistered.

  It is recommended to initialize local storage as static fields of a `VertxServiceProvider`, since providers are discovered before the capture of known local storages.

  Author:
    Julien Viet

- - ### Method Summary

    All Methods Static Methods Instance Methods Default Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `default T` | `get​(Context context)` | Get the local data from the `context`.
    `default T` | `get​(Context context, AccessMode accessMode)` | Like `get(Context)` but with an `accessMode`.
    `default T` | `get​(Context context, AccessMode accessMode, java.util.function.Supplier<? extends T> initialValueSupplier)` | Like `get(Context, Supplier)` but with an `accessMode`.
    `default T` | `get​(Context context, java.util.function.Supplier<? extends T> initialValueSupplier)` | Get the local data from the `context`, when it does not exist then call `initialValueSupplier` to obtain the initial value.
    `default void` | `put​(Context context, AccessMode accessMode, T value)` | Like `#put(Context, T)` but with an `accessMode`.
    `default void` | `put​(Context context, T data)` | Put local data in the `context`.
    `static <T> ContextLocal<T>` | `registerLocal​(Class<T> type)` | Registers a context local storage.
    `default void` | `remove​(Context context)` | Remove the local data from the context.
    `default void` | `remove​(Context context, AccessMode accessMode)` | Like `remove(Context)` but with an `accessMode`.

- - ### Method Detail

    - #### registerLocal

          static <T> ContextLocal<T> registerLocal​(Class<T> type)

      Registers a context local storage.
      Returns:
        the context local storage

    - #### get

          default T get​(Context context)

      Get the local data from the `context`.
      Returns:
        the local data

    - #### get

          default T get​(Context context,
                        java.util.function.Supplier<? extends T> initialValueSupplier)

      Get the local data from the `context`, when it does not exist then call `initialValueSupplier` to obtain the initial value. The supplier can be called multiple times when several threads call this method concurrently.
      Parameters:
        `initialValueSupplier` - the supplier of the initial value
      Returns:
        the local data

    - #### put

          default void put​(Context context,
                           T data)

      Put local data in the `context`.
      Parameters:
        `data` - the data

    - #### remove

          default void remove​(Context context)

      Remove the local data from the context.

    - #### get

          default T get​(Context context,
                        AccessMode accessMode)

      Like `get(Context)` but with an `accessMode`.

    - #### get

          default T get​(Context context,
                        AccessMode accessMode,
                        java.util.function.Supplier<? extends T> initialValueSupplier)

      Like `get(Context, Supplier)` but with an `accessMode`.

    - #### put

          default void put​(Context context,
                           AccessMode accessMode,
                           T value)

      Like `#put(Context, T)` but with an `accessMode`.

    - #### remove

          default void remove​(Context context,
                              AccessMode accessMode)

      Like `remove(Context)` but with an `accessMode`.