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
      • 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()