org.apache.xbean.classloader
Class MultiParentClassLoader

java.lang.Object
  extended by java.lang.ClassLoader
      extended by java.security.SecureClassLoader
          extended by java.net.URLClassLoader
              extended by org.apache.xbean.classloader.NamedClassLoader
                  extended by org.apache.xbean.classloader.MultiParentClassLoader
All Implemented Interfaces:
DestroyableClassLoader
Direct Known Subclasses:
JarFileClassLoader

public class MultiParentClassLoader
extends NamedClassLoader

A MultiParentClassLoader is a simple extension of the URLClassLoader that simply changes the single parent class loader model to support a list of parent class loaders. Each operation that accesses a parent, has been replaced with a operation that checks each parent in order. This getParent method of this class will always return null, which may be interperated by the calling code to mean that this class loader is a direct child of the system class loader.

Since:
2.0
Author:
Dain Sundstrom

Constructor Summary
MultiParentClassLoader(String name, URL[] urls)
          Creates a named class loader with no parents.
MultiParentClassLoader(String name, URL[] urls, ClassLoader parent)
          Creates a named class loader as a child of the specified parent.
MultiParentClassLoader(String name, URL[] urls, ClassLoader[] parents)
          Creates a named class loader as a child of the specified parents.
MultiParentClassLoader(String name, URL[] urls, ClassLoader[] parents, boolean inverseClassLoading, Collection hiddenClasses, Collection nonOverridableClasses)
           
MultiParentClassLoader(String name, URL[] urls, ClassLoader[] parents, boolean inverseClassLoading, String[] hiddenClasses, String[] nonOverridableClasses)
           
MultiParentClassLoader(String name, URL[] urls, ClassLoader[] parents, URLStreamHandlerFactory factory)
          Creates a named class loader as a child of the specified parents and using the specified URLStreamHandlerFactory for accessing the urls..
MultiParentClassLoader(String name, URL[] urls, ClassLoader parent, boolean inverseClassLoading, String[] hiddenClasses, String[] nonOverridableClasses)
           
MultiParentClassLoader(String name, URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory)
          Creates a named class loader as a child of the specified parent and using the specified URLStreamHandlerFactory for accessing the urls..
 
Method Summary
 Enumeration findResources(String name)
          
 ClassLoader[] getParents()
          Gets the parents of this class loader.
 URL getResource(String name)
          
protected  Class loadClass(String name, boolean resolve)
          
 String toString()
          
 
Methods inherited from class org.apache.xbean.classloader.NamedClassLoader
destroy, getName, isDestroyed
 
Methods inherited from class java.net.URLClassLoader
addURL, definePackage, findClass, findResource, getPermissions, getURLs, newInstance, newInstance
 
Methods inherited from class java.security.SecureClassLoader
defineClass, defineClass
 
Methods inherited from class java.lang.ClassLoader
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findLibrary, findLoadedClass, findSystemClass, getPackage, getPackages, getParent, getResourceAsStream, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, resolveClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

MultiParentClassLoader

public MultiParentClassLoader(String name,
                              URL[] urls)
Creates a named class loader with no parents.

Parameters:
name - the name of this class loader
urls - the urls from which this class loader will classes and resources

MultiParentClassLoader

public MultiParentClassLoader(String name,
                              URL[] urls,
                              ClassLoader parent)
Creates a named class loader as a child of the specified parent.

Parameters:
name - the name of this class loader
urls - the urls from which this class loader will classes and resources
parent - the parent of this class loader

MultiParentClassLoader

public MultiParentClassLoader(String name,
                              URL[] urls,
                              ClassLoader parent,
                              URLStreamHandlerFactory factory)
Creates a named class loader as a child of the specified parent and using the specified URLStreamHandlerFactory for accessing the urls..

Parameters:
name - the name of this class loader
urls - the urls from which this class loader will classes and resources
parent - the parent of this class loader
factory - the URLStreamHandlerFactory used to access the urls

MultiParentClassLoader

public MultiParentClassLoader(String name,
                              URL[] urls,
                              ClassLoader[] parents)
Creates a named class loader as a child of the specified parents.

Parameters:
name - the name of this class loader
urls - the urls from which this class loader will classes and resources
parents - the parents of this class loader

MultiParentClassLoader

public MultiParentClassLoader(String name,
                              URL[] urls,
                              ClassLoader parent,
                              boolean inverseClassLoading,
                              String[] hiddenClasses,
                              String[] nonOverridableClasses)

MultiParentClassLoader

public MultiParentClassLoader(String name,
                              URL[] urls,
                              ClassLoader[] parents,
                              URLStreamHandlerFactory factory)
Creates a named class loader as a child of the specified parents and using the specified URLStreamHandlerFactory for accessing the urls..

Parameters:
name - the name of this class loader
urls - the urls from which this class loader will classes and resources
parents - the parents of this class loader
factory - the URLStreamHandlerFactory used to access the urls

MultiParentClassLoader

public MultiParentClassLoader(String name,
                              URL[] urls,
                              ClassLoader[] parents,
                              boolean inverseClassLoading,
                              Collection hiddenClasses,
                              Collection nonOverridableClasses)

MultiParentClassLoader

public MultiParentClassLoader(String name,
                              URL[] urls,
                              ClassLoader[] parents,
                              boolean inverseClassLoading,
                              String[] hiddenClasses,
                              String[] nonOverridableClasses)
Method Detail

getParents

public ClassLoader[] getParents()
Gets the parents of this class loader.

Returns:
the parents of this class loader

loadClass

protected Class loadClass(String name,
                          boolean resolve)
                   throws ClassNotFoundException

Overrides:
loadClass in class ClassLoader
Throws:
ClassNotFoundException

getResource

public URL getResource(String name)

Overrides:
getResource in class ClassLoader

findResources

public Enumeration findResources(String name)
                          throws IOException

Overrides:
findResources in class URLClassLoader
Throws:
IOException

toString

public String toString()

Overrides:
toString in class NamedClassLoader


Copyright © 2005-2008 Apache Software Foundation. All Rights Reserved.