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 class org.objectweb.asm.ClassVisitor
api, cv
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_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, V22, V23, V24, V9
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
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) Methods inherited from class org.objectweb.asm.ClassVisitor
getDelegate, visitAnnotation, visitAttribute, visitEnd, visitField, visitInnerClass, visitModule, visitNestHost, visitNestMember, visitOuterClass, visitPermittedSubclass, visitRecordComponent, visitSource, visitTypeAnnotation
-
Constructor Details
-
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 Details
-
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
.
-
visitMethod
public org.objectweb.asm.MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) - Overrides:
visitMethod
in classorg.objectweb.asm.ClassVisitor
-