Class DefaultBeanClassBuilder

java.lang.Object
org.drools.mvel.asm.DefaultBeanClassBuilder
All Implemented Interfaces:
Serializable, Comparable<KieService>, BeanClassBuilder, ClassBuilder, KieService, org.mvel2.asm.Opcodes

public class DefaultBeanClassBuilder extends Object implements org.mvel2.asm.Opcodes, BeanClassBuilder, Serializable
A builder to dynamically build simple Javabean(TM) classes
See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected boolean
     

    Fields inherited from interface org.kie.api.internal.utils.KieService

    UNDEFINED

    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_MANDATED, ACC_MODULE, ACC_NATIVE, ACC_OPEN, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_RECORD, ACC_STATIC, ACC_STATIC_PHASE, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_TRANSITIVE, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASM10_EXPERIMENTAL, ASM4, ASM5, ASM6, ASM7, ASM8, ASM9, 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, H_GETFIELD, H_GETSTATIC, H_INVOKEINTERFACE, H_INVOKESPECIAL, H_INVOKESTATIC, H_INVOKEVIRTUAL, H_NEWINVOKESPECIAL, H_PUTFIELD, H_PUTSTATIC, 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, 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, SOURCE_DEPRECATED, SOURCE_MASK, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, TOP, UNINITIALIZED_THIS, V_PREVIEW, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6, V1_7, V1_8, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V9
  • Constructor Summary

    Constructors
    Constructor
    Description
     
    DefaultBeanClassBuilder(boolean debug)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static void
    addAnnotationAttribute(org.drools.base.factmodel.AnnotationDefinition ad, org.mvel2.asm.AnnotationVisitor av)
     
    byte[]
    buildClass(org.drools.base.factmodel.ClassDefinition classDef, ClassLoader classLoader)
    Dynamically builds, defines and loads a class based on the given class definition
    protected void
    buildClassAnnotations(org.drools.base.factmodel.ClassDefinition classDef, org.mvel2.asm.ClassVisitor cw)
     
    protected org.mvel2.asm.ClassWriter
    buildClassHeader(ClassLoader classLoader, org.drools.base.factmodel.ClassDefinition classDef)
    Defines the class header for the given class definition
    protected void
    buildConstructors(org.mvel2.asm.ClassWriter cw, org.drools.base.factmodel.ClassDefinition classDef)
     
    protected void
    buildConstructorWithFields(org.mvel2.asm.ClassVisitor cw, org.drools.base.factmodel.ClassDefinition classDef, Collection<org.drools.base.factmodel.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, org.drools.base.factmodel.ClassDefinition classDef)
    Creates a default constructor for the class
    protected void
    buildDynamicPropertyMap(org.mvel2.asm.ClassWriter cw, org.drools.base.factmodel.ClassDefinition def)
    A traitable class is a special class with support for dynamic properties and types.
    protected void
    buildEqualityMethods(org.mvel2.asm.ClassWriter cw, org.drools.base.factmodel.ClassDefinition classDef)
     
    protected void
    buildEquals(org.mvel2.asm.ClassVisitor cw, org.drools.base.factmodel.ClassDefinition classDef)
     
    protected void
    buildField(org.mvel2.asm.ClassVisitor cw, org.drools.base.factmodel.FieldDefinition fieldDef)
    Creates the field defined by the given FieldDefinition
    protected void
    buildFieldAnnotations(org.drools.base.factmodel.FieldDefinition fieldDef, org.mvel2.asm.FieldVisitor fv)
     
    protected void
    buildFields(org.mvel2.asm.ClassWriter cw, org.drools.base.factmodel.ClassDefinition classDef)
     
    protected boolean
    buildFieldsToString(org.drools.base.factmodel.ClassDefinition classDef, org.mvel2.asm.MethodVisitor mv, boolean previous)
     
    protected void
    buildFieldTMS(org.mvel2.asm.ClassWriter cw, org.drools.base.factmodel.ClassDefinition def)
    A traitable class is a special class with support for dynamic properties and types.
    protected void
    buildFieldToString(org.drools.base.factmodel.FieldDefinition field, org.drools.base.factmodel.ClassDefinition classDef, org.mvel2.asm.MethodVisitor mv, boolean first)
     
    protected void
    buildGetMethod(org.mvel2.asm.ClassVisitor cw, org.drools.base.factmodel.ClassDefinition classDef, org.drools.base.factmodel.FieldDefinition fieldDef)
    Creates the get method for the given field definition
    protected void
    buildGettersAndSetters(org.mvel2.asm.ClassWriter cw, org.drools.base.factmodel.ClassDefinition classDef)
     
    protected void
    buildHashCode(org.mvel2.asm.ClassVisitor cw, org.drools.base.factmodel.ClassDefinition classDef)
     
    protected void
    buildMetaData(org.mvel2.asm.ClassWriter cw, org.drools.base.factmodel.ClassDefinition classDef)
     
    protected void
    buildSetMethod(org.mvel2.asm.ClassVisitor cw, org.drools.base.factmodel.ClassDefinition classDef, org.drools.base.factmodel.FieldDefinition fieldDef)
    Creates the set method for the given field definition
    protected void
    buildSystemHashCode(org.mvel2.asm.ClassWriter cw)
     
    protected void
    buildToString(org.mvel2.asm.ClassVisitor cw, org.drools.base.factmodel.ClassDefinition classDef)
     
    protected void
    buildTraitMap(org.mvel2.asm.ClassWriter cw, org.drools.base.factmodel.ClassDefinition classDef)
    A traitable class is a special class with support for dynamic properties and types.
    protected boolean
    defaultConstructorStart(org.mvel2.asm.MethodVisitor mv, org.drools.base.factmodel.ClassDefinition classDef)
     
    protected void
    fieldConstructorStart(org.mvel2.asm.MethodVisitor mv, org.drools.base.factmodel.ClassDefinition classDef, Collection<org.drools.base.factmodel.FieldDefinition> fieldDefs)
     
    protected boolean
    initFieldWithDefaultValue(org.mvel2.asm.MethodVisitor mv, org.drools.base.factmodel.ClassDefinition classDef, org.drools.base.factmodel.FieldDefinition field)
     
    protected void
    initializeDynamicTypeStructures(org.mvel2.asm.MethodVisitor mv, org.drools.base.factmodel.ClassDefinition classDef)
    Initializes the trait map and dynamic property map to empty values
    protected void
    updateTraitableField(org.mvel2.asm.MethodVisitor mv, org.drools.base.factmodel.ClassDefinition classDef, org.drools.base.factmodel.FieldDefinition fieldDef)
     
    protected void
    visitFieldOrGetter(org.mvel2.asm.MethodVisitor mv, org.drools.base.factmodel.ClassDefinition classDef, org.drools.base.factmodel.FieldDefinition field)
     

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface org.kie.api.internal.utils.KieService

    compareTo, servicePriority, serviceTag
  • Field Details

    • debug

      protected boolean debug
  • Constructor Details

    • DefaultBeanClassBuilder

      public DefaultBeanClassBuilder()
    • DefaultBeanClassBuilder

      public DefaultBeanClassBuilder(boolean debug)
  • Method Details

    • buildClass

      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
      InvocationTargetException
      IllegalAccessException
      NoSuchMethodException
      ClassNotFoundException
      IllegalArgumentException
      SecurityException
      NoSuchFieldException
      InstantiationException
    • buildGettersAndSetters

      protected void buildGettersAndSetters(org.mvel2.asm.ClassWriter cw, org.drools.base.factmodel.ClassDefinition classDef)
    • buildEqualityMethods

      protected void buildEqualityMethods(org.mvel2.asm.ClassWriter cw, org.drools.base.factmodel.ClassDefinition classDef)
    • buildMetaData

      protected void buildMetaData(org.mvel2.asm.ClassWriter cw, org.drools.base.factmodel.ClassDefinition classDef)
    • buildFields

      protected void buildFields(org.mvel2.asm.ClassWriter cw, org.drools.base.factmodel.ClassDefinition classDef)
    • buildConstructors

      protected void buildConstructors(org.mvel2.asm.ClassWriter cw, org.drools.base.factmodel.ClassDefinition classDef)
    • buildTraitMap

      protected void buildTraitMap(org.mvel2.asm.ClassWriter cw, org.drools.base.factmodel.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, org.drools.base.factmodel.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 -
    • buildFieldTMS

      protected void buildFieldTMS(org.mvel2.asm.ClassWriter cw, org.drools.base.factmodel.ClassDefinition def)
      A traitable class is a special class with support for dynamic properties and types. A traitable class in logical mode provides additional control over the values and type(s) of its fields.
      Parameters:
      cw -
      def -
    • buildClassHeader

      protected org.mvel2.asm.ClassWriter buildClassHeader(ClassLoader classLoader, org.drools.base.factmodel.ClassDefinition classDef)
      Defines the class header for the given class definition
    • buildField

      protected void buildField(org.mvel2.asm.ClassVisitor cw, org.drools.base.factmodel.FieldDefinition fieldDef)
      Creates the field defined by the given FieldDefinition
      Parameters:
      cw -
      fieldDef -
    • buildDefaultConstructor

      protected void buildDefaultConstructor(org.mvel2.asm.ClassVisitor cw, org.drools.base.factmodel.ClassDefinition classDef)
      Creates a default constructor for the class
      Parameters:
      cw -
    • defaultConstructorStart

      protected boolean defaultConstructorStart(org.mvel2.asm.MethodVisitor mv, org.drools.base.factmodel.ClassDefinition classDef)
    • initFieldWithDefaultValue

      protected boolean initFieldWithDefaultValue(org.mvel2.asm.MethodVisitor mv, org.drools.base.factmodel.ClassDefinition classDef, org.drools.base.factmodel.FieldDefinition field)
    • initializeDynamicTypeStructures

      protected void initializeDynamicTypeStructures(org.mvel2.asm.MethodVisitor mv, org.drools.base.factmodel.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, org.drools.base.factmodel.ClassDefinition classDef, Collection<org.drools.base.factmodel.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, org.drools.base.factmodel.ClassDefinition classDef, Collection<org.drools.base.factmodel.FieldDefinition> fieldDefs)
    • buildSetMethod

      protected void buildSetMethod(org.mvel2.asm.ClassVisitor cw, org.drools.base.factmodel.ClassDefinition classDef, org.drools.base.factmodel.FieldDefinition fieldDef)
      Creates the set method for the given field definition
      Parameters:
      cw -
      classDef -
      fieldDef -
    • buildGetMethod

      protected void buildGetMethod(org.mvel2.asm.ClassVisitor cw, org.drools.base.factmodel.ClassDefinition classDef, org.drools.base.factmodel.FieldDefinition fieldDef)
      Creates the get method for the given field definition
      Parameters:
      cw -
      classDef -
      fieldDef -
    • buildEquals

      protected void buildEquals(org.mvel2.asm.ClassVisitor cw, org.drools.base.factmodel.ClassDefinition classDef)
    • buildSystemHashCode

      protected void buildSystemHashCode(org.mvel2.asm.ClassWriter cw)
    • buildHashCode

      protected void buildHashCode(org.mvel2.asm.ClassVisitor cw, org.drools.base.factmodel.ClassDefinition classDef)
    • buildToString

      protected void buildToString(org.mvel2.asm.ClassVisitor cw, org.drools.base.factmodel.ClassDefinition classDef)
    • buildFieldsToString

      protected boolean buildFieldsToString(org.drools.base.factmodel.ClassDefinition classDef, org.mvel2.asm.MethodVisitor mv, boolean previous)
    • buildFieldToString

      protected void buildFieldToString(org.drools.base.factmodel.FieldDefinition field, org.drools.base.factmodel.ClassDefinition classDef, org.mvel2.asm.MethodVisitor mv, boolean first)
    • buildClassAnnotations

      protected void buildClassAnnotations(org.drools.base.factmodel.ClassDefinition classDef, org.mvel2.asm.ClassVisitor cw)
    • buildFieldAnnotations

      protected void buildFieldAnnotations(org.drools.base.factmodel.FieldDefinition fieldDef, org.mvel2.asm.FieldVisitor fv)
    • addAnnotationAttribute

      public static void addAnnotationAttribute(org.drools.base.factmodel.AnnotationDefinition ad, org.mvel2.asm.AnnotationVisitor av)
    • visitFieldOrGetter

      protected void visitFieldOrGetter(org.mvel2.asm.MethodVisitor mv, org.drools.base.factmodel.ClassDefinition classDef, org.drools.base.factmodel.FieldDefinition field)
    • updateTraitableField

      protected void updateTraitableField(org.mvel2.asm.MethodVisitor mv, org.drools.base.factmodel.ClassDefinition classDef, org.drools.base.factmodel.FieldDefinition fieldDef)