org.datanucleus.enhancer.bcel
Class BCELImplementationGenerator

java.lang.Object
  extended by org.datanucleus.enhancer.AbstractImplementationGenerator
      extended by org.datanucleus.enhancer.bcel.BCELImplementationGenerator
All Implemented Interfaces:
org.apache.bcel.Constants

public class BCELImplementationGenerator
extends AbstractImplementationGenerator
implements org.apache.bcel.Constants

Implementation generator using BCEL bytecode manipulation library.

Version:
$Revision: 1.17 $

Field Summary
 
Fields inherited from class org.datanucleus.enhancer.AbstractImplementationGenerator
bytes, className, fullClassName, fullSuperclassName, inputCmd
 
Fields inherited from interface org.apache.bcel.Constants
AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_VARARGS, ACC_VOLATILE, ACCESS_NAMES, ACONST_NULL, ALOAD, ALOAD_0, ALOAD_1, ALOAD_2, ALOAD_3, ANEWARRAY, ANEWARRAY_QUICK, ARETURN, ARRAYLENGTH, ASTORE, ASTORE_0, ASTORE_1, ASTORE_2, ASTORE_3, ATHROW, ATTR_ANNOTATION_DEFAULT, ATTR_CODE, ATTR_CONSTANT_VALUE, ATTR_DEPRECATED, ATTR_EXCEPTIONS, ATTR_INNER_CLASSES, ATTR_LINE_NUMBER_TABLE, ATTR_LOCAL_VARIABLE_TABLE, ATTR_PMG, ATTR_RUNTIMEINVISIBLE_ANNOTATIONS, ATTR_RUNTIMEINVISIBLE_PARAMETER_ANNOTATIONS, ATTR_RUNTIMEVISIBLE_ANNOTATIONS, ATTR_RUNTIMEVISIBLE_PARAMETER_ANNOTATIONS, ATTR_SIGNATURE, ATTR_SOURCE_FILE, ATTR_STACK_MAP, ATTR_SYNTHETIC, ATTR_UNKNOWN, ATTRIBUTE_NAMES, BALOAD, BASTORE, BIPUSH, BREAKPOINT, CALOAD, CASTORE, CHECKCAST, CHECKCAST_QUICK, CLASS_TYPE_NAMES, CONSTANT_Class, CONSTANT_Double, CONSTANT_Fieldref, CONSTANT_Float, CONSTANT_Integer, CONSTANT_InterfaceMethodref, CONSTANT_Long, CONSTANT_Methodref, CONSTANT_NameAndType, CONSTANT_NAMES, CONSTANT_String, CONSTANT_Utf8, CONSTRUCTOR_NAME, CONSUME_STACK, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DLOAD_0, DLOAD_1, DLOAD_2, DLOAD_3, DMUL, DNEG, DREM, DRETURN, DSTORE, DSTORE_0, DSTORE_1, DSTORE_2, DSTORE_3, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAD_0, FLOAD_1, FLOAD_2, FLOAD_3, FMUL, FNEG, FREM, FRETURN, FSTORE, FSTORE_0, FSTORE_1, FSTORE_2, FSTORE_3, FSUB, GETFIELD, GETFIELD_QUICK, GETFIELD_QUICK_W, GETFIELD2_QUICK, GETSTATIC, GETSTATIC_QUICK, GETSTATIC2_QUICK, GOTO, GOTO_W, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILLEGAL_OPCODE, ILLEGAL_TYPE, ILOAD, ILOAD_0, ILOAD_1, ILOAD_2, ILOAD_3, IMPDEP1, IMPDEP2, IMUL, INEG, INSTANCEOF, INSTANCEOF_QUICK, INT2BYTE, INT2CHAR, INT2SHORT, INTERFACES_IMPLEMENTED_BY_ARRAYS, INVOKEINTERFACE, INVOKEINTERFACE_QUICK, INVOKENONVIRTUAL, INVOKENONVIRTUAL_QUICK, INVOKESPECIAL, INVOKESTATIC, INVOKESTATIC_QUICK, INVOKESUPER_QUICK, INVOKEVIRTUAL, INVOKEVIRTUAL_QUICK, INVOKEVIRTUAL_QUICK_W, INVOKEVIRTUALOBJECT_QUICK, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISTORE_0, ISTORE_1, ISTORE_2, ISTORE_3, ISUB, ITEM_Bogus, ITEM_Double, ITEM_Float, ITEM_InitObject, ITEM_Integer, ITEM_Long, ITEM_NAMES, ITEM_NewObject, ITEM_Null, ITEM_Object, IUSHR, IXOR, JSR, JSR_W, KNOWN_ATTRIBUTES, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDC_QUICK, LDC_W, LDC_W_QUICK, LDC2_W, LDC2_W_QUICK, LDIV, LLOAD, LLOAD_0, LLOAD_1, LLOAD_2, LLOAD_3, LMUL, LNEG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSTORE_0, LSTORE_1, LSTORE_2, LSTORE_3, LSUB, LUSHR, LXOR, MAJOR, MAJOR_1_1, MAJOR_1_2, MAJOR_1_3, MAJOR_1_4, MAJOR_1_5, MAX_ACC_FLAG, MAX_BYTE, MAX_CODE_SIZE, MAX_CP_ENTRIES, MAX_SHORT, MINOR, MINOR_1_1, MINOR_1_2, MINOR_1_3, MINOR_1_4, MINOR_1_5, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, MULTIANEWARRAY_QUICK, NEW, NEW_QUICK, NEWARRAY, NO_OF_OPERANDS, NOP, OPCODE_NAMES, POP, POP2, PRODUCE_STACK, PUSH, PUTFIELD, PUTFIELD_QUICK, PUTFIELD_QUICK_W, PUTFIELD2_QUICK, PUTSTATIC, PUTSTATIC_QUICK, PUTSTATIC2_QUICK, RESERVED, RET, RETURN, SALOAD, SASTORE, SHORT_TYPE_NAMES, SIPUSH, STATIC_INITIALIZER_NAME, SWAP, SWITCH, T_ADDRESS, T_ARRAY, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_OBJECT, T_REFERENCE, T_SHORT, T_UNKNOWN, T_VOID, TABLESWITCH, TYPE_NAMES, TYPE_OF_OPERANDS, UNDEFINED, UNPREDICTABLE, WIDE
 
Constructor Summary
BCELImplementationGenerator(org.datanucleus.metadata.ClassMetaData classMetaData, java.lang.String implClassName)
          Constructor for an implementation of an abstract class.
BCELImplementationGenerator(org.datanucleus.metadata.InterfaceMetaData interfaceMetaData, java.lang.String implClassName)
          Constructor for an implementation of a persistent interface.
 
Method Summary
protected  void createDefaultConstructor()
          Create a default constructor, assuming that there is no persistent superclass.
protected  void createGetter(org.datanucleus.metadata.AbstractMemberMetaData mmd)
          Create a getter method for a /property.
protected  void createPropertyFields(org.datanucleus.metadata.AbstractClassMetaData acmd)
          Create the fields.
protected  void createSetter(org.datanucleus.metadata.AbstractMemberMetaData mmd)
          Create a setter method for a property.
 void enhance(org.datanucleus.ClassLoaderResolver clr)
          Enhance the implementation for use in the persistence process.
 
Methods inherited from class org.datanucleus.enhancer.AbstractImplementationGenerator
createPropertyFields, createPropertyMethods, createPropertyMethods, dumpToFile, getBytes
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

BCELImplementationGenerator

public BCELImplementationGenerator(org.datanucleus.metadata.InterfaceMetaData interfaceMetaData,
                                   java.lang.String implClassName)
Constructor for an implementation of a persistent interface.

Parameters:
interfaceMetaData - MetaData for the interface
implClassName - Name of the implementation class to generate (omitting packages)

BCELImplementationGenerator

public BCELImplementationGenerator(org.datanucleus.metadata.ClassMetaData classMetaData,
                                   java.lang.String implClassName)
Constructor for an implementation of an abstract class.

Parameters:
classMetaData - MetaData for the abstract class
implClassName - Name of the implementation class to generate (omitting packages)
Method Detail

enhance

public void enhance(org.datanucleus.ClassLoaderResolver clr)
Enhance the implementation for use in the persistence process.

Specified by:
enhance in class AbstractImplementationGenerator
Parameters:
clr - ClassLoaderResolver the loader of the interface/abstract class

createPropertyFields

protected void createPropertyFields(org.datanucleus.metadata.AbstractClassMetaData acmd)
Create the fields.

Specified by:
createPropertyFields in class AbstractImplementationGenerator
Parameters:
acmd - AbstractClassMetaData

createDefaultConstructor

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


createGetter

protected void createGetter(org.datanucleus.metadata.AbstractMemberMetaData mmd)
Create a getter method for a /property.

Specified by:
createGetter in class AbstractImplementationGenerator
Parameters:
mmd - MetaData for the property

createSetter

protected void createSetter(org.datanucleus.metadata.AbstractMemberMetaData mmd)
Create a setter method for a property.

Specified by:
createSetter in class AbstractImplementationGenerator
Parameters:
mmd - MetaData for the property


Copyright © 2009. All Rights Reserved.