Class ReloadingClassLoader

  • All Implemented Interfaces:
    ReloadNotificationListener

    public class ReloadingClassLoader
    extends java.lang.ClassLoader
    implements ReloadNotificationListener
    The ReloadingClassLoader uses a delegation mechansim to allow classes to be reloaded. That means that loadClass calls may return different results if the class was changed in the underlying ResourceStore.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.lang.ClassLoader delegate  
      private org.apache.commons.logging.Log log  
      private java.lang.ClassLoader parent  
      private ResourceStore[] stores  
    • Constructor Summary

      Constructors 
      Constructor Description
      ReloadingClassLoader​(java.lang.ClassLoader pParent)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean addResourceStore​(ResourceStore pStore)  
      void clearAssertionStatus()  
      java.net.URL getResource​(java.lang.String name)  
      java.io.InputStream getResourceAsStream​(java.lang.String name)  
      void handleNotification()  
      java.lang.Class<?> loadClass​(java.lang.String name)  
      boolean removeResourceStore​(ResourceStore pStore)  
      void setClassAssertionStatus​(java.lang.String className, boolean enabled)  
      void setDefaultAssertionStatus​(boolean enabled)  
      void setPackageAssertionStatus​(java.lang.String packageName, boolean enabled)  
      • Methods inherited from class java.lang.ClassLoader

        defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findLibrary, findLoadedClass, findResource, findResources, findSystemClass, getClassLoadingLock, getPackage, getPackages, getParent, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, registerAsParallelCapable, resolveClass, setSigners
      • Methods inherited from class java.lang.Object

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

      • log

        private final org.apache.commons.logging.Log log
      • parent

        private final java.lang.ClassLoader parent
      • delegate

        private java.lang.ClassLoader delegate
    • Constructor Detail

      • ReloadingClassLoader

        public ReloadingClassLoader​(java.lang.ClassLoader pParent)
    • Method Detail

      • addResourceStore

        public boolean addResourceStore​(ResourceStore pStore)
      • removeResourceStore

        public boolean removeResourceStore​(ResourceStore pStore)
      • clearAssertionStatus

        public void clearAssertionStatus()
        Overrides:
        clearAssertionStatus in class java.lang.ClassLoader
      • getResource

        public java.net.URL getResource​(java.lang.String name)
        Overrides:
        getResource in class java.lang.ClassLoader
      • getResourceAsStream

        public java.io.InputStream getResourceAsStream​(java.lang.String name)
        Overrides:
        getResourceAsStream in class java.lang.ClassLoader
      • loadClass

        public java.lang.Class<?> loadClass​(java.lang.String name)
                                     throws java.lang.ClassNotFoundException
        Overrides:
        loadClass in class java.lang.ClassLoader
        Throws:
        java.lang.ClassNotFoundException
      • setClassAssertionStatus

        public void setClassAssertionStatus​(java.lang.String className,
                                            boolean enabled)
        Overrides:
        setClassAssertionStatus in class java.lang.ClassLoader
      • setDefaultAssertionStatus

        public void setDefaultAssertionStatus​(boolean enabled)
        Overrides:
        setDefaultAssertionStatus in class java.lang.ClassLoader
      • setPackageAssertionStatus

        public void setPackageAssertionStatus​(java.lang.String packageName,
                                              boolean enabled)
        Overrides:
        setPackageAssertionStatus in class java.lang.ClassLoader