Class JaxbClassLoader


  • public class JaxbClassLoader
    extends java.lang.ClassLoader
    INTERNAL:

    Purpose:Provide a ClassLoader implementation to allow the definition of ASM generated wrapper classes, and to lookup those classes when required.

    Responsibilities:

    • Wrap the provided ClassLoader and pass method calls along
    • Maintain a map of generated wrapper classes and attempt lookups in that map if a class isn't found in the nested loader
    • Provide a public API to define a class from an array of bytes and a class name

    This class is a ClassLoader implementation that maintains a map of wrapper classes generated during JAXB generation. If a class is not found in the nested classLoader, then the map of generated classes is checked.

    Author:
    mmacivor
    • Constructor Summary

      Constructors 
      Constructor Description
      JaxbClassLoader​(java.lang.ClassLoader nestedClassLoader)  
      JaxbClassLoader​(java.lang.ClassLoader nestedClassLoader, java.lang.Class[] classes)  
      JaxbClassLoader​(java.lang.ClassLoader nestedClassLoader, java.lang.reflect.Type[] types)  
      JaxbClassLoader​(java.lang.ClassLoader nestedClassLoader, TypeMappingInfo[] types)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.lang.Class generateClass​(java.lang.String className, byte[] bytes)  
      java.lang.Class loadClass​(java.lang.String className)  
      java.lang.String nextAvailableGeneratedClassName()  
      void putClass​(java.lang.String className, java.lang.Class clazz)  
      • Methods inherited from class java.lang.ClassLoader

        clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, 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
    • Constructor Detail

      • JaxbClassLoader

        public JaxbClassLoader​(java.lang.ClassLoader nestedClassLoader)
      • JaxbClassLoader

        public JaxbClassLoader​(java.lang.ClassLoader nestedClassLoader,
                               java.lang.Class[] classes)
      • JaxbClassLoader

        public JaxbClassLoader​(java.lang.ClassLoader nestedClassLoader,
                               java.lang.reflect.Type[] types)
      • JaxbClassLoader

        public JaxbClassLoader​(java.lang.ClassLoader nestedClassLoader,
                               TypeMappingInfo[] types)
    • Method Detail

      • loadClass

        public java.lang.Class loadClass​(java.lang.String className)
                                  throws java.lang.ClassNotFoundException
        Overrides:
        loadClass in class java.lang.ClassLoader
        Throws:
        java.lang.ClassNotFoundException
      • generateClass

        public java.lang.Class generateClass​(java.lang.String className,
                                             byte[] bytes)
      • putClass

        public void putClass​(java.lang.String className,
                             java.lang.Class clazz)
      • nextAvailableGeneratedClassName

        public java.lang.String nextAvailableGeneratedClassName()