Class DeferSupportingClassLoader

  • Direct Known Subclasses:
    MockClassLoader

    public abstract class DeferSupportingClassLoader
    extends javassist.Loader
    Defers classloading of system classes to a delegate.
    • Nested Class Summary

      • Nested classes/interfaces inherited from class javassist.Loader

        javassist.Loader.Simple
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.util.concurrent.ConcurrentMap<java.lang.String,​java.lang.ref.SoftReference<java.lang.Class<?>>> classes  
      (package private) java.lang.String[] deferPackages  
      (package private) java.lang.ClassLoader deferTo  
      • Fields inherited from class javassist.Loader

        doDelegation
    • Constructor Summary

      Constructors 
      Constructor Description
      DeferSupportingClassLoader​(java.lang.ClassLoader classloader, java.lang.String[] deferPackages)  
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      void addIgnorePackage​(java.lang.String... packagesToIgnore)  
      void cache​(java.lang.Class<?> cls)
      Register a class to the cache of this classloader
      private boolean deferConditionMatches​(java.lang.String name, java.lang.String packageName)  
      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)  
      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)  
      protected java.lang.Class<?> loadClass​(java.lang.String name, boolean resolve)  
      protected abstract java.lang.Class<?> loadModifiedClass​(java.lang.String s)  
      (package private) boolean shouldDefer​(java.lang.String[] packages, java.lang.String name)  
      private boolean shouldIgnore​(java.lang.Iterable<java.lang.String> packages, java.lang.String name)  
      (package private) boolean shouldIgnore​(java.lang.String[] packages, java.lang.String name)  
      protected abstract boolean shouldLoadUnmodifiedClass​(java.lang.String className)  
      protected boolean shouldModify​(java.lang.Iterable<java.lang.String> packages, java.lang.String name)  
      protected abstract boolean shouldModifyClass​(java.lang.String s)  
      • Methods inherited from class javassist.Loader

        addTranslator, delegateLoadingOf, delegateToParent, findClass, loadClassByDelegation, main, run, run, setClassPool, setDomain
      • Methods inherited from class java.lang.ClassLoader

        clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findLibrary, findLoadedClass, findResource, findSystemClass, getClassLoadingLock, 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
      • deferPackages

        java.lang.String[] deferPackages
      • deferTo

        java.lang.ClassLoader deferTo
    • Constructor Detail

      • DeferSupportingClassLoader

        DeferSupportingClassLoader​(java.lang.ClassLoader classloader,
                                   java.lang.String[] deferPackages)
    • Method Detail

      • addIgnorePackage

        public void addIgnorePackage​(java.lang.String... packagesToIgnore)
      • loadClass

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

        boolean shouldDefer​(java.lang.String[] packages,
                            java.lang.String name)
      • deferConditionMatches

        private boolean deferConditionMatches​(java.lang.String name,
                                              java.lang.String packageName)
      • shouldIgnore

        private boolean shouldIgnore​(java.lang.Iterable<java.lang.String> packages,
                                     java.lang.String name)
      • shouldIgnore

        boolean shouldIgnore​(java.lang.String[] packages,
                             java.lang.String name)
      • 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
      • 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
      • shouldModify

        protected boolean shouldModify​(java.lang.Iterable<java.lang.String> packages,
                                       java.lang.String name)
      • loadModifiedClass

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

        protected abstract boolean shouldModifyClass​(java.lang.String s)
      • shouldLoadUnmodifiedClass

        protected abstract boolean shouldLoadUnmodifiedClass​(java.lang.String className)
      • cache

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