Class ImplementationGenerator

java.lang.Object
org.datanucleus.enhancer.ImplementationGenerator

public class ImplementationGenerator extends Object
Implementation generator using ASM bytecode manipulation library.
  • Field Details

    • metaDataMgr

      protected final MetaDataManager metaDataMgr
    • inputCmd

      protected final AbstractClassMetaData inputCmd
      Meta data for the abstract-class/interface
    • className

      protected final String className
      Class name of the implementation.
    • fullClassName

      protected final String fullClassName
      Fully-qualified class name (including package) of the implementation.
    • fullSuperclassName

      protected String fullSuperclassName
      Class name for the superclass.
    • bytes

      protected byte[] bytes
      bytes for the implementation class.
    • writer

      ClassWriter writer
      Writer for the implementation class.
    • asmClassName

      String asmClassName
      ASM class name of the implementation class.
    • asmTypeDescriptor

      String asmTypeDescriptor
      ASM type descriptor for the implementation class.
    • namer

  • Constructor Details

    • ImplementationGenerator

      public ImplementationGenerator(InterfaceMetaData interfaceMetaData, String implClassName, MetaDataManager mmgr)
      Constructor for an implementation of a persistent interface.
      Parameters:
      interfaceMetaData - MetaData for the persistent interface
      implClassName - Name of the implementation class to generate (omitting packages)
      mmgr - MetaData manager
    • ImplementationGenerator

      public ImplementationGenerator(ClassMetaData cmd, String implClassName, MetaDataManager mmgr)
      Constructor for an implementation of an abstract class.
      Parameters:
      cmd - MetaData for the abstract class
      implClassName - Name of the implementation class to generate (omitting packages)
      mmgr - MetaData manager
  • Method Details

    • getBytes

      public byte[] getBytes()
      Accessor for the byte representation of the generated class.
      Returns:
      the byte representation of the class
    • createPropertyFields

      protected void createPropertyFields()
      Creates fields for the properties of this class and super classes.
    • createPropertyMethods

      protected void createPropertyMethods()
      Create getters and setters methods for this class and super classes
    • createPropertyMethods

      protected void createPropertyMethods(AbstractClassMetaData acmd)
      Create getters and setters methods.
      Parameters:
      acmd - AbstractClassMetaData
    • dumpToFile

      public void dumpToFile(String filename)
      Convenience method to dump the generated class to the specified file.
      Parameters:
      filename - Name of the file to dump to
    • enhance

      public void enhance(ClassLoaderResolver clr)
      Enhance the implementation of the class/interface.
      Parameters:
      clr - ClassLoader resolver
    • createPropertyFields

      protected void createPropertyFields(AbstractClassMetaData acmd)
      Create the fields for the implementation.
      Parameters:
      acmd - MetaData for the class/interface
    • createDefaultConstructor

      protected void createDefaultConstructor()
      Create a default constructor, assuming that there is no persistent superclass.
    • createGetter

      protected void createGetter(AbstractMemberMetaData mmd)
      Create a getter method for a /property.
      Parameters:
      mmd - MetaData for the property
    • createSetter

      protected void createSetter(AbstractMemberMetaData mmd)
      Create a setter method for a property.
      Parameters:
      mmd - MetaData for the property