1 package com.atlassian.plugin.classloader;
2
3 import org.apache.commons.lang.Validate;
4 import org.slf4j.Logger;
5 import org.slf4j.LoggerFactory;
6
7 import java.io.InputStream;
8 import java.io.IOException;
9 import java.net.URL;
10 import java.util.Enumeration;
11
12
13
14
15 public class DelegationClassLoader extends ClassLoader
16 {
17 private static final Logger log = LoggerFactory.getLogger(DelegationClassLoader.class);
18
19 private ClassLoader delegateClassLoader = DelegationClassLoader.class.getClassLoader();
20
21 public void setDelegateClassLoader(ClassLoader delegateClassLoader)
22 {
23 Validate.notNull(delegateClassLoader, "Can't set the delegation target to null");
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 @Override
43 public Enumeration<URL> getResources(String name) throws IOException
44 {
45 return delegateClassLoader.getResources(name);
46 }
47
48 public InputStream getResourceAsStream(String name)
49 {
50 return delegateClassLoader.getResourceAsStream(name);
51 }
52
53 public synchronized void setDefaultAssertionStatus(boolean enabled)
54 {
55 delegateClassLoader.setDefaultAssertionStatus(enabled);
56 }
57
58 public synchronized void setPackageAssertionStatus(String packageName, boolean enabled)
59 {
60 delegateClassLoader.setPackageAssertionStatus(packageName, enabled);
61 }
62
63 public synchronized void setClassAssertionStatus(String className, boolean enabled)
64 {
65 delegateClassLoader.setClassAssertionStatus(className, enabled);
66 }
67
68 public synchronized void clearAssertionStatus()
69 {
70 delegateClassLoader.clearAssertionStatus();
71 }
72 }