org.jvnet.lafwidget.ant
Class ContainerGhostingAugmenter.AugmentClassAdapter

java.lang.Object
  extended by org.objectweb.asm.ClassAdapter
      extended by org.jvnet.lafwidget.ant.ContainerGhostingAugmenter.AugmentClassAdapter
All Implemented Interfaces:
org.objectweb.asm.ClassVisitor, org.objectweb.asm.Opcodes
Enclosing class:
ContainerGhostingAugmenter

protected class ContainerGhostingAugmenter.AugmentClassAdapter
extends org.objectweb.asm.ClassAdapter
implements org.objectweb.asm.Opcodes

Adapter for augmenting a single class.

Author:
Kirill Grouchnikov.

Field Summary
 
Fields inherited from class org.objectweb.asm.ClassAdapter
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_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, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, 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, 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, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, 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, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6
 
Constructor Summary
ContainerGhostingAugmenter.AugmentClassAdapter(org.objectweb.asm.ClassVisitor cv, java.util.Set<java.lang.String> existingMethods, java.util.Set<java.lang.String> existingFields, java.lang.reflect.Method methodToAugment, boolean toInjectAfterOriginal)
          Creates a new augmentor.
 
Method Summary
 void augmentUpdateMethodAfter(boolean toSynthOriginal, java.lang.String className, java.lang.String superClassName, java.lang.String methodDesc)
          Augments the update method that is assumed to always have two parameters, injecting the ghosting code after the original implementation.
 void augmentUpdateMethodBefore(boolean toSynthOriginal, java.lang.String className, java.lang.String superClassName, java.lang.String methodDesc)
          Augments the update method that is assumed to always have two parameters, injecting the ghosting code before the original implementation.
 void visit(int version, int access, java.lang.String name, java.lang.String signature, java.lang.String superName, java.lang.String[] interfaces)
           
 org.objectweb.asm.MethodVisitor visitMethod(int access, java.lang.String name, java.lang.String desc, java.lang.String signature, java.lang.String[] exceptions)
           
 
Methods inherited from class org.objectweb.asm.ClassAdapter
visitAnnotation, visitAttribute, visitEnd, visitField, visitInnerClass, visitOuterClass, visitSource
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ContainerGhostingAugmenter.AugmentClassAdapter

public ContainerGhostingAugmenter.AugmentClassAdapter(org.objectweb.asm.ClassVisitor cv,
                                                      java.util.Set<java.lang.String> existingMethods,
                                                      java.util.Set<java.lang.String> existingFields,
                                                      java.lang.reflect.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,
                  java.lang.String name,
                  java.lang.String signature,
                  java.lang.String superName,
                  java.lang.String[] interfaces)
Specified by:
visit in interface org.objectweb.asm.ClassVisitor
Overrides:
visit in class org.objectweb.asm.ClassAdapter

augmentUpdateMethodBefore

public void augmentUpdateMethodBefore(boolean toSynthOriginal,
                                      java.lang.String className,
                                      java.lang.String superClassName,
                                      java.lang.String methodDesc)
Augments the update 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 for void installUI(JButton button): (Ljavax/swing/JButton;)V.

augmentUpdateMethodAfter

public void augmentUpdateMethodAfter(boolean toSynthOriginal,
                                     java.lang.String className,
                                     java.lang.String superClassName,
                                     java.lang.String methodDesc)
Augments the update 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 for void installUI(JButton button): (Ljavax/swing/JButton;)V.

visitMethod

public org.objectweb.asm.MethodVisitor visitMethod(int access,
                                                   java.lang.String name,
                                                   java.lang.String desc,
                                                   java.lang.String signature,
                                                   java.lang.String[] exceptions)
Specified by:
visitMethod in interface org.objectweb.asm.ClassVisitor
Overrides:
visitMethod in class org.objectweb.asm.ClassAdapter