Class Contexts


  • public final class Contexts
    extends Object
    Support for handling Context across thread boundaries.
    • Method Detail

      • context

        public static Optional<Context> context()
        Get context registry associated with current thread.
        Returns:
        context that is associated with current thread or empty if none is
      • globalContext

        public static Context globalContext()
        Global context is always present and statically shared in this JVM. This is similar to Singleton scope when using an injection engine. Global context is also used as a parent for newly created contexts, unless you specify a parent using Context.Builder.parent(Context). Registering any instance in this context will make it available to any component in this JVM.
        Returns:
        global context instance, never null
      • wrap

        public static ExecutorService wrap​(ExecutorService toWrap)
        Wrap an executor service to correctly propagate context to its threads.
        Parameters:
        toWrap - executor service
        Returns:
        a new executor service wrapping the provided one
      • wrap

        public static ScheduledExecutorService wrap​(ScheduledExecutorService toWrap)
        Wrap a scheduled executor service to correctly propagate context to its threads. Note that all scheduled methods are going to run in context of the thread scheduling the tasks.
        Parameters:
        toWrap - executor service
        Returns:
        a new executor service wrapping the provided one
      • runInContext

        public static void runInContext​(Context context,
                                        Runnable runnable)
        Run the runnable in the provided context. The runnable can use context() to retrieve the context.
        Parameters:
        context - context to run in
        runnable - runnable to execute in context
      • runInContext

        public static <T> T runInContext​(Context context,
                                         Callable<T> callable)
        Run the callable in the provided context. The callable can use context() to retrieve the context.
        Type Parameters:
        T - return type of the callable
        Parameters:
        context - context to run in
        callable - callable to execute in context
        Returns:
        the result of the callable
        Throws:
        RuntimeException - in case the Callable.call() threw a runtime exception
      • runInContextWithThrow

        public static <T> T runInContextWithThrow​(Context context,
                                                  Callable<T> callable)
                                           throws Exception
        Run the callable in the provided context throwing any exception from its execution. The callable can use context() to retrieve the context.
        Type Parameters:
        T - return type of the callable
        Parameters:
        context - context to run in
        callable - callable to execute in context
        Returns:
        the result of the callable
        Throws:
        Exception - If thrown in Callable.call()