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
 String getClassName()
           
 Element getComponentTypeDeclaration()
           
protected  Map getElements()
           
protected  DocumentBuilder getFreshDocumentBuilder()
          Creates a 'fresh' document builder.
protected  Map getIds()
           
 Element getInstanceDeclaration()
           
 boolean isComponentType()
           
 boolean isIgnoredBecauseOfMissingComponent()
           
 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

getComponentTypeDeclaration

public Element getComponentTypeDeclaration()

getInstanceDeclaration

public Element getInstanceDeclaration()

isComponentType

public boolean isComponentType()

isIgnoredBecauseOfMissingComponent

public boolean isIgnoredBecauseOfMissingComponent()

getClassName

public String getClassName()

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()

getFreshDocumentBuilder

protected DocumentBuilder getFreshDocumentBuilder()
Creates a 'fresh' document builder.

Returns:
a new document builder is not already created, else reset the created one, and return it.


Copyright © 2011 Apache Software Foundation. All Rights Reserved.