org.apache.felix.ipojo.manipulation.annotations
Class MetadataCollector

java.lang.Object
  extended by org.objectweb.asm.commons.EmptyVisitor
      extended by org.apache.felix.ipojo.manipulation.annotations.MetadataCollector
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 MetadataCollector
extends org.objectweb.asm.commons.EmptyVisitor
implements org.objectweb.asm.Opcodes

Collect metadata from classes by parsing annotation. This class collects type (i.e.) annotations and create method & field collectors.

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, 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
MetadataCollector()
           
 
Method Summary
 Element getElem()
           
protected  Map getElements()
           
protected  Map getIds()
           
 boolean isAnnotated()
           
 void visit(int version, int access, String name, String signature, String superName, String[] interfaces)
          Start visiting a class.
 org.objectweb.asm.AnnotationVisitor visitAnnotation(String desc, boolean visible)
          Visit class annotations.
 void visitEnd()
          End of the visit : compute final elements.
 org.objectweb.asm.FieldVisitor visitField(int access, String name, String desc, String signature, Object value)
          Visit a field.
 org.objectweb.asm.MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions)
          Visit a method.
 
Methods inherited from class org.objectweb.asm.commons.EmptyVisitor
visit, visitAnnotation, visitAnnotationDefault, visitArray, visitAttribute, visitCode, 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
 

Constructor Detail

MetadataCollector

public MetadataCollector()
Method Detail

getElem

public Element getElem()

isAnnotated

public boolean isAnnotated()

visit

public void visit(int version,
                  int access,
                  String name,
                  String signature,
                  String superName,
                  String[] interfaces)
Start visiting a class. Initialize the getter/setter generator, add the _cm field, add the pojo interface.

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

visitAnnotation

public org.objectweb.asm.AnnotationVisitor visitAnnotation(String desc,
                                                           boolean visible)
Visit class annotations. This method detects @component and @provides annotations.

Specified by:
visitAnnotation in interface org.objectweb.asm.ClassVisitor
Specified by:
visitAnnotation in interface org.objectweb.asm.FieldVisitor
Specified by:
visitAnnotation in interface org.objectweb.asm.MethodVisitor
Overrides:
visitAnnotation in class org.objectweb.asm.commons.EmptyVisitor
Parameters:
desc - : annotation descriptor.
visible - : is the annotation visible at runtime.
Returns:
the annotation visitor.
See Also:
ClassAdapter.visitAnnotation(java.lang.String, boolean)

visitField

public org.objectweb.asm.FieldVisitor visitField(int access,
                                                 String name,
                                                 String desc,
                                                 String signature,
                                                 Object value)
Visit a field. Call the field collector visitor.

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

visitMethod

public org.objectweb.asm.MethodVisitor visitMethod(int access,
                                                   String name,
                                                   String desc,
                                                   String signature,
                                                   String[] exceptions)
Visit a method. Call the method collector visitor.

Specified by:
visitMethod in interface org.objectweb.asm.ClassVisitor
Overrides:
visitMethod in class org.objectweb.asm.commons.EmptyVisitor
Parameters:
access - : method access
name - : method name
desc - : method descriptor
signature - : method signature
exceptions - : method exceptions
Returns:
the Method Visitor.
See Also:
ClassAdapter.visitMethod(int, java.lang.String, java.lang.String, java.lang.String, java.lang.String[])

visitEnd

public void visitEnd()
End of the visit : compute final elements.

Specified by:
visitEnd in interface org.objectweb.asm.AnnotationVisitor
Specified by:
visitEnd in interface org.objectweb.asm.ClassVisitor
Specified by:
visitEnd in interface org.objectweb.asm.FieldVisitor
Specified by:
visitEnd in interface org.objectweb.asm.MethodVisitor
Overrides:
visitEnd in class org.objectweb.asm.commons.EmptyVisitor
See Also:
EmptyVisitor.visitEnd()

getIds

protected Map getIds()

getElements

protected Map getElements()


Copyright © 2006-2011 Apache Software Foundation. All Rights Reserved.