View Javadoc
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  }