org.jpox.enhancer.bcel
Class BCELImplementationGenerator

java.lang.Object
  extended by org.jpox.enhancer.AbstractImplementationGenerator
      extended by org.jpox.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.jpox.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.jpox.metadata.ClassMetaData classMetaData, java.lang.String implClassName)
          Constructor for an implementation of an abstract class.
BCELImplementationGenerator(org.jpox.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.jpox.metadata.AbstractMemberMetaData mmd)
          Create a getter method for a /property.
protected  void createPropertyFields(org.jpox.metadata.AbstractClassMetaData acmd)
          Create the fields.
protected  void createSetter(org.jpox.metadata.AbstractMemberMetaData mmd)
          Create a setter method for a property.
 void enhance(org.jpox.ClassLoaderResolver clr)
          Enhance the implementation for use in the persistence process.
 
Methods inherited from class org.jpox.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.jpox.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.jpox.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.jpox.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.jpox.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.jpox.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.jpox.metadata.AbstractMemberMetaData mmd)
Create a setter method for a property.

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


Copyright © -2008 . All Rights Reserved.