Class MultiClassLoader

java.lang.Object
java.lang.ClassLoader
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 Details

    • 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 Details

    • 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.
    • MultiClassLoader

      public MultiClassLoader(ClassLoader... loaders)
  • Method Details

    • 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