[weld-issues] [JBoss JIRA] Updated: (WELD-592) Support use of decorator of Callable<T>

Ales Justin (JIRA) jira-events at lists.jboss.org
Wed Jul 20 09:17:24 EDT 2011


     [ https://issues.jboss.org/browse/WELD-592?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ales Justin updated WELD-592:
-----------------------------

    Fix Version/s: TBC
                       (was: 1.1.2.Final)


> Support use of decorator of Callable<T>
> ---------------------------------------
>
>                 Key: WELD-592
>                 URL: https://issues.jboss.org/browse/WELD-592
>             Project: Weld
>          Issue Type: Feature Request
>          Components: Java SE Support
>            Reporter: Elias Ross
>            Assignee: Peter Royle
>             Fix For: TBC
>
>
> Decorator exists for Runnable. Should allow for Callable<T> to be used as well.
> This is actually pretty useful, for example if you want to execute under a temporary new scope in the same thread, e.g.
> @Inject Instance<PaymentProcessor> paymentProcessorSource; // which implements Callable<Result>
> Result result = paymentProcessorSource.get().call();
> Or, in the case of a thread pool, you can use Future<T> etc.
> /**
>  * Decorator for all beans which implements Callable. It intercepts the call
>  * to the call() method to set up the ThreadContext for the new thread so that
>  * instances of @ThreadScoped beans can be correctly resolved.
>  */
> @Decorator
> public class CallableDecorator<T> implements Callable<T> {
>    @Inject @Delegate Callable<T> callable;
>    /**
>     * Set up the ThreadContet and delegate.
>     */
>    public T call()
>    {
>       // set up context for this thread
>       final ThreadContext threadContext = WeldSEBeanRegistrant.THREAD_CONTEXT;
>       threadContext.setBeanStore(new HashMapBeanStore());
>       threadContext.setActive(true);
>       // run the original thread
>      try {
>         return callable.call();
>     } finally {
>       threadContext.destroy();
>    }
> }

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the weld-issues mailing list