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.checkNotNull;
8
9
10
11
12 class ThreadLocalDelegateExecutor<C> implements Executor {
13 private final Executor delegate;
14 protected final ThreadLocalContextManager<C> manager;
15
16 ThreadLocalDelegateExecutor(ThreadLocalContextManager<C> manager, Executor delegate) {
17 this.delegate = checkNotNull(delegate);
18 this.manager = checkNotNull(manager);
19 }
20
21 public void execute(Runnable runnable) {
22 final Runnable wrapper = new ThreadLocalDelegateRunnable<C>(manager, runnable);
23 delegate.execute(wrapper);
24 }
25 }