org.drools.factmodel
Class DefaultBeanClassBuilder

java.lang.Object
  extended by org.drools.factmodel.DefaultBeanClassBuilder
All Implemented Interfaces:
BeanClassBuilder, ClassBuilder, org.drools.Service, org.mvel2.asm.Opcodes

public class DefaultBeanClassBuilder
extends Object
implements org.mvel2.asm.Opcodes, BeanClassBuilder

A builder to dynamically build simple Javabean(TM) classes


Field Summary
protected  boolean debug
           
 
Fields inherited from interface org.mvel2.asm.Opcodes
AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, 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, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASTORE, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DMUL, DNEG, DOUBLE, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F_APPEND, F_CHOP, F_FULL, F_NEW, F_SAME, F_SAME1, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAT, FMUL, FNEG, FREM, FRETURN, FSTORE, FSUB, GETFIELD, GETSTATIC, GOTO, 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, ILOAD, IMUL, INEG, INSTANCEOF, INTEGER, INVOKEDYNAMIC, INVOKEDYNAMIC_OWNER, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISUB, IUSHR, IXOR, JSR, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDIV, LLOAD, LMUL, LNEG, LONG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, NULL, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, TOP, UNINITIALIZED_THIS, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6, V1_7
 
Constructor Summary
DefaultBeanClassBuilder()
           
DefaultBeanClassBuilder(boolean debug)
           
 
Method Summary
 byte[] buildClass(ClassDefinition classDef)
          Dynamically builds, defines and loads a class based on the given class definition
protected  void buildClassAnnotations(ClassDefinition classDef, org.mvel2.asm.ClassVisitor cw)
           
protected  void buildClassHeader(org.mvel2.asm.ClassVisitor cw, ClassDefinition classDef)
          Defines the class header for the given class definition
protected  void buildConstructors(org.mvel2.asm.ClassWriter cw, ClassDefinition classDef)
           
protected  void buildConstructorWithFields(org.mvel2.asm.ClassVisitor cw, ClassDefinition classDef, Collection<FieldDefinition> fieldDefs)
          Creates a constructor that takes and assigns values to all fields in the order they are declared.
protected  void buildDefaultConstructor(org.mvel2.asm.ClassVisitor cw, ClassDefinition classDef)
          Creates a default constructor for the class
protected  void buildDynamicPropertyMap(org.mvel2.asm.ClassWriter cw, ClassDefinition def)
          A traitable class is a special class with support for dynamic properties and types.
protected  void buildEqualityMethods(org.mvel2.asm.ClassWriter cw, ClassDefinition classDef)
           
protected  void buildEquals(org.mvel2.asm.ClassVisitor cw, ClassDefinition classDef)
           
protected  void buildField(org.mvel2.asm.ClassVisitor cw, FieldDefinition fieldDef)
          Creates the field defined by the given FieldDefinition
protected  void buildFieldAnnotations(FieldDefinition fieldDef, org.mvel2.asm.FieldVisitor fv)
           
protected  void buildFields(org.mvel2.asm.ClassWriter cw, ClassDefinition classDef)
           
protected  void buildGetMethod(org.mvel2.asm.ClassVisitor cw, ClassDefinition classDef, FieldDefinition fieldDef)
          Creates the get method for the given field definition
protected  void buildGettersAndSetters(org.mvel2.asm.ClassWriter cw, ClassDefinition classDef)
           
protected  void buildHashCode(org.mvel2.asm.ClassVisitor cw, ClassDefinition classDef)
           
protected  void buildSetMethod(org.mvel2.asm.ClassVisitor cw, ClassDefinition classDef, FieldDefinition fieldDef)
          Creates the set method for the given field definition
protected  void buildToString(org.mvel2.asm.ClassVisitor cw, ClassDefinition classDef)
           
protected  void buildTraitMap(org.mvel2.asm.ClassWriter cw, ClassDefinition classDef)
          A traitable class is a special class with support for dynamic properties and types.
protected  boolean defaultConstructorStart(org.mvel2.asm.MethodVisitor mv, ClassDefinition classDef)
           
protected  void fieldConstructorStart(org.mvel2.asm.MethodVisitor mv, ClassDefinition classDef, Collection<FieldDefinition> fieldDefs)
           
protected  boolean initFieldWithDefaultValue(org.mvel2.asm.MethodVisitor mv, ClassDefinition classDef, FieldDefinition field)
           
protected  void initializeDynamicTypeStructures(org.mvel2.asm.MethodVisitor mv, ClassDefinition classDef)
          Initializes the trait map and dynamic property map to empty values
protected  void visitFieldOrGetter(org.mvel2.asm.MethodVisitor mv, ClassDefinition classDef, FieldDefinition field)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

debug

protected boolean debug
Constructor Detail

DefaultBeanClassBuilder

public DefaultBeanClassBuilder()

DefaultBeanClassBuilder

public DefaultBeanClassBuilder(boolean debug)
Method Detail

buildClass

public byte[] buildClass(ClassDefinition classDef)
                  throws IOException,
                         IntrospectionException,
                         SecurityException,
                         IllegalArgumentException,
                         ClassNotFoundException,
                         NoSuchMethodException,
                         IllegalAccessException,
                         InvocationTargetException,
                         InstantiationException,
                         NoSuchFieldException
Dynamically builds, defines and loads a class based on the given class definition

Specified by:
buildClass in interface ClassBuilder
Parameters:
classDef - the class definition object structure
Returns:
the Class instance for the given class definition
Throws:
IOException
IntrospectionException
InvocationTargetException
IllegalAccessException
NoSuchMethodException
ClassNotFoundException
IllegalArgumentException
SecurityException
NoSuchFieldException
InstantiationException

buildGettersAndSetters

protected void buildGettersAndSetters(org.mvel2.asm.ClassWriter cw,
                                      ClassDefinition classDef)

buildEqualityMethods

protected void buildEqualityMethods(org.mvel2.asm.ClassWriter cw,
                                    ClassDefinition classDef)

buildFields

protected void buildFields(org.mvel2.asm.ClassWriter cw,
                           ClassDefinition classDef)

buildConstructors

protected void buildConstructors(org.mvel2.asm.ClassWriter cw,
                                 ClassDefinition classDef)

buildTraitMap

protected void buildTraitMap(org.mvel2.asm.ClassWriter cw,
                             ClassDefinition classDef)
A traitable class is a special class with support for dynamic properties and types. This method builds the trait map, containing the references to the proxies for each trait carried by an object at a given time.

Parameters:
cw -
classDef -

buildDynamicPropertyMap

protected void buildDynamicPropertyMap(org.mvel2.asm.ClassWriter cw,
                                       ClassDefinition def)
A traitable class is a special class with support for dynamic properties and types. This method builds the property map, containing the key/values pairs to implement any property defined in a trait interface but not supported by the traited class fields.

Parameters:
cw -
def -

buildClassHeader

protected void buildClassHeader(org.mvel2.asm.ClassVisitor cw,
                                ClassDefinition classDef)
Defines the class header for the given class definition

Parameters:
cw -
classDef -

buildField

protected void buildField(org.mvel2.asm.ClassVisitor cw,
                          FieldDefinition fieldDef)
Creates the field defined by the given FieldDefinition

Parameters:
cw -
fieldDef -

buildDefaultConstructor

protected void buildDefaultConstructor(org.mvel2.asm.ClassVisitor cw,
                                       ClassDefinition classDef)
Creates a default constructor for the class

Parameters:
cw -

defaultConstructorStart

protected boolean defaultConstructorStart(org.mvel2.asm.MethodVisitor mv,
                                          ClassDefinition classDef)

initFieldWithDefaultValue

protected boolean initFieldWithDefaultValue(org.mvel2.asm.MethodVisitor mv,
                                            ClassDefinition classDef,
                                            FieldDefinition field)

initializeDynamicTypeStructures

protected void initializeDynamicTypeStructures(org.mvel2.asm.MethodVisitor mv,
                                               ClassDefinition classDef)
Initializes the trait map and dynamic property map to empty values

Parameters:
mv -
classDef -

buildConstructorWithFields

protected void buildConstructorWithFields(org.mvel2.asm.ClassVisitor cw,
                                          ClassDefinition classDef,
                                          Collection<FieldDefinition> fieldDefs)
Creates a constructor that takes and assigns values to all fields in the order they are declared.

Parameters:
cw -
classDef -

fieldConstructorStart

protected void fieldConstructorStart(org.mvel2.asm.MethodVisitor mv,
                                     ClassDefinition classDef,
                                     Collection<FieldDefinition> fieldDefs)

buildSetMethod

protected void buildSetMethod(org.mvel2.asm.ClassVisitor cw,
                              ClassDefinition classDef,
                              FieldDefinition fieldDef)
Creates the set method for the given field definition

Parameters:
cw -
classDef -
fieldDef -

buildGetMethod

protected void buildGetMethod(org.mvel2.asm.ClassVisitor cw,
                              ClassDefinition classDef,
                              FieldDefinition fieldDef)
Creates the get method for the given field definition

Parameters:
cw -
classDef -
fieldDef -

buildEquals

protected void buildEquals(org.mvel2.asm.ClassVisitor cw,
                           ClassDefinition classDef)

buildHashCode

protected void buildHashCode(org.mvel2.asm.ClassVisitor cw,
                             ClassDefinition classDef)

buildToString

protected void buildToString(org.mvel2.asm.ClassVisitor cw,
                             ClassDefinition classDef)

buildClassAnnotations

protected void buildClassAnnotations(ClassDefinition classDef,
                                     org.mvel2.asm.ClassVisitor cw)

buildFieldAnnotations

protected void buildFieldAnnotations(FieldDefinition fieldDef,
                                     org.mvel2.asm.FieldVisitor fv)

visitFieldOrGetter

protected void visitFieldOrGetter(org.mvel2.asm.MethodVisitor mv,
                                  ClassDefinition classDef,
                                  FieldDefinition field)


Copyright © 2001-2012 JBoss by Red Hat. All Rights Reserved.