Package org.apache.cxf.common.classloader

# Class ClassLoaderUtils

java.lang.Object
org.apache.cxf.common.classloader.ClassLoaderUtils

public final class ClassLoaderUtils extends Object
This class is extremely useful for loading resources and classes in a fault tolerant manner that works across different applications servers. Do not touch this unless you're a grizzled classloading guru veteran who is going to verify any change on 6 different application servers.

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static class`
  `ClassLoaderUtils.ClassLoaderHolder`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static String`
  `getClassLoaderName(Class<?> type)`
  `static URL`
  `getResource(String resourceName, Class<?> callingClass)`
  Load a given resource.
  `static InputStream`
  `getResourceAsStream(String resourceName, Class<?> callingClass)`
  This is a convenience method to load a resource as a stream.
  `static List<URL>`
  `getResources(String resourceName, Class<?> callingClass)`
  Load a given resources.
  `static ClassLoader`
  `getURLClassLoader(URL[] urls, ClassLoader parent)`
  `static ClassLoader`
  `getURLClassLoader(List<URL> urlList, ClassLoader parent)`
  `static Class<?>`
  `loadClass(String className, Class<?> callingClass)`
  Load a class with a given name.
  `static <T> Class<? extends T>`
  `loadClass(String className, Class<?> callingClass, Class<T> type)`
  `static Class<?>`
  `loadClassFromContextLoader(String className)`
  `static ClassLoaderUtils.ClassLoaderHolder`
  `setThreadContextClassloader(ClassLoader newLoader)`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Method Details

  - ### setThreadContextClassloader

    public static ClassLoaderUtils.ClassLoaderHolder setThreadContextClassloader(ClassLoader newLoader)

  - ### getURLClassLoader

    public static ClassLoader getURLClassLoader(URL[] urls, ClassLoader parent)

  - ### getURLClassLoader

    public static ClassLoader getURLClassLoader(List<URL> urlList, ClassLoader parent)

  - ### getResource

    public static URL getResource(String resourceName, Class<?> callingClass)
    Load a given resource.

    This method will try to load the resource using the following methods (in order):
    - From Thread.currentThread().getContextClassLoader()
    - From ClassLoaderUtil.class.getClassLoader()
    - callingClass.getClassLoader()
    Parameters:
      `resourceName` - The name of the resource to load
      `callingClass` - The Class object of the calling object

  - ### getResources

    public static List<URL> getResources(String resourceName, Class<?> callingClass)
    Load a given resources.

    This method will try to load the resources using the following methods (in order):
    - From Thread.currentThread().getContextClassLoader()
    - From ClassLoaderUtil.class.getClassLoader()
    - callingClass.getClassLoader()
    Parameters:
      `resourceName` - The name of the resource to load
      `callingClass` - The Class object of the calling object

  - ### getResourceAsStream

    public static InputStream getResourceAsStream(String resourceName, Class<?> callingClass)
    This is a convenience method to load a resource as a stream.

    The algorithm used to find the resource is given in getResource()
    Parameters:
      `resourceName` - The name of the resource to load
      `callingClass` - The Class object of the calling object

  - ### loadClass

    public static Class<?> loadClass(String className, Class<?> callingClass) throws ClassNotFoundException
    Load a class with a given name.

    It will try to load the class in the following order:
    - From Thread.currentThread().getContextClassLoader()
    - Using the basic Class.forName()
    - From ClassLoaderUtil.class.getClassLoader()
    - From the callingClass.getClassLoader()
    Parameters:
      `className` - The name of the class to load
      `callingClass` - The Class object of the calling object
    Throws:
      `ClassNotFoundException` - If the class cannot be found anywhere.

  - ### loadClass

    public static <T> Class<? extends T> loadClass(String className, Class<?> callingClass, Class<T> type) throws ClassNotFoundException
    Throws:
      `ClassNotFoundException`

  - ### getClassLoaderName

    public static String getClassLoaderName(Class<?> type)

  - ### loadClassFromContextLoader

    public static Class<?> loadClassFromContextLoader(String className) throws ClassNotFoundException
    Throws:
      `ClassNotFoundException`