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