Package org.drools.mvel.asm
Class DefaultBeanClassBuilder
- java.lang.Object
-
- org.drools.mvel.asm.DefaultBeanClassBuilder
-
- All Implemented Interfaces:
java.io.Serializable,java.lang.Comparable<org.kie.api.internal.utils.KieService>,org.drools.compiler.builder.impl.classbuilder.BeanClassBuilder,org.drools.compiler.builder.impl.classbuilder.ClassBuilder,org.kie.api.internal.utils.KieService,org.mvel2.asm.Opcodes
public class DefaultBeanClassBuilder extends java.lang.Object implements org.mvel2.asm.Opcodes, org.drools.compiler.builder.impl.classbuilder.BeanClassBuilder, java.io.SerializableA builder to dynamically build simple Javabean(TM) classes- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected booleandebug-
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()DefaultBeanClassBuilder(boolean debug)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static voidaddAnnotationAttribute(org.drools.base.factmodel.AnnotationDefinition ad, org.mvel2.asm.AnnotationVisitor av)byte[]buildClass(org.drools.base.factmodel.ClassDefinition classDef, java.lang.ClassLoader classLoader)Dynamically builds, defines and loads a class based on the given class definitionprotected voidbuildClassAnnotations(org.drools.base.factmodel.ClassDefinition classDef, org.mvel2.asm.ClassVisitor cw)protected org.mvel2.asm.ClassWriterbuildClassHeader(java.lang.ClassLoader classLoader, org.drools.base.factmodel.ClassDefinition classDef)Defines the class header for the given class definitionprotected voidbuildConstructors(org.mvel2.asm.ClassWriter cw, org.drools.base.factmodel.ClassDefinition classDef)protected voidbuildConstructorWithFields(org.mvel2.asm.ClassVisitor cw, org.drools.base.factmodel.ClassDefinition classDef, java.util.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 voidbuildDefaultConstructor(org.mvel2.asm.ClassVisitor cw, org.drools.base.factmodel.ClassDefinition classDef)Creates a default constructor for the classprotected voidbuildDynamicPropertyMap(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 voidbuildEqualityMethods(org.mvel2.asm.ClassWriter cw, org.drools.base.factmodel.ClassDefinition classDef)protected voidbuildEquals(org.mvel2.asm.ClassVisitor cw, org.drools.base.factmodel.ClassDefinition classDef)protected voidbuildField(org.mvel2.asm.ClassVisitor cw, org.drools.base.factmodel.FieldDefinition fieldDef)Creates the field defined by the given FieldDefinitionprotected voidbuildFieldAnnotations(org.drools.base.factmodel.FieldDefinition fieldDef, org.mvel2.asm.FieldVisitor fv)protected voidbuildFields(org.mvel2.asm.ClassWriter cw, org.drools.base.factmodel.ClassDefinition classDef)protected booleanbuildFieldsToString(org.drools.base.factmodel.ClassDefinition classDef, org.mvel2.asm.MethodVisitor mv, boolean previous)protected voidbuildFieldTMS(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 voidbuildFieldToString(org.drools.base.factmodel.FieldDefinition field, org.drools.base.factmodel.ClassDefinition classDef, org.mvel2.asm.MethodVisitor mv, boolean first)protected voidbuildGetMethod(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 definitionprotected voidbuildGettersAndSetters(org.mvel2.asm.ClassWriter cw, org.drools.base.factmodel.ClassDefinition classDef)protected voidbuildHashCode(org.mvel2.asm.ClassVisitor cw, org.drools.base.factmodel.ClassDefinition classDef)protected voidbuildMetaData(org.mvel2.asm.ClassWriter cw, org.drools.base.factmodel.ClassDefinition classDef)protected voidbuildSetMethod(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 definitionprotected voidbuildSystemHashCode(org.mvel2.asm.ClassWriter cw)protected voidbuildToString(org.mvel2.asm.ClassVisitor cw, org.drools.base.factmodel.ClassDefinition classDef)protected voidbuildTraitMap(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 booleandefaultConstructorStart(org.mvel2.asm.MethodVisitor mv, org.drools.base.factmodel.ClassDefinition classDef)protected voidfieldConstructorStart(org.mvel2.asm.MethodVisitor mv, org.drools.base.factmodel.ClassDefinition classDef, java.util.Collection<org.drools.base.factmodel.FieldDefinition> fieldDefs)protected booleaninitFieldWithDefaultValue(org.mvel2.asm.MethodVisitor mv, org.drools.base.factmodel.ClassDefinition classDef, org.drools.base.factmodel.FieldDefinition field)protected voidinitializeDynamicTypeStructures(org.mvel2.asm.MethodVisitor mv, org.drools.base.factmodel.ClassDefinition classDef)Initializes the trait map and dynamic property map to empty valuesprotected voidupdateTraitableField(org.mvel2.asm.MethodVisitor mv, org.drools.base.factmodel.ClassDefinition classDef, org.drools.base.factmodel.FieldDefinition fieldDef)protected voidvisitFieldOrGetter(org.mvel2.asm.MethodVisitor mv, org.drools.base.factmodel.ClassDefinition classDef, org.drools.base.factmodel.FieldDefinition field)
-
-
-
Method Detail
-
buildClass
public byte[] buildClass(org.drools.base.factmodel.ClassDefinition classDef, java.lang.ClassLoader classLoader) throws java.io.IOException, java.lang.SecurityException, java.lang.IllegalArgumentException, java.lang.ClassNotFoundException, java.lang.NoSuchMethodException, java.lang.IllegalAccessException, java.lang.reflect.InvocationTargetException, java.lang.InstantiationException, java.lang.NoSuchFieldExceptionDynamically builds, defines and loads a class based on the given class definition- Specified by:
buildClassin interfaceorg.drools.compiler.builder.impl.classbuilder.ClassBuilder- Parameters:
classDef- the class definition object structure- Returns:
- the Class instance for the given class definition
- Throws:
java.io.IOExceptionjava.lang.reflect.InvocationTargetExceptionjava.lang.IllegalAccessExceptionjava.lang.NoSuchMethodExceptionjava.lang.ClassNotFoundExceptionjava.lang.IllegalArgumentExceptionjava.lang.SecurityExceptionjava.lang.NoSuchFieldExceptionjava.lang.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(java.lang.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, java.util.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, java.util.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)
-
-