[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