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