org.apache.felix.ipojo.manipulation
Class MethodCodeAdapter

java.lang.Object
  extended by org.objectweb.asm.MethodAdapter
      extended by org.objectweb.asm.commons.LocalVariablesSorter
          extended by org.objectweb.asm.commons.GeneratorAdapter
              extended by org.apache.felix.ipojo.manipulation.MethodCodeAdapter
All Implemented Interfaces:
org.objectweb.asm.MethodVisitor, org.objectweb.asm.Opcodes

public class MethodCodeAdapter
extends org.objectweb.asm.commons.GeneratorAdapter
implements org.objectweb.asm.Opcodes

Insert code calling callbacks at the entry and before the exit of a method. Moreover it replaces all GETFIELD and SETFIELD by getter and setter invocation.

Author:
Felix Project Team

Field Summary
 
Fields inherited from class org.objectweb.asm.commons.GeneratorAdapter
ADD, AND, DIV, EQ, GE, GT, LE, LT, MUL, NE, NEG, OR, REM, SHL, SHR, SUB, USHR, XOR
 
Fields inherited from class org.objectweb.asm.commons.LocalVariablesSorter
firstLocal, nextLocal
 
Fields inherited from class org.objectweb.asm.MethodAdapter
mv
 
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, 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, 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, INVOKEDYNAMIC_OWNER, 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
 
Constructor Summary
MethodCodeAdapter(org.objectweb.asm.MethodVisitor mv, String owner, int access, String name, String desc, Set fields)
          MethodCodeAdapter constructor.
 
Method Summary
 org.objectweb.asm.AnnotationVisitor visitAnnotation(String name, boolean visible)
          Visits an annotation.
 void visitFieldInsn(int opcode, String owner, String name, String desc)
          Visit an instruction modifying a method (GETFIELD/PUTFIELD).
 org.objectweb.asm.AnnotationVisitor visitParameterAnnotation(int id, String name, boolean visible)
          Visits a parameter annotation.
 
Methods inherited from class org.objectweb.asm.commons.GeneratorAdapter
arrayLength, arrayLoad, arrayStore, box, cast, catchException, checkCast, dup, dup2, dup2X1, dup2X2, dupX1, dupX2, endMethod, getField, getLocalType, getStatic, goTo, ifCmp, ifICmp, ifNonNull, ifNull, ifZCmp, iinc, instanceOf, invokeConstructor, invokeDynamic, invokeInterface, invokeStatic, invokeVirtual, loadArg, loadArgArray, loadArgs, loadArgs, loadLocal, loadLocal, loadThis, mark, mark, math, monitorEnter, monitorExit, newArray, newInstance, newLabel, not, pop, pop2, push, push, push, push, push, push, push, putField, putStatic, ret, returnValue, setLocalType, storeArg, storeLocal, storeLocal, swap, swap, tableSwitch, tableSwitch, throwException, throwException, unbox, valueOf
 
Methods inherited from class org.objectweb.asm.commons.LocalVariablesSorter
newLocal, newLocalMapping, visitFrame, visitIincInsn, visitLocalVariable, visitMaxs, visitVarInsn
 
Methods inherited from class org.objectweb.asm.MethodAdapter
visitAnnotationDefault, visitAttribute, visitCode, visitEnd, visitInsn, visitIntInsn, visitJumpInsn, visitLabel, visitLdcInsn, visitLineNumber, visitLookupSwitchInsn, visitMethodInsn, visitMultiANewArrayInsn, visitTableSwitchInsn, visitTryCatchBlock, visitTypeInsn
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MethodCodeAdapter

public MethodCodeAdapter(org.objectweb.asm.MethodVisitor mv,
                         String owner,
                         int access,
                         String name,
                         String desc,
                         Set fields)
MethodCodeAdapter constructor.

Parameters:
mv - : MethodVisitor
owner - : Name of the class
access - : Method access
name - : Method name
desc - : Method descriptor
fields - : Contained fields
Method Detail

visitFieldInsn

public void visitFieldInsn(int opcode,
                           String owner,
                           String name,
                           String desc)
Visit an instruction modifying a method (GETFIELD/PUTFIELD).

Specified by:
visitFieldInsn in interface org.objectweb.asm.MethodVisitor
Overrides:
visitFieldInsn in class org.objectweb.asm.MethodAdapter
Parameters:
opcode - : visited operation code
owner - : owner of the field
name - : name of the field
desc - : descriptor of the field
See Also:
MethodVisitor.visitFieldInsn(int, String, String, String)

visitAnnotation

public org.objectweb.asm.AnnotationVisitor visitAnnotation(String name,
                                                           boolean visible)
Visits an annotation. If the annotation is visible, the annotation is removed. In fact the annotation was already moved to the method replacing this one. If the annotation is not visible, this annotation is kept on this method.

Specified by:
visitAnnotation in interface org.objectweb.asm.MethodVisitor
Overrides:
visitAnnotation in class org.objectweb.asm.MethodAdapter
Parameters:
name - the name of the annotation
visible - the annotation visibility
Returns:
the null if the annotation is visible, otherwise returns MethodAdapter.visitAnnotation(String, boolean)
See Also:
MethodAdapter.visitAnnotation(java.lang.String, boolean)

visitParameterAnnotation

public org.objectweb.asm.AnnotationVisitor visitParameterAnnotation(int id,
                                                                    String name,
                                                                    boolean visible)
Visits a parameter annotation.

Specified by:
visitParameterAnnotation in interface org.objectweb.asm.MethodVisitor
Overrides:
visitParameterAnnotation in class org.objectweb.asm.MethodAdapter
Parameters:
id - the parameter number.
name - the annotation name
visible - if te annotation visibility
Returns:
the null if the annotation is visible, otherwise returns MethodAdapter.visitAnnotation(String, boolean)
See Also:
MethodAdapter.visitParameterAnnotation(int, java.lang.String, boolean)


Copyright © 2013 The Apache Software Foundation. All Rights Reserved.