Class DeferSupportingClassLoader

  • Direct Known Subclasses:
    MockClassLoader

    abstract class DeferSupportingClassLoader
    extends java.lang.ClassLoader
    Defers classloading of system classes to a delegate.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.util.concurrent.ConcurrentMap<java.lang.String,​java.lang.ref.SoftReference<java.lang.Class<?>>> classes  
      private MockClassLoaderConfiguration configuration  
      (package private) java.lang.ClassLoader deferTo  
      private java.util.concurrent.ConcurrentMap<java.lang.String,​java.lang.Object> parallelLockMap  
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      void cache​(java.lang.Class<?> cls)
      Register a class to the cache of this classloader
      private java.lang.Class<?> findLoadedClass1​(java.lang.String name)  
      protected java.net.URL findResource​(java.lang.String name)
      Finds the resource with the specified name on the search path.
      protected java.util.Enumeration<java.net.URL> findResources​(java.lang.String name)  
      protected java.lang.Object getClassLoadingLock​(java.lang.String className)  
      MockClassLoaderConfiguration getConfiguration()  
      java.net.URL getResource​(java.lang.String s)  
      java.io.InputStream getResourceAsStream​(java.lang.String s)  
      java.util.Enumeration<java.net.URL> getResources​(java.lang.String name)  
      private java.lang.Class<?> loadByDeferClassLoader​(java.lang.String name)  
      protected java.lang.Class<?> loadClass​(java.lang.String name, boolean resolve)  
      private java.lang.Class<?> loadClass1​(java.lang.String name, boolean resolve)  
      protected abstract java.lang.Class<?> loadClassByThisClassLoader​(java.lang.String s)  
      private boolean shouldDefer​(java.lang.String name)  
      • Methods inherited from class java.lang.ClassLoader

        clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findClass, findLibrary, findLoadedClass, findResource, findSystemClass, getDefinedPackage, getDefinedPackages, getName, getPackage, getPackages, getParent, getPlatformClassLoader, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, getUnnamedModule, isRegisteredAsParallelCapable, loadClass, registerAsParallelCapable, resolveClass, resources, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
      • Methods inherited from class java.lang.Object

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

      • classes

        private final java.util.concurrent.ConcurrentMap<java.lang.String,​java.lang.ref.SoftReference<java.lang.Class<?>>> classes
      • parallelLockMap

        private final java.util.concurrent.ConcurrentMap<java.lang.String,​java.lang.Object> parallelLockMap
      • deferTo

        java.lang.ClassLoader deferTo
    • Constructor Detail

    • Method Detail

      • getResource

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

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

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

        public void cache​(java.lang.Class<?> cls)
        Register a class to the cache of this classloader
      • loadClassByThisClassLoader

        protected abstract java.lang.Class<?> loadClassByThisClassLoader​(java.lang.String s)
                                                                  throws java.lang.ClassFormatError,
                                                                         java.lang.ClassNotFoundException
        Throws:
        java.lang.ClassFormatError
        java.lang.ClassNotFoundException
      • loadClass

        protected java.lang.Class<?> loadClass​(java.lang.String name,
                                               boolean resolve)
                                        throws java.lang.ClassNotFoundException
        Overrides:
        loadClass in class java.lang.ClassLoader
        Throws:
        java.lang.ClassNotFoundException
      • getClassLoadingLock

        protected java.lang.Object getClassLoadingLock​(java.lang.String className)
        Overrides:
        getClassLoadingLock in class java.lang.ClassLoader
      • findResource

        protected java.net.URL findResource​(java.lang.String name)
        Finds the resource with the specified name on the search path.
        Overrides:
        findResource in class java.lang.ClassLoader
        Parameters:
        name - the name of the resource
        Returns:
        a URL for the resource, or null if the resource could not be found.
      • findResources

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

        private java.lang.Class<?> loadClass1​(java.lang.String name,
                                              boolean resolve)
                                       throws java.lang.ClassNotFoundException
        Throws:
        java.lang.ClassNotFoundException
      • loadByDeferClassLoader

        private java.lang.Class<?> loadByDeferClassLoader​(java.lang.String name)
                                                   throws java.lang.ClassNotFoundException
        Throws:
        java.lang.ClassNotFoundException
      • shouldDefer

        private boolean shouldDefer​(java.lang.String name)
      • findLoadedClass1

        private java.lang.Class<?> findLoadedClass1​(java.lang.String name)