View Javadoc

1   package com.atlassian.plugin.classloader;
2   
3   import org.slf4j.Logger;
4   import org.slf4j.LoggerFactory;
5   
6   import java.io.InputStream;
7   import java.io.IOException;
8   import java.net.URL;
9   import java.util.Enumeration;
10  
11  import static com.google.common.base.Preconditions.checkNotNull;
12  
13  /**
14   * A class loader that delegates to another class loader.
15   */
16  public class DelegationClassLoader extends ClassLoader
17  {
18      private static final Logger log = LoggerFactory.getLogger(DelegationClassLoader.class);
19  
20      private ClassLoader delegateClassLoader = DelegationClassLoader.class.getClassLoader();
21  
22      public void setDelegateClassLoader(ClassLoader delegateClassLoader)
23      {
24          this.delegateClassLoader = checkNotNull(delegateClassLoader, "Can't set the delegation target to null");
25          if (log.isDebugEnabled())
26          {
27              log.debug("Update class loader delegation from [{}] to [{}]", this.delegateClassLoader, delegateClassLoader);
28          }
29      }
30  
31      public Class loadClass(String name) throws ClassNotFoundException
32      {
33          return delegateClassLoader.loadClass(name);
34      }
35  
36      public URL getResource(String name)
37      {
38          return delegateClassLoader.getResource(name);
39      }
40  
41      @Override
42      public Enumeration<URL> getResources(String name) throws IOException
43      {
44          return delegateClassLoader.getResources(name);
45      }
46  
47      public InputStream getResourceAsStream(String name)
48      {
49          return delegateClassLoader.getResourceAsStream(name);
50      }
51  
52      public synchronized void setDefaultAssertionStatus(boolean enabled)
53      {
54          delegateClassLoader.setDefaultAssertionStatus(enabled);
55      }
56  
57      public synchronized void setPackageAssertionStatus(String packageName, boolean enabled)
58      {
59          delegateClassLoader.setPackageAssertionStatus(packageName, enabled);
60      }
61  
62      public synchronized void setClassAssertionStatus(String className, boolean enabled)
63      {
64          delegateClassLoader.setClassAssertionStatus(className, enabled);
65      }
66  
67      public synchronized void clearAssertionStatus()
68      {
69          delegateClassLoader.clearAssertionStatus();
70      }
71  }