Class DynamicClassLoader


  • class DynamicClassLoader
    extends java.lang.ClassLoader
    Simple extension from ClassLoader overiding the loadClass(String name, boolean resolve) method and allowing to register new classes
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private static java.lang.String BEAN_AC  
      private static java.lang.Class<?>[] DEF_CLASS_SIG
      Predefined define defineClass method signature (name, bytes, offset, length)
    • Constructor Summary

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

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      (package private) java.lang.Class<?> defineClass​(java.lang.String name, byte[] bytes)
      Call defineClass into the parent classLoader using the method.setAccessible(boolean) hack
      static <T> T directInstance​(java.lang.Class<? extends T> parent, java.lang.String clsName, byte[] clsData)  
      static <T> java.lang.Class<T> directLoad​(java.lang.Class<? extends T> parent, java.lang.String clsName, byte[] clsData)  
      protected java.lang.Class<?> loadClass​(java.lang.String name, boolean resolve)  
      • Methods inherited from class java.lang.ClassLoader

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

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

      • BEAN_AC

        private static final java.lang.String BEAN_AC
      • DEF_CLASS_SIG

        private static final java.lang.Class<?>[] DEF_CLASS_SIG
        Predefined define defineClass method signature (name, bytes, offset, length)
    • Constructor Detail

      • DynamicClassLoader

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

      • directLoad

        public static <T> java.lang.Class<T> directLoad​(java.lang.Class<? extends T> parent,
                                                        java.lang.String clsName,
                                                        byte[] clsData)
        Parameters:
        parent - used to choose the ClassLoader
        clsName - C
        clsData -
        Returns:
      • directInstance

        public static <T> T directInstance​(java.lang.Class<? extends T> parent,
                                           java.lang.String clsName,
                                           byte[] clsData)
                                    throws java.lang.InstantiationException,
                                           java.lang.IllegalAccessException
        Throws:
        java.lang.InstantiationException
        java.lang.IllegalAccessException
      • 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
      • defineClass

        java.lang.Class<?> defineClass​(java.lang.String name,
                                       byte[] bytes)
                                throws java.lang.ClassFormatError
        Call defineClass into the parent classLoader using the method.setAccessible(boolean) hack
        Throws:
        java.lang.ClassFormatError
        See Also:
        ClassLoader.defineClass(String, byte[], int, int)