1 package com.atlassian.sal.core.executor;
2
3 import com.atlassian.sal.api.executor.ThreadLocalContextManager;
4
5 import java.util.concurrent.Executor;
6
7 import static com.google.common.base.Preconditions.*;
8
9
10
11
12 class ThreadLocalDelegateExecutor<C> implements Executor
13 {
14 private final Executor delegate;
15 protected final ThreadLocalContextManager<C> manager;
16
17 ThreadLocalDelegateExecutor(ThreadLocalContextManager<C> manager, Executor delegate)
18 {
19 this.delegate = checkNotNull(delegate);
20 this.manager = checkNotNull(manager);
21 }
22
23 public void execute(Runnable runnable)
24 {
25 final Runnable wrapper = new ThreadLocalDelegateRunnable<C>(manager, runnable);
26 delegate.execute(wrapper);
27 }
28 }