com.atlassian.templaterenderer.velocity
Class CompositeClassLoader

java.lang.Object
  extended by java.lang.ClassLoader
      extended by com.atlassian.templaterenderer.velocity.CompositeClassLoader

public class CompositeClassLoader
extends ClassLoader

A CompositeClassLoader that will try to load classes/resources using multiple classloaders. It will try to load using the order in which classloaders where supplied and will return the first match.

The ClassLoader will have a null parent so we don't leak classes from main ClassLoader. See https://studio.atlassian.com/browse/ATR-27


Constructor Summary
CompositeClassLoader(ClassLoader... classLoaders)
          Creates a new composite class loader.
 
Method Summary
 void clearAssertionStatus()
           
 URL getResource(String name)
           
 InputStream getResourceAsStream(String name)
           
 Enumeration<URL> getResources(String name)
           
 Class<?> loadClass(String name)
           
 void setClassAssertionStatus(String className, boolean enabled)
           
 void setDefaultAssertionStatus(boolean enabled)
           
 void setPackageAssertionStatus(String packageName, boolean enabled)
           
 
Methods inherited from class java.lang.ClassLoader
defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findLibrary, findLoadedClass, findResource, findResources, findSystemClass, getPackage, getPackages, getParent, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, resolveClass, setSigners
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CompositeClassLoader

public CompositeClassLoader(ClassLoader... classLoaders)
Creates a new composite class loader. At least one class loader needs to be supplied. Please note that order of the supplied class loaders is the order in which they will be queried.

Parameters:
classLoaders - A list of class loaders to query.
Method Detail

clearAssertionStatus

public void clearAssertionStatus()
Overrides:
clearAssertionStatus in class ClassLoader

getResource

public URL getResource(String name)
Overrides:
getResource in class ClassLoader

getResourceAsStream

public InputStream getResourceAsStream(String name)
Overrides:
getResourceAsStream in class ClassLoader

getResources

public Enumeration<URL> getResources(String name)
                              throws IOException
Overrides:
getResources in class ClassLoader
Throws:
IOException

loadClass

public Class<?> loadClass(String name)
                   throws ClassNotFoundException
Overrides:
loadClass in class ClassLoader
Throws:
ClassNotFoundException

setClassAssertionStatus

public void setClassAssertionStatus(String className,
                                    boolean enabled)
Overrides:
setClassAssertionStatus in class ClassLoader

setDefaultAssertionStatus

public void setDefaultAssertionStatus(boolean enabled)
Overrides:
setDefaultAssertionStatus in class ClassLoader

setPackageAssertionStatus

public void setPackageAssertionStatus(String packageName,
                                      boolean enabled)
Overrides:
setPackageAssertionStatus in class ClassLoader


Copyright © 2012 Atlassian. All Rights Reserved.