Class CascadingClassLoadHelper

  • All Implemented Interfaces:
    ClassLoadHelper

    public class CascadingClassLoadHelper
    extends java.lang.Object
    implements ClassLoadHelper
    A ClassLoadHelper uses all of the ClassLoadHelper types that are found in this package in its attempts to load a class, when one scheme is found to work, it is promoted to the scheme that will be used first the next time a class is loaded (in order to improve performance).

    This approach is used because of the wide variance in class loader behavior between the various environments in which Quartz runs (e.g. disparate application servers, stand-alone, mobile devices, etc.). Because of this disparity, Quartz ran into difficulty with a one class-load style fits-all design. Thus, this class loader finds the approach that works, then 'remembers' it.

    Author:
    jhouse, pl47ypus
    See Also:
    ClassLoadHelper, LoadingLoaderClassLoadHelper, SimpleClassLoadHelper, ThreadContextClassLoadHelper, InitThreadContextClassLoadHelper
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.lang.ClassLoader getClassLoader()
      Enable sharing of the "best" class-loader with 3rd party.
      java.net.URL getResource​(java.lang.String name)
      Finds a resource with a given name.
      java.io.InputStream getResourceAsStream​(java.lang.String name)
      Finds a resource with a given name.
      void initialize()
      Called to give the ClassLoadHelper a chance to initialize itself, including the opportunity to "steal" the class loader off of the calling thread, which is the thread that is initializing Quartz.
      java.lang.Class<?> loadClass​(java.lang.String name)
      Return the class with the given name.
      <T> java.lang.Class<? extends T> loadClass​(java.lang.String name, java.lang.Class<T> clazz)
      Return the class of the given type with the given name.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • CascadingClassLoadHelper

        public CascadingClassLoadHelper()
    • Method Detail

      • initialize

        public void initialize()
        Called to give the ClassLoadHelper a chance to initialize itself, including the opportunity to "steal" the class loader off of the calling thread, which is the thread that is initializing Quartz.
        Specified by:
        initialize in interface ClassLoadHelper
      • loadClass

        public java.lang.Class<?> loadClass​(java.lang.String name)
                                     throws java.lang.ClassNotFoundException
        Return the class with the given name.
        Specified by:
        loadClass in interface ClassLoadHelper
        Parameters:
        name - the FQCN of the class to load.
        Returns:
        the requested class.
        Throws:
        java.lang.ClassNotFoundException - if the class can be found in the classpath.
      • loadClass

        public <T> java.lang.Class<? extends T> loadClass​(java.lang.String name,
                                                          java.lang.Class<T> clazz)
                                                   throws java.lang.ClassNotFoundException
        Description copied from interface: ClassLoadHelper
        Return the class of the given type with the given name.
        Specified by:
        loadClass in interface ClassLoadHelper
        Parameters:
        name - the FQCN of the class to load.
        Returns:
        the requested class.
        Throws:
        java.lang.ClassNotFoundException - if the class can be found in the classpath.
      • getResource

        public java.net.URL getResource​(java.lang.String name)
        Finds a resource with a given name. This method returns null if no resource with this name is found.
        Specified by:
        getResource in interface ClassLoadHelper
        Parameters:
        name - name of the desired resource
        Returns:
        a java.net.URL object
      • getResourceAsStream

        public java.io.InputStream getResourceAsStream​(java.lang.String name)
        Finds a resource with a given name. This method returns null if no resource with this name is found.
        Specified by:
        getResourceAsStream in interface ClassLoadHelper
        Parameters:
        name - name of the desired resource
        Returns:
        a java.io.InputStream object
      • getClassLoader

        public java.lang.ClassLoader getClassLoader()
        Enable sharing of the "best" class-loader with 3rd party.
        Specified by:
        getClassLoader in interface ClassLoadHelper
        Returns:
        the class-loader user be the helper.