Package org.pushingpixels.lafwidget.ant
Class ContainerGhostingAugmenter.AugmentClassAdapter
- java.lang.Object
-
- org.objectweb.asm.ClassVisitor
-
- org.pushingpixels.lafwidget.ant.ContainerGhostingAugmenter.AugmentClassAdapter
-
- All Implemented Interfaces:
org.objectweb.asm.Opcodes
- Enclosing class:
- ContainerGhostingAugmenter
protected class ContainerGhostingAugmenter.AugmentClassAdapter extends org.objectweb.asm.ClassVisitor implements org.objectweb.asm.Opcodes
Adapter for augmenting a single class.
-
-
Field Summary
-
Fields inherited from interface org.objectweb.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_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, ASM4, ASM5, ASM6, 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, 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, V1_8, V9
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
augmentUpdateMethodAfter(boolean toSynthOriginal, String className, String superClassName, String methodDesc)
Augments theupdate
method that is assumed to always have two parameters, injecting the ghosting code after the original implementation.void
augmentUpdateMethodBefore(boolean toSynthOriginal, String className, String superClassName, String methodDesc)
Augments theupdate
method that is assumed to always have two parameters, injecting the ghosting code before the original implementation.void
visit(int version, int access, String name, String signature, String superName, String[] interfaces)
org.objectweb.asm.MethodVisitor
visitMethod(int access, String name, String desc, String signature, String[] exceptions)
-
-
-
Constructor Detail
-
AugmentClassAdapter
public AugmentClassAdapter(org.objectweb.asm.ClassVisitor cv, Set<String> existingMethods, Set<String> existingFields, Method methodToAugment, boolean toInjectAfterOriginal)
Creates a new augmentor.- Parameters:
cv
- Class visitor to recreate the non-augmented methods.existingMethods
- Contains all method names.existingFields
- Contains all field names.methodToAugment
- Method to augment.toInjectAfterOriginal
-true
if the code needs to be injected after the call to the original implementation.
-
-
Method Detail
-
visit
public void visit(int version, int access, String name, String signature, String superName, String[] interfaces)
- Overrides:
visit
in classorg.objectweb.asm.ClassVisitor
-
augmentUpdateMethodBefore
public void augmentUpdateMethodBefore(boolean toSynthOriginal, String className, String superClassName, String methodDesc)
Augments theupdate
method that is assumed to always have two parameters, injecting the ghosting code before the original implementation.- Parameters:
toSynthOriginal
- Indication whether we need to create an empty (only call to super()) implementation.className
- Class name.superClassName
- Super class name (relevant for generating empty implementation).methodDesc
- Function signature (using JNI style declaration). Example forvoid installUI(JButton button)
:(Ljavax/swing/JButton;)V
.
-
augmentUpdateMethodAfter
public void augmentUpdateMethodAfter(boolean toSynthOriginal, String className, String superClassName, String methodDesc)
Augments theupdate
method that is assumed to always have two parameters, injecting the ghosting code after the original implementation.- Parameters:
toSynthOriginal
- Indication whether we need to create an empty (only call to super()) implementation.className
- Class name.superClassName
- Super class name (relevant for generating empty implementation).methodDesc
- Function signature (using JNI style declaration). Example forvoid installUI(JButton button)
:(Ljavax/swing/JButton;)V
.
-
-