Class GlueLoader


  • final class GlueLoader
    extends java.lang.ClassLoader
    Weak cache of ClassLoaders that can generate proxy classes on-demand.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private static java.util.concurrent.ConcurrentMap<java.lang.Integer,​GlueLoader> cachedGlue  
      private static java.lang.String DYNAMIC  
      private static java.lang.String GLUE_SUFFIX  
      private static java.lang.String PROVIDER_NAME  
      private static java.lang.Object SYSTEM_LOADER_LOCK  
    • Constructor Summary

      Constructors 
      Constructor Description
      GlueLoader()  
      GlueLoader​(java.lang.ClassLoader parent)  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      private static GlueLoader createGlue​(java.lang.ClassLoader parent)
      Returns new GlueLoader that delegates to the given ClassLoader.
      static <T> T dynamicGlue​(com.google.inject.TypeLiteral<T> type, javax.inject.Provider<T> provider)
      Generates a new dynamic proxy instance for the given facade type and provider.
      private static java.lang.Class<?> dynamicGlue​(java.lang.Class<?> facade)
      Loads the dynamic proxy class for the given facade class.
      protected java.lang.Class<?> findClass​(java.lang.String name)  
      private static GlueLoader glue​(java.lang.ClassLoader parent)
      Returns the GlueLoader associated with the given ClassLoader.
      protected java.lang.Class<?> loadClass​(java.lang.String name, boolean resolve)  
      private static java.lang.String unwrap​(java.lang.String name)
      Unwraps the proxy decoration from around the given class name.
      private static java.lang.String wrap​(java.lang.String name, java.lang.String kind)
      Wraps the given class name with the appropriate proxy decoration.
      • Methods inherited from class java.lang.ClassLoader

        clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findLibrary, findLoadedClass, findResource, findResource, findResources, findSystemClass, getClassLoadingLock, getDefinedPackage, getDefinedPackages, getName, getPackage, getPackages, getParent, getPlatformClassLoader, getResource, getResourceAsStream, getResources, 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

      • SYSTEM_LOADER_LOCK

        private static final java.lang.Object SYSTEM_LOADER_LOCK
      • PROVIDER_NAME

        private static final java.lang.String PROVIDER_NAME
      • cachedGlue

        private static final java.util.concurrent.ConcurrentMap<java.lang.Integer,​GlueLoader> cachedGlue
    • Constructor Detail

      • GlueLoader

        GlueLoader()
      • GlueLoader

        GlueLoader​(java.lang.ClassLoader parent)
    • Method Detail

      • dynamicGlue

        public static <T> T dynamicGlue​(com.google.inject.TypeLiteral<T> type,
                                        javax.inject.Provider<T> provider)
        Generates a new dynamic proxy instance for the given facade type and provider.
        Parameters:
        type - The facade type
        provider - The provider
        Returns:
        Generated proxy instance
      • 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
      • findClass

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

        private static java.lang.Class<?> dynamicGlue​(java.lang.Class<?> facade)
                                               throws java.lang.ClassNotFoundException
        Loads the dynamic proxy class for the given facade class.
        Throws:
        java.lang.ClassNotFoundException
      • wrap

        private static java.lang.String wrap​(java.lang.String name,
                                             java.lang.String kind)
        Wraps the given class name with the appropriate proxy decoration.
      • unwrap

        private static java.lang.String unwrap​(java.lang.String name)
        Unwraps the proxy decoration from around the given class name.
      • glue

        private static GlueLoader glue​(java.lang.ClassLoader parent)
        Returns the GlueLoader associated with the given ClassLoader.
      • createGlue

        private static GlueLoader createGlue​(java.lang.ClassLoader parent)
        Returns new GlueLoader that delegates to the given ClassLoader.