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      public void testRun() throws InterruptedException {
11          final ThreadLocalContextManager<Object> manager = new StubThreadLocalContextManager();
12          Callable<Void> delegate = new Callable<Void>() {
13              public Void call() {
14                  assertNotNull(manager.getThreadLocalContext());
15                  return null;
16              }
17          };
18  
19          manager.setThreadLocalContext(new Object());
20          final Callable callable = new ThreadLocalDelegateCallable<Object, Void>(manager, delegate);
21          Thread t = new Thread(new Runnable() {
22  
23              public void run() {
24                  try {
25                      callable.call();
26                  } catch (Exception e) {
27                      throw Throwables.propagate(e);
28                  }
29              }
30          });
31          t.start();
32          t.join(10000);
33          assertNotNull(manager.getThreadLocalContext());
34      }
35  }