Class ClassLoaderProxy

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable
    Direct Known Subclasses:
    ModuleClassLoader

    public class ClassLoaderProxy
    extends java.net.URLClassLoader
    ClassLoaderProxy capable of loading classes from itself but also from other class loaders
    • Constructor Summary

      Constructors 
      Constructor Description
      ClassLoaderProxy​(java.net.URL[] shared, java.lang.ClassLoader parent)
      Creates a new instance of ClassLoader
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addDelegate​(java.lang.ClassLoader cl)  
      void addURL​(java.net.URL url)
      Appends the specified URL to the list of URLs to search for classes and resources.
      protected void finalize()  
      protected java.lang.Class<?> findClass​(java.lang.String name)  
      protected java.lang.Class<?> findClass​(java.lang.String name, boolean followImports)  
      (package private) java.lang.Class findClassDirect​(java.lang.String name)
      findClass(String) except the classloader punch-in hack.
      java.net.URL findResource​(java.lang.String name)  
      java.net.URL findResourceDirect​(java.lang.String name)
      Works like findResource(String) but only looks at this module, without delegating to ancestors.
      java.util.Enumeration<java.net.URL> findResources​(java.lang.String name)  
      java.util.Collection<java.lang.ClassLoader> getDelegates()  
      protected java.lang.Class<?> loadClass​(java.lang.String name, boolean resolve, boolean followImports)  
      void removeDelegate​(java.lang.ClassLoader cl)  
      void stop()
      called by the facade class loader when it is garbage collected.
      java.lang.String toString()  
      • Methods inherited from class java.net.URLClassLoader

        close, definePackage, getPermissions, getResourceAsStream, getURLs, newInstance, newInstance
      • Methods inherited from class java.security.SecureClassLoader

        defineClass, defineClass
      • Methods inherited from class java.lang.ClassLoader

        clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findLibrary, findLoadedClass, findSystemClass, getClassLoadingLock, getPackage, getPackages, getParent, getResource, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, loadClass, registerAsParallelCapable, resolveClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
      • Methods inherited from class java.lang.Object

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

      • surrogates

        private final java.util.List<java.lang.ClassLoader> surrogates
    • Constructor Detail

      • ClassLoaderProxy

        public ClassLoaderProxy​(java.net.URL[] shared,
                                java.lang.ClassLoader parent)
        Creates a new instance of ClassLoader
    • Method Detail

      • finalize

        protected void finalize()
                         throws java.lang.Throwable
        Overrides:
        finalize in class java.lang.Object
        Throws:
        java.lang.Throwable
      • loadClass

        protected java.lang.Class<?> loadClass​(java.lang.String name,
                                               boolean resolve,
                                               boolean followImports)
                                        throws java.lang.ClassNotFoundException
        Throws:
        java.lang.ClassNotFoundException
      • findClass

        protected java.lang.Class<?> findClass​(java.lang.String name)
                                        throws java.lang.ClassNotFoundException
        Overrides:
        findClass in class java.net.URLClassLoader
        Throws:
        java.lang.ClassNotFoundException
      • findClass

        protected java.lang.Class<?> findClass​(java.lang.String name,
                                               boolean followImports)
                                        throws java.lang.ClassNotFoundException
        Throws:
        java.lang.ClassNotFoundException
      • findClassDirect

        java.lang.Class findClassDirect​(java.lang.String name)
                                 throws java.lang.ClassNotFoundException
        findClass(String) except the classloader punch-in hack.
        Throws:
        java.lang.ClassNotFoundException
      • findResource

        public java.net.URL findResource​(java.lang.String name)
        Overrides:
        findResource in class java.net.URLClassLoader
      • findResourceDirect

        public java.net.URL findResourceDirect​(java.lang.String name)
        Works like findResource(String) but only looks at this module, without delegating to ancestors.
      • findResources

        public java.util.Enumeration<java.net.URL> findResources​(java.lang.String name)
                                                          throws java.io.IOException
        Overrides:
        findResources in class java.net.URLClassLoader
        Throws:
        java.io.IOException
      • addDelegate

        public void addDelegate​(java.lang.ClassLoader cl)
      • removeDelegate

        public void removeDelegate​(java.lang.ClassLoader cl)
      • getDelegates

        public java.util.Collection<java.lang.ClassLoader> getDelegates()
      • stop

        public void stop()
        called by the facade class loader when it is garbage collected. this is a good time to see if this module should be unloaded.
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • addURL

        public void addURL​(java.net.URL url)
        Appends the specified URL to the list of URLs to search for classes and resources.
        Overrides:
        addURL in class java.net.URLClassLoader
        Parameters:
        url - the url to append