org.apache.openjpa.lib.util
Class MultiClassLoader

java.lang.Object
  extended by java.lang.ClassLoader
      extended by org.apache.openjpa.lib.util.MultiClassLoader

public class MultiClassLoader
extends ClassLoader

Class loader type that can be configured to delegate to multiple internal class loaders. The THREAD_LOADER constant is a marker that will be replaced with the context loader of the current thread.

Author:
Abe White

Field Summary
static ClassLoader SYSTEM_LOADER
          The standard system class loader.
static ClassLoader THREAD_LOADER
          Marker that will be replaced with the context loader of the current thread whenever it is discovered in the class loader list.
 
Constructor Summary
MultiClassLoader()
          Constructor; initializes the loader with an empty list of delegates.
MultiClassLoader(MultiClassLoader other)
          Construct with the class loaders of another multi loader.
 
Method Summary
 boolean addClassLoader(ClassLoader loader)
          Add the given class loader to the set of loaders that will be tried.
 boolean addClassLoader(int index, ClassLoader loader)
          Add the given class loader at the specified index.
 boolean addClassLoaders(int index, MultiClassLoader multi)
          Adds all class loaders from the given multi loader starting at the given index.
 boolean addClassLoaders(MultiClassLoader multi)
          Adds all the class loaders from the given multi loader.
 void clear()
          Clear the list of class loaders.
 boolean containsClassLoader(ClassLoader loader)
          Returns true if the list contains the given class loader or marker.
 boolean equals(Object other)
           
protected  Class<?> findClass(String name)
           
protected  URL findResource(String name)
           
protected  Enumeration<URL> findResources(String name)
           
 ClassLoader getClassLoader(int index)
          Return the class loader at the given index.
 ClassLoader[] getClassLoaders()
          Return an array of all contained class loaders.
 int hashCode()
           
 boolean isEmpty()
          Return true if there are no internal class laoders.
 boolean removeClassLoader(ClassLoader loader)
          Remove the given loader from the list.
 void setClassLoaders(MultiClassLoader multi)
          Set the class loaders of this loader to those of the given loader.
 int size()
          Return the number of internal class loaders.
 
Methods inherited from class java.lang.ClassLoader
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findLibrary, findLoadedClass, findSystemClass, getPackage, getPackages, getParent, getResource, getResourceAsStream, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, loadClass, resolveClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

THREAD_LOADER

public static final ClassLoader THREAD_LOADER
Marker that will be replaced with the context loader of the current thread whenever it is discovered in the class loader list.


SYSTEM_LOADER

public static final ClassLoader SYSTEM_LOADER
The standard system class loader.

Constructor Detail

MultiClassLoader

public MultiClassLoader()
Constructor; initializes the loader with an empty list of delegates.


MultiClassLoader

public MultiClassLoader(MultiClassLoader other)
Construct with the class loaders of another multi loader.

Method Detail

containsClassLoader

public boolean containsClassLoader(ClassLoader loader)
Returns true if the list contains the given class loader or marker.


getClassLoaders

public ClassLoader[] getClassLoaders()
Return an array of all contained class loaders.


getClassLoader

public ClassLoader getClassLoader(int index)
Return the class loader at the given index.


addClassLoader

public boolean addClassLoader(ClassLoader loader)
Add the given class loader to the set of loaders that will be tried.

Returns:
true if the loader was added, false if already in the list

addClassLoader

public boolean addClassLoader(int index,
                              ClassLoader loader)
Add the given class loader at the specified index.

Returns:
true if the loader was added, false if already in the list

setClassLoaders

public void setClassLoaders(MultiClassLoader multi)
Set the class loaders of this loader to those of the given loader.


addClassLoaders

public boolean addClassLoaders(int index,
                               MultiClassLoader multi)
Adds all class loaders from the given multi loader starting at the given index.

Returns:
true if any loaders were added, false if all already in list

addClassLoaders

public boolean addClassLoaders(MultiClassLoader multi)
Adds all the class loaders from the given multi loader.

Returns:
true if any loaders were added, false if all already in list

removeClassLoader

public boolean removeClassLoader(ClassLoader loader)
Remove the given loader from the list.

Returns:
true if removed, false if not in list

clear

public void clear()
Clear the list of class loaders.


size

public int size()
Return the number of internal class loaders.


isEmpty

public boolean isEmpty()
Return true if there are no internal class laoders.


findClass

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

findResource

protected URL findResource(String name)
Overrides:
findResource in class ClassLoader

findResources

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

equals

public boolean equals(Object other)
Overrides:
equals in class Object

hashCode

public int hashCode()
Overrides:
hashCode in class Object


Copyright © 2006-2012 Apache Software Foundation. All Rights Reserved.