Package org.datanucleus.enhancer
Class ImplementationGenerator
- 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[]
bytes
bytes for the implementation class.protected String
className
Class name of the implementation.protected String
fullClassName
Fully-qualified class name (including package) of the implementation.protected String
fullSuperclassName
Class name for the superclass.protected AbstractClassMetaData
inputCmd
Meta data for the abstract-class/interfaceprotected MetaDataManager
metaDataMgr
-
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 void
createDefaultConstructor()
Create a default constructor, assuming that there is no persistent superclass.protected void
createGetter(AbstractMemberMetaData mmd)
Create a getter method for a /property.protected void
createPropertyFields()
Creates fields for the properties of this class and super classes.protected void
createPropertyFields(AbstractClassMetaData acmd)
Create the fields for the implementation.protected void
createPropertyMethods()
Create getters and setters methods for this class and super classesprotected void
createPropertyMethods(AbstractClassMetaData acmd)
Create getters and setters methods.protected void
createSetter(AbstractMemberMetaData mmd)
Create a setter method for a property.void
dumpToFile(String filename)
Convenience method to dump the generated class to the specified file.void
enhance(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
-
-