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