org.codehaus.groovy.classgen
Class AnnotationVisitor

java.lang.Object
  extended by org.codehaus.groovy.classgen.AnnotationVisitor

public class AnnotationVisitor
extends java.lang.Object

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
private  AnnotationNode annotation
           
private  java.lang.Class annotationClass
           
private  java.lang.Class annotationRootClass
           
private  java.util.Map defaultAttrTypes
           
private static java.lang.Class[] EMPTY_ARG_TYPES
           
private static java.lang.Object[] EMPTY_ARGS
           
private  ErrorCollector errorCollector
           
private  java.util.Map requiredAttrTypes
           
private  SourceUnit source
           
 
Constructor Summary
AnnotationVisitor(SourceUnit source, ErrorCollector errorCollector)
           
 
Method Summary
protected  void addError(java.lang.String msg)
           
protected  void addError(java.lang.String msg, ASTNode expr)
           
private  void extractAnnotationMeta(java.lang.Class annotationClass)
           
private  java.lang.Class getAttributeType(java.lang.String attr)
           
private  void initializeAnnotationMeta(java.lang.Class annotationClass)
           
private  void initializeAttributeTypes(java.lang.Class annotationClass)
           
private  void initializeRetention(java.lang.Class annotationClass, java.lang.Class retentionClass, java.lang.Object retentionAnnotation)
           
private  void initializeTarget(java.lang.Class annotationClass, java.lang.Class targetClass, java.lang.Object targetAnnotation)
           
private  java.lang.Object invoke(java.lang.Class clazz, java.lang.String methodName, java.lang.Class[] argTypes, java.lang.Object target, java.lang.Object[] args)
           
private  boolean isAnnotation(java.lang.Class clazz)
           
private  boolean isEnum(java.lang.Class clazz)
           
private  boolean isValidAnnotationClass(AnnotationNode node)
           
private  java.lang.Class loadAnnotationRootClass()
           
 AnnotationNode visit(AnnotationNode node)
           
protected  void visitAnnotationExpression(java.lang.String attrName, AnnotationConstantExpression expression, java.lang.Class attrType)
           
protected  void visitConstantExpression(java.lang.String attrName, ConstantExpression constExpr, ClassNode attrType)
           
protected  void visitEnumExpression(java.lang.String attrName, PropertyExpression propExpr, ClassNode attrType)
           
protected  void visitExpression(java.lang.String attrName, Expression attrAst, java.lang.Class attrType)
           
protected  void visitListExpression(java.lang.String attrName, ListExpression listExpr, java.lang.Class elementType)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

EMPTY_ARG_TYPES

private static final java.lang.Class[] EMPTY_ARG_TYPES

EMPTY_ARGS

private static final java.lang.Object[] EMPTY_ARGS

annotationRootClass

private final java.lang.Class annotationRootClass

source

private SourceUnit source

errorCollector

private ErrorCollector errorCollector

annotation

private AnnotationNode annotation

annotationClass

private java.lang.Class annotationClass

requiredAttrTypes

private java.util.Map requiredAttrTypes

defaultAttrTypes

private java.util.Map defaultAttrTypes
Constructor Detail

AnnotationVisitor

public AnnotationVisitor(SourceUnit source,
                         ErrorCollector errorCollector)
Method Detail

visit

public AnnotationNode visit(AnnotationNode node)

isValidAnnotationClass

private boolean isValidAnnotationClass(AnnotationNode node)
Parameters:
node -
Returns:

visitExpression

protected void visitExpression(java.lang.String attrName,
                               Expression attrAst,
                               java.lang.Class attrType)

visitAnnotationExpression

protected void visitAnnotationExpression(java.lang.String attrName,
                                         AnnotationConstantExpression expression,
                                         java.lang.Class attrType)
Parameters:
attrName -
expression -
attrType -

visitListExpression

protected void visitListExpression(java.lang.String attrName,
                                   ListExpression listExpr,
                                   java.lang.Class elementType)

visitConstantExpression

protected void visitConstantExpression(java.lang.String attrName,
                                       ConstantExpression constExpr,
                                       ClassNode attrType)

visitEnumExpression

protected void visitEnumExpression(java.lang.String attrName,
                                   PropertyExpression propExpr,
                                   ClassNode attrType)

isAnnotation

private boolean isAnnotation(java.lang.Class clazz)

isEnum

private boolean isEnum(java.lang.Class clazz)

extractAnnotationMeta

private void extractAnnotationMeta(java.lang.Class annotationClass)

initializeAnnotationMeta

private void initializeAnnotationMeta(java.lang.Class annotationClass)

initializeAttributeTypes

private void initializeAttributeTypes(java.lang.Class annotationClass)

initializeRetention

private void initializeRetention(java.lang.Class annotationClass,
                                 java.lang.Class retentionClass,
                                 java.lang.Object retentionAnnotation)

initializeTarget

private void initializeTarget(java.lang.Class annotationClass,
                              java.lang.Class targetClass,
                              java.lang.Object targetAnnotation)

addError

protected void addError(java.lang.String msg)

addError

protected void addError(java.lang.String msg,
                        ASTNode expr)

getAttributeType

private java.lang.Class getAttributeType(java.lang.String attr)

invoke

private java.lang.Object invoke(java.lang.Class clazz,
                                java.lang.String methodName,
                                java.lang.Class[] argTypes,
                                java.lang.Object target,
                                java.lang.Object[] args)

loadAnnotationRootClass

private java.lang.Class loadAnnotationRootClass()


Copyright © ${year} The Codehaus. All Rights Reserved.