org.apache.felix.ipojo.manipulation
Class ClassChecker

java.lang.Object
  extended by org.objectweb.asm.commons.EmptyVisitor
      extended by org.apache.felix.ipojo.manipulation.ClassChecker
All Implemented Interfaces:
org.objectweb.asm.AnnotationVisitor, org.objectweb.asm.ClassVisitor, org.objectweb.asm.FieldVisitor, org.objectweb.asm.MethodVisitor, org.objectweb.asm.Opcodes

public class ClassChecker
extends org.objectweb.asm.commons.EmptyVisitor
implements org.objectweb.asm.ClassVisitor, org.objectweb.asm.Opcodes

Check that a POJO is already manipulated or not. Moreover it allows to get manipulation data about this class.

Author:
Felix Project Team

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_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, 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
 
Constructor Summary
ClassChecker()
           
 
Method Summary
 java.util.Map getFields()
          Get collected fields.
 java.util.List getInterfaces()
          Get collected interfaces.
 java.util.List getMethods()
          Get collected methods.
 java.lang.String getSuperClass()
           
 boolean isalreadyManipulated()
          Check if the class was already manipulated.
 void visit(int version, int access, java.lang.String name, java.lang.String signature, java.lang.String superName, java.lang.String[] interfaces)
          Visit the class.
 org.objectweb.asm.FieldVisitor visitField(int access, java.lang.String name, java.lang.String desc, java.lang.String signature, java.lang.Object value)
          Check if the _cm field already exists.
 org.objectweb.asm.MethodVisitor visitMethod(int access, java.lang.String name, java.lang.String desc, java.lang.String signature, java.lang.String[] exceptions)
          Visit a method.
 
Methods inherited from class org.objectweb.asm.commons.EmptyVisitor
visit, visitAnnotation, visitAnnotation, visitAnnotationDefault, visitArray, visitAttribute, visitCode, visitEnd, visitEnum, visitFieldInsn, visitFrame, visitIincInsn, visitInnerClass, visitInsn, visitIntInsn, visitJumpInsn, visitLabel, visitLdcInsn, visitLineNumber, visitLocalVariable, visitLookupSwitchInsn, visitMaxs, visitMethodInsn, visitMultiANewArrayInsn, visitOuterClass, visitParameterAnnotation, visitSource, visitTableSwitchInsn, visitTryCatchBlock, visitTypeInsn, visitVarInsn
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.objectweb.asm.ClassVisitor
visitAnnotation, visitAttribute, visitEnd, visitInnerClass, visitOuterClass, visitSource
 

Constructor Detail

ClassChecker

public ClassChecker()
Method Detail

visitField

public org.objectweb.asm.FieldVisitor visitField(int access,
                                                 java.lang.String name,
                                                 java.lang.String desc,
                                                 java.lang.String signature,
                                                 java.lang.Object value)
Check if the _cm field already exists. Update the field list.

Specified by:
visitField in interface org.objectweb.asm.ClassVisitor
Overrides:
visitField in class org.objectweb.asm.commons.EmptyVisitor
Parameters:
access - : access of the field
name - : name of the field
desc - : description of the field
signature - : signature of the field
value - : value of the field (for static field only)
Returns:
the field visitor
See Also:
ClassVisitor.visitField(int, java.lang.String, java.lang.String, java.lang.String, java.lang.Object)

isalreadyManipulated

public boolean isalreadyManipulated()
Check if the class was already manipulated.

Returns:
true if the class is already manipulated.

visit

public void visit(int version,
                  int access,
                  java.lang.String name,
                  java.lang.String signature,
                  java.lang.String superName,
                  java.lang.String[] interfaces)
Visit the class. Update the implemented interface list.

Specified by:
visit in interface org.objectweb.asm.ClassVisitor
Overrides:
visit in class org.objectweb.asm.commons.EmptyVisitor
Parameters:
version - : version of the class
access - : access of the class
name - : name of the class
signature - : signature of the class
superName - : super class of the class
interfaces - : implemented interfaces.
See Also:
ClassVisitor.visit(int, int, java.lang.String, java.lang.String, java.lang.String, java.lang.String[])

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)
Visit a method. Update the method list (except if it init or clinit.

Specified by:
visitMethod in interface org.objectweb.asm.ClassVisitor
Overrides:
visitMethod in class org.objectweb.asm.commons.EmptyVisitor
Parameters:
access - - the method's access flags (see Opcodes). This parameter also indicates if the method is synthetic and/or deprecated.
name - - the method's name.
desc - - the method's descriptor (see Type).
signature - - the method's signature. May be null if the method parameters, return type and exceptions do not use generic types.
exceptions - - the internal names of the method's exception classes (see getInternalName). May be null.
Returns:
nothing.
See Also:
ClassVisitor.visitMethod(int, java.lang.String, java.lang.String, java.lang.String, java.lang.String[])

getInterfaces

public java.util.List getInterfaces()
Get collected interfaces.

Returns:
the interfaces implemented by the component class.

getFields

public java.util.Map getFields()
Get collected fields.

Returns:
the field map [field_name, type].

getMethods

public java.util.List getMethods()
Get collected methods.

Returns:
the method list of [method, signature].

getSuperClass

public java.lang.String getSuperClass()