## org.codehaus.groovy.classgen
Class AnnotationVisitor

An Annotation visitor responsible with: - reading annotation metadata (

:
  Retention, @Target, attribute types)

- verify that an `AnnotationNode` conforms to annotation meta - enhancing an `AnnotationNode` AST to reflect real annotation meta

author:
  Alex Popescu

Field Summary
`def` | `EMPTY_ARGS`
`def` | `EMPTY_ARG_TYPES`
`AnnotationNode` | `annotation`
`Class` | `annotationClass`
`Class` | `annotationRootClass`
`Map` | `defaultAttrTypes`
`ErrorCollector` | `errorCollector`
`Map` | `requiredAttrTypes`
`SourceUnit` | `source`

Constructor Summary
`AnnotationVisitor(SourceUnit source, ErrorCollector errorCollector)`

Method Summary
`void` | `addError(String msg)`
`void` | `addError(String msg, ASTNode expr)`
`void` | `extractAnnotationMeta(Class annotationClass)`
`Class` | `getAttributeType(String attr)`
`void` | `initializeAnnotationMeta(Class annotationClass)`
`void` | `initializeAttributeTypes(Class annotationClass)`
`void` | `initializeRetention(Class annotationClass, Class retentionClass, Object retentionAnnotation)`
`void` | `initializeTarget(Class annotationClass, Class targetClass, Object targetAnnotation)`
`Object` | `invoke(Class clazz, String methodName, def argTypes, Object target, def args)`
`boolean` | `isAnnotation(Class clazz)`
`boolean` | `isEnum(Class clazz)`
`boolean` | `isValidAnnotationClass(AnnotationNode node)`
`Class` | `loadAnnotationRootClass()`
`AnnotationNode` | `visit(AnnotationNode node)`
`void` | `visitAnnotationExpression(String attrName, AnnotationConstantExpression expression, Class attrType)`
`void` | `visitConstantExpression(String attrName, ConstantExpression constExpr, ClassNode attrType)`
`void` | `visitEnumExpression(String attrName, PropertyExpression propExpr, ClassNode attrType)`
`void` | `visitExpression(String attrName, Expression attrAst, Class attrType)`
`void` | `visitListExpression(String attrName, ListExpression listExpr, Class elementType)`

Constructor Detail

### AnnotationVisitor

    public AnnotationVisitor(SourceUnit source, ErrorCollector errorCollector)

Method Detail

### addError

    void addError(String msg)

### addError

    void addError(String msg, ASTNode expr)

### extractAnnotationMeta

    void extractAnnotationMeta(Class annotationClass)

### getAttributeType

    Class getAttributeType(String attr)

### initializeAnnotationMeta

    void initializeAnnotationMeta(Class annotationClass)

### initializeAttributeTypes

    void initializeAttributeTypes(Class annotationClass)

### initializeRetention

    void initializeRetention(Class annotationClass, Class retentionClass, Object retentionAnnotation)

### initializeTarget

    void initializeTarget(Class annotationClass, Class targetClass, Object targetAnnotation)

### invoke

    Object invoke(Class clazz, String methodName, def argTypes, Object target, def args)

### isAnnotation

    boolean isAnnotation(Class clazz)

### isEnum

    boolean isEnum(Class clazz)

### isValidAnnotationClass

    boolean isValidAnnotationClass(AnnotationNode node)

  param:
    node
  return:

### loadAnnotationRootClass

    Class loadAnnotationRootClass()

### visit

    public AnnotationNode visit(AnnotationNode node)

### visitAnnotationExpression

    void visitAnnotationExpression(String attrName, AnnotationConstantExpression expression, Class attrType)

  param:
    attrName
  param:
    expression
  param:
    attrType

### visitConstantExpression

    void visitConstantExpression(String attrName, ConstantExpression constExpr, ClassNode attrType)

### visitEnumExpression

    void visitEnumExpression(String attrName, PropertyExpression propExpr, ClassNode attrType)

### visitExpression

    void visitExpression(String attrName, Expression attrAst, Class attrType)

### visitListExpression

    void visitListExpression(String attrName, ListExpression listExpr, Class elementType)