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 }