Interface ContextManager

  • All Known Implementing Classes:
    DefaultContextManager

    public interface ContextManager
    A facility to register and unregister global and local DCI contexts.
    Author:
    Fabrizio Giudici
    • Method Detail

      • getContexts

        @Nonnull
        java.util.List<java.lang.Object> getContexts()
        Returns the list of current contexts, ordered by their priority.
        Returns:
        the list of current contexts
      • findContextOfType

        @Nonnull
        <T> T findContextOfType​(@Nonnull
                                java.lang.Class<T> contextType)
                         throws NotFoundException
        Finds a current context instance of the given type.
        Type Parameters:
        T - the static context type
        Parameters:
        contextType - the dynamic context type
        Returns:
        the requested context
        Throws:
        NotFoundException - if no context of that type is found
      • addGlobalContext

        void addGlobalContext​(@Nonnull
                              java.lang.Object context)
        Adds a global context.
        Parameters:
        context - the new context
      • removeGlobalContext

        void removeGlobalContext​(@Nonnull
                                 java.lang.Object context)
        Removes a global context.
        Parameters:
        context - the context
      • addLocalContext

        void addLocalContext​(@Nonnull
                             java.lang.Object context)
        Adds a local context.
        Parameters:
        context - the new context
      • removeLocalContext

        void removeLocalContext​(@Nonnull
                                java.lang.Object context)
        Removes a local context.
        Parameters:
        context - the context
      • runWithContext

        <V,​T extends java.lang.Throwable> V runWithContext​(@Nonnull
                                                                 java.lang.Object context,
                                                                 @Nonnull
                                                                 Task<V,​T> task)
                                                          throws T extends java.lang.Throwable
        Runs a Task associated with a new local context.
        Type Parameters:
        V - the type of the returned value
        T - the type of the exception that can be thrown
        Parameters:
        context - the context
        task - the task
        Returns:
        the value produced by the task
        Throws:
        T - the exception(s) thrown by the task
        T extends java.lang.Throwable
      • runWithContexts

        <V,​T extends java.lang.Throwable> V runWithContexts​(@Nonnull
                                                                  java.util.List<java.lang.Object> contexts,
                                                                  @Nonnull
                                                                  Task<V,​T> task)
                                                           throws T extends java.lang.Throwable
        Runs a Task associated with a new bunch of local contexts.
        Type Parameters:
        V - the type of the returned value
        T - the type of the exception that can be thrown
        Parameters:
        contexts - the contexts
        task - the task
        Returns:
        the value produced by the task
        Throws:
        T - the exception(s) thrown by the task
        T extends java.lang.Throwable
      • runWithContext

        <V> V runWithContext​(@Nonnull
                             java.lang.Object context,
                             @Nonnull
                             ContextManager.Supplier<V> task)
        Runs a task associated with a new local context. This variant fits functional interfaces.
        Type Parameters:
        V - the type of the returned value of the task
        Parameters:
        context - the context
        task - the task
        Returns:
        the value produced by the task
      • runWithContexts

        <V> V runWithContexts​(@Nonnull
                              java.util.List<java.lang.Object> contexts,
                              @Nonnull
                              ContextManager.Supplier<V> task)
        Runs a task associated with a new bunch of local contexts. This variant fits functional interfaces.
        Type Parameters:
        V - the type of the returned value
        Parameters:
        contexts - the context
        task - the task
        Returns:
        the value produced by the task