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 org.junit.Test;
6   
7   import java.util.concurrent.Callable;
8   
9   import static org.junit.Assert.assertNotNull;
10  
11  public class TestThreadLocalDelegateCallable {
12  
13      @Test
14      public void testRun() throws InterruptedException {
15          final ThreadLocalContextManager<Object> manager = new StubThreadLocalContextManager();
16          Callable<Void> delegate = new Callable<Void>() {
17              public Void call() {
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              public void run() {
28                  try {
29                      callable.call();
30                  } catch (Exception e) {
31                      throw Throwables.propagate(e);
32                  }
33              }
34          });
35          t.start();
36          t.join(10000);
37          assertNotNull(manager.getThreadLocalContext());
38      }
39  }