View Javadoc

1   package com.atlassian.sal.core.executor;
2   
3   import com.atlassian.sal.api.executor.ThreadLocalContextManager;
4   import com.google.common.base.Throwables;
5   import junit.framework.TestCase;
6   
7   import java.util.concurrent.Callable;
8   
9   public class TestThreadLocalDelegateCallable extends TestCase
10  {
11      public void testRun() throws InterruptedException
12      {
13          final ThreadLocalContextManager<Object> manager = new StubThreadLocalContextManager();
14          Callable<Void> delegate = new Callable<Void>()
15          {
16              public Void call()
17              {
18                  assertNotNull(manager.getThreadLocalContext());
19                  return null;
20              }
21          };
22  
23          manager.setThreadLocalContext(new Object());
24          final Callable callable = new ThreadLocalDelegateCallable<Object, Void>(manager, delegate);
25          Thread t = new Thread(new Runnable()
26          {
27  
28              public void run()
29              {
30                  try
31                  {
32                      callable.call();
33                  }
34                  catch (Exception e)
35                  {
36                      throw Throwables.propagate(e);
37                  }
38              }
39          });
40          t.start();
41          t.join(10000);
42          assertNotNull(manager.getThreadLocalContext());
43      }
44  }