View Javadoc

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