- java.lang.Object
-
- org.datanucleus.enhancer.ImplementationGenerator
-
public class ImplementationGenerator extends Object
Implementation generator using ASM bytecode manipulation library.
-
-
Field Summary
Fields Modifier and Type Field Description protected byte[]bytesbytes for the implementation class.protected StringclassNameClass name of the implementation.protected StringfullClassNameFully-qualified class name (including package) of the implementation.protected StringfullSuperclassNameClass name for the superclass.protected AbstractClassMetaDatainputCmdMeta data for the abstract-class/interfaceprotected MetaDataManagermetaDataMgr
-
Constructor Summary
Constructors Constructor Description ImplementationGenerator(ClassMetaData cmd, String implClassName, MetaDataManager mmgr)Constructor for an implementation of an abstract class.ImplementationGenerator(InterfaceMetaData interfaceMetaData, String implClassName, MetaDataManager mmgr)Constructor for an implementation of a persistent interface.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidcreateDefaultConstructor()Create a default constructor, assuming that there is no persistent superclass.protected voidcreateGetter(AbstractMemberMetaData mmd)Create a getter method for a /property.protected voidcreatePropertyFields()Creates fields for the properties of this class and super classes.protected voidcreatePropertyFields(AbstractClassMetaData acmd)Create the fields for the implementation.protected voidcreatePropertyMethods()Create getters and setters methods for this class and super classesprotected voidcreatePropertyMethods(AbstractClassMetaData acmd)Create getters and setters methods.protected voidcreateSetter(AbstractMemberMetaData mmd)Create a setter method for a property.voiddumpToFile(String filename)Convenience method to dump the generated class to the specified file.voidenhance(ClassLoaderResolver clr)Enhance the implementation of the class/interface.byte[]getBytes()Accessor for the byte representation of the generated class.
-
-
-
Field Detail
-
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.
-
-
Constructor Detail
-
ImplementationGenerator
public ImplementationGenerator(InterfaceMetaData interfaceMetaData, String implClassName, MetaDataManager mmgr)
Constructor for an implementation of a persistent interface.- Parameters:
interfaceMetaData- MetaData for the persistent interfaceimplClassName- 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 classimplClassName- Name of the implementation class to generate (omitting packages)mmgr- MetaData manager
-
-
Method Detail
-
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
-
-