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

    All Methods Static Methods Concrete Methods
    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 Detail

    - #### 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`