1 package com.atlassian.activeobjects.spi;
2
3 import com.google.common.annotations.VisibleForTesting;
4
5 import java.util.concurrent.Executors;
6 import java.util.concurrent.ThreadFactory;
7
8 import static com.google.common.base.Preconditions.checkNotNull;
9
10 public class ContextClassLoaderThreadFactory implements ThreadFactory {
11 private final ClassLoader contextClassLoader;
12
13 public ContextClassLoaderThreadFactory(final ClassLoader contextClassLoader) {
14 this.contextClassLoader = checkNotNull(contextClassLoader);
15 }
16
17 @Override
18 public Thread newThread(final Runnable r) {
19 Thread thread = Executors.defaultThreadFactory().newThread(r);
20
21 thread.setContextClassLoader(contextClassLoader);
22
23 return thread;
24 }
25
26 @VisibleForTesting
27 public ClassLoader getContextClassLoader() {
28 return contextClassLoader;
29 }
30 }