org.codehaus.groovy.classgen
Class AnnotationVisitor
java.lang.Object
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
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 |
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
AnnotationVisitor
public AnnotationVisitor(SourceUnit source,
ErrorCollector errorCollector)
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.