Class GroovyAnnotationMetadataBuilder
java.lang.Object
io.micronaut.inject.annotation.AbstractAnnotationMetadataBuilder<org.codehaus.groovy.ast.AnnotatedNode,org.codehaus.groovy.ast.AnnotationNode>
io.micronaut.ast.groovy.annotation.GroovyAnnotationMetadataBuilder
public class GroovyAnnotationMetadataBuilder
extends AbstractAnnotationMetadataBuilder<org.codehaus.groovy.ast.AnnotatedNode,org.codehaus.groovy.ast.AnnotationNode>
Groovy implementation of
AbstractAnnotationMetadataBuilder.- Since:
- 1.0
- Author:
- Graeme Rocher
-
Nested Class Summary
Nested classes/interfaces inherited from class io.micronaut.inject.annotation.AbstractAnnotationMetadataBuilder
AbstractAnnotationMetadataBuilder.CachedAnnotationMetadata -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final org.codehaus.groovy.ast.ClassNodestatic final StringFields inherited from class io.micronaut.inject.annotation.AbstractAnnotationMetadataBuilder
ELEMENT_VALIDATOR -
Constructor Summary
ConstructorsConstructorDescriptionGroovyAnnotationMetadataBuilder(org.codehaus.groovy.control.SourceUnit sourceUnit, org.codehaus.groovy.control.CompilationUnit compilationUnit) GroovyAnnotationMetadataBuilder(org.codehaus.groovy.control.SourceUnit sourceUnit, org.codehaus.groovy.control.CompilationUnit compilationUnit, GroovyNativeElementHelper nativeElementHelper, GroovyVisitorContext visitorContext) -
Method Summary
Modifier and TypeMethodDescriptionprotected voidAdds an error.protected voidaddWarning(@NonNull org.codehaus.groovy.ast.AnnotatedNode originatingElement, @NonNull String warning) Adds a warning.protected List<org.codehaus.groovy.ast.AnnotatedNode>buildHierarchy(org.codehaus.groovy.ast.AnnotatedNode element, boolean inheritTypeAnnotations, boolean declaredOnly) Build the type hierarchy for the given element.protected org.codehaus.groovy.ast.AnnotatedNodegetAnnotationMember(org.codehaus.groovy.ast.AnnotatedNode annotationElement, CharSequence member) Get the annotation member.protected StringgetAnnotationMemberName(org.codehaus.groovy.ast.AnnotatedNode member) Read the name of an annotation member.protected Optional<org.codehaus.groovy.ast.AnnotatedNode>getAnnotationMirror(String annotationName) Return a mirror for the given annotation.protected List<? extends org.codehaus.groovy.ast.AnnotationNode>getAnnotationsForType(org.codehaus.groovy.ast.AnnotatedNode element) Obtain the annotations for the given type.protected StringgetAnnotationTypeName(org.codehaus.groovy.ast.AnnotationNode annotationMirror) Get the given type of the annotation.protected <K extends Annotation>
Optional<AnnotationValue<K>>getAnnotationValues(org.codehaus.groovy.ast.AnnotatedNode originatingElement, org.codehaus.groovy.ast.AnnotatedNode member, Class<K> annotationType) Resolve the annotations values from the given member for the given type.protected StringgetElementName(org.codehaus.groovy.ast.AnnotatedNode element) Get the name for the given element.protected AnnotatedElementValidatorObtains the element validator.protected StringgetOriginatingClassName(@NonNull org.codehaus.groovy.ast.AnnotatedNode originatingElement) protected StringgetRepeatableContainerNameForType(org.codehaus.groovy.ast.AnnotatedNode annotationType) Obtain the name of the repeatable annotation if the annotation is one.protected StringgetRepeatableName(org.codehaus.groovy.ast.AnnotationNode annotationMirror) Obtain the name of the repeatable annotation if the annotation is one.protected @NonNull RetentionPolicygetRetentionPolicy(@NonNull org.codehaus.groovy.ast.AnnotatedNode annotation) Gets the retention policy for the given annotation.protected org.codehaus.groovy.ast.AnnotatedNodegetTypeForAnnotation(org.codehaus.groovy.ast.AnnotationNode annotationMirror) Get the type of the given annotation.protected VisitorContextReturns the visitor context for this implementation.protected booleanhasAnnotation(org.codehaus.groovy.ast.AnnotatedNode element, Class<? extends Annotation> annotation) Checks whether an annotation is present.protected booleanhasAnnotation(org.codehaus.groovy.ast.AnnotatedNode element, String annotation) Checks whether an annotation is present.protected booleanhasAnnotations(org.codehaus.groovy.ast.AnnotatedNode element) Checks whether any annotations are present on the given element.protected booleanisExcludedAnnotation(@NonNull org.codehaus.groovy.ast.AnnotatedNode element, @NonNull String annotationName) Is the given annotation excluded for the specified element.protected booleanisValidationRequired(org.codehaus.groovy.ast.AnnotatedNode member) Return whether the given member requires validation.lookupOrBuildForParameter(org.codehaus.groovy.ast.AnnotatedNode owningType, org.codehaus.groovy.ast.AnnotatedNode methodElement, org.codehaus.groovy.ast.AnnotatedNode parameterElement) Build the metadata for the given element.protected Map<? extends org.codehaus.groovy.ast.AnnotatedNode,?> readAnnotationDefaultValues(String annotationName, org.codehaus.groovy.ast.AnnotatedNode annotationType) Read the raw default annotation values from the given annotation.protected voidreadAnnotationRawValues(org.codehaus.groovy.ast.AnnotatedNode originatingElement, String annotationName, org.codehaus.groovy.ast.AnnotatedNode member, String memberName, Object annotationValue, Map<CharSequence, Object> annotationValues) Read the given member and value, applying conversions if necessary, and place the data in the given map.protected Map<? extends org.codehaus.groovy.ast.AnnotatedNode,?> readAnnotationRawValues(org.codehaus.groovy.ast.AnnotationNode annotationMirror) Read the raw annotation values from the given annotation.protected ObjectreadAnnotationValue(org.codehaus.groovy.ast.AnnotatedNode originatingElement, org.codehaus.groovy.ast.AnnotatedNode member, String annotationName, String memberName, Object annotationValue) Read the given member and value, applying conversions if necessary, and place the data in the given map.Methods inherited from class io.micronaut.inject.annotation.AbstractAnnotationMetadataBuilder
annotate, buildDeclared, buildEvaluatedExpressionReference, clearCaches, clearMutated, clearMutated, copyToRuntime, findRepeatableContainerNameForType, getAnnotationMappers, getAnnotationTransformers, getCachedAnnotationDefaults, getMappedAnnotationNames, getMappedAnnotationPackages, getRetentionPolicy, isEvaluatedExpression, isRepeatableAnnotationContainer, lookupOrBuild, lookupOrBuildForField, lookupOrBuildForMethod, lookupOrBuildForType, postProcess, readAnnotationRawValues, readNestedAnnotationValue, readNestedAnnotationValue, removeAnnotation, removeAnnotationIf, removeStereotype, validateAnnotationValue
-
Field Details
-
ANN_OVERRIDE
public static final org.codehaus.groovy.ast.ClassNode ANN_OVERRIDE -
VALIDATOR_KEY
- See Also:
-
-
Constructor Details
-
GroovyAnnotationMetadataBuilder
public GroovyAnnotationMetadataBuilder(org.codehaus.groovy.control.SourceUnit sourceUnit, org.codehaus.groovy.control.CompilationUnit compilationUnit) -
GroovyAnnotationMetadataBuilder
public GroovyAnnotationMetadataBuilder(org.codehaus.groovy.control.SourceUnit sourceUnit, org.codehaus.groovy.control.CompilationUnit compilationUnit, GroovyNativeElementHelper nativeElementHelper, GroovyVisitorContext visitorContext)
-
-
Method Details
-
lookupOrBuildForParameter
public AbstractAnnotationMetadataBuilder.CachedAnnotationMetadata lookupOrBuildForParameter(org.codehaus.groovy.ast.AnnotatedNode owningType, org.codehaus.groovy.ast.AnnotatedNode methodElement, org.codehaus.groovy.ast.AnnotatedNode parameterElement) Description copied from class:AbstractAnnotationMetadataBuilderBuild the metadata for the given element. If the element is a method the class metadata will be included.- Overrides:
lookupOrBuildForParameterin classAbstractAnnotationMetadataBuilder<org.codehaus.groovy.ast.AnnotatedNode,org.codehaus.groovy.ast.AnnotationNode> - Parameters:
owningType- The owning typemethodElement- The method elementparameterElement- The parameter element- Returns:
- The
AnnotationMetadata
-
isValidationRequired
protected boolean isValidationRequired(org.codehaus.groovy.ast.AnnotatedNode member) Description copied from class:AbstractAnnotationMetadataBuilderReturn whether the given member requires validation.- Specified by:
isValidationRequiredin classAbstractAnnotationMetadataBuilder<org.codehaus.groovy.ast.AnnotatedNode,org.codehaus.groovy.ast.AnnotationNode> - Parameters:
member- The member- Returns:
- True if it is
-
isExcludedAnnotation
protected boolean isExcludedAnnotation(@NonNull @NonNull org.codehaus.groovy.ast.AnnotatedNode element, @NonNull @NonNull String annotationName) Description copied from class:AbstractAnnotationMetadataBuilderIs the given annotation excluded for the specified element.- Overrides:
isExcludedAnnotationin classAbstractAnnotationMetadataBuilder<org.codehaus.groovy.ast.AnnotatedNode,org.codehaus.groovy.ast.AnnotationNode> - Parameters:
element- The elementannotationName- The annotation name- Returns:
- True if it is excluded
-
getAnnotationMember
protected org.codehaus.groovy.ast.AnnotatedNode getAnnotationMember(org.codehaus.groovy.ast.AnnotatedNode annotationElement, CharSequence member) Description copied from class:AbstractAnnotationMetadataBuilderGet the annotation member.- Specified by:
getAnnotationMemberin classAbstractAnnotationMetadataBuilder<org.codehaus.groovy.ast.AnnotatedNode,org.codehaus.groovy.ast.AnnotationNode> - Parameters:
annotationElement- The annotation elementmember- The member- Returns:
- The annotation member element
-
getOriginatingClassName
protected String getOriginatingClassName(@NonNull @NonNull org.codehaus.groovy.ast.AnnotatedNode originatingElement) - Specified by:
getOriginatingClassNamein classAbstractAnnotationMetadataBuilder<org.codehaus.groovy.ast.AnnotatedNode,org.codehaus.groovy.ast.AnnotationNode>
-
getRetentionPolicy
@NonNull protected @NonNull RetentionPolicy getRetentionPolicy(@NonNull @NonNull org.codehaus.groovy.ast.AnnotatedNode annotation) Description copied from class:AbstractAnnotationMetadataBuilderGets the retention policy for the given annotation.- Specified by:
getRetentionPolicyin classAbstractAnnotationMetadataBuilder<org.codehaus.groovy.ast.AnnotatedNode,org.codehaus.groovy.ast.AnnotationNode> - Parameters:
annotation- The annotation- Returns:
- The retention policy
-
getElementValidator
Description copied from class:AbstractAnnotationMetadataBuilderObtains the element validator.- Overrides:
getElementValidatorin classAbstractAnnotationMetadataBuilder<org.codehaus.groovy.ast.AnnotatedNode,org.codehaus.groovy.ast.AnnotationNode> - Returns:
- The validator.
-
addError
protected void addError(@NonNull @NonNull org.codehaus.groovy.ast.AnnotatedNode originatingElement, @NonNull @NonNull String error) Description copied from class:AbstractAnnotationMetadataBuilderAdds an error.- Specified by:
addErrorin classAbstractAnnotationMetadataBuilder<org.codehaus.groovy.ast.AnnotatedNode,org.codehaus.groovy.ast.AnnotationNode> - Parameters:
originatingElement- The originating elementerror- The error
-
addWarning
protected void addWarning(@NonNull @NonNull org.codehaus.groovy.ast.AnnotatedNode originatingElement, @NonNull @NonNull String warning) Description copied from class:AbstractAnnotationMetadataBuilderAdds a warning.- Specified by:
addWarningin classAbstractAnnotationMetadataBuilder<org.codehaus.groovy.ast.AnnotatedNode,org.codehaus.groovy.ast.AnnotationNode> - Parameters:
originatingElement- The originating elementwarning- The warning
-
hasAnnotation
protected boolean hasAnnotation(org.codehaus.groovy.ast.AnnotatedNode element, Class<? extends Annotation> annotation) Description copied from class:AbstractAnnotationMetadataBuilderChecks whether an annotation is present.- Specified by:
hasAnnotationin classAbstractAnnotationMetadataBuilder<org.codehaus.groovy.ast.AnnotatedNode,org.codehaus.groovy.ast.AnnotationNode> - Parameters:
element- The elementannotation- The annotation type- Returns:
- True if the annotation is present
-
hasAnnotation
Description copied from class:AbstractAnnotationMetadataBuilderChecks whether an annotation is present.- Specified by:
hasAnnotationin classAbstractAnnotationMetadataBuilder<org.codehaus.groovy.ast.AnnotatedNode,org.codehaus.groovy.ast.AnnotationNode> - Parameters:
element- The elementannotation- The annotation type name- Returns:
- True if the annotation is present
-
hasAnnotations
protected boolean hasAnnotations(org.codehaus.groovy.ast.AnnotatedNode element) Description copied from class:AbstractAnnotationMetadataBuilderChecks whether any annotations are present on the given element.- Specified by:
hasAnnotationsin classAbstractAnnotationMetadataBuilder<org.codehaus.groovy.ast.AnnotatedNode,org.codehaus.groovy.ast.AnnotationNode> - Parameters:
element- The element- Returns:
- True if the annotation is present
-
getVisitorContext
Description copied from class:AbstractAnnotationMetadataBuilderReturns the visitor context for this implementation.- Specified by:
getVisitorContextin classAbstractAnnotationMetadataBuilder<org.codehaus.groovy.ast.AnnotatedNode,org.codehaus.groovy.ast.AnnotationNode> - Returns:
- The visitor context
-
getTypeForAnnotation
protected org.codehaus.groovy.ast.AnnotatedNode getTypeForAnnotation(org.codehaus.groovy.ast.AnnotationNode annotationMirror) Description copied from class:AbstractAnnotationMetadataBuilderGet the type of the given annotation.- Specified by:
getTypeForAnnotationin classAbstractAnnotationMetadataBuilder<org.codehaus.groovy.ast.AnnotatedNode,org.codehaus.groovy.ast.AnnotationNode> - Parameters:
annotationMirror- The annotation- Returns:
- The type
-
getRepeatableName
Description copied from class:AbstractAnnotationMetadataBuilderObtain the name of the repeatable annotation if the annotation is one.- Specified by:
getRepeatableNamein classAbstractAnnotationMetadataBuilder<org.codehaus.groovy.ast.AnnotatedNode,org.codehaus.groovy.ast.AnnotationNode> - Parameters:
annotationMirror- The annotation mirror- Returns:
- Return the name or null
-
getRepeatableContainerNameForType
protected String getRepeatableContainerNameForType(org.codehaus.groovy.ast.AnnotatedNode annotationType) Description copied from class:AbstractAnnotationMetadataBuilderObtain the name of the repeatable annotation if the annotation is one.- Specified by:
getRepeatableContainerNameForTypein classAbstractAnnotationMetadataBuilder<org.codehaus.groovy.ast.AnnotatedNode,org.codehaus.groovy.ast.AnnotationNode> - Parameters:
annotationType- The annotation mirror- Returns:
- Return the name or null
-
getAnnotationMirror
protected Optional<org.codehaus.groovy.ast.AnnotatedNode> getAnnotationMirror(String annotationName) Description copied from class:AbstractAnnotationMetadataBuilderReturn a mirror for the given annotation.- Specified by:
getAnnotationMirrorin classAbstractAnnotationMetadataBuilder<org.codehaus.groovy.ast.AnnotatedNode,org.codehaus.groovy.ast.AnnotationNode> - Parameters:
annotationName- The annotation name- Returns:
- An optional mirror
-
getAnnotationTypeName
Description copied from class:AbstractAnnotationMetadataBuilderGet the given type of the annotation.- Specified by:
getAnnotationTypeNamein classAbstractAnnotationMetadataBuilder<org.codehaus.groovy.ast.AnnotatedNode,org.codehaus.groovy.ast.AnnotationNode> - Parameters:
annotationMirror- The annotation- Returns:
- The type
-
getElementName
Description copied from class:AbstractAnnotationMetadataBuilderGet the name for the given element.- Specified by:
getElementNamein classAbstractAnnotationMetadataBuilder<org.codehaus.groovy.ast.AnnotatedNode,org.codehaus.groovy.ast.AnnotationNode> - Parameters:
element- The element- Returns:
- The name
-
getAnnotationsForType
protected List<? extends org.codehaus.groovy.ast.AnnotationNode> getAnnotationsForType(org.codehaus.groovy.ast.AnnotatedNode element) Description copied from class:AbstractAnnotationMetadataBuilderObtain the annotations for the given type. This method is also responsible for unwrapping repeatable annotations.For example,
@Parent(value = {@Child, @Child})should result in the two child annotations being returned from this method instead of the parent annotation.- Specified by:
getAnnotationsForTypein classAbstractAnnotationMetadataBuilder<org.codehaus.groovy.ast.AnnotatedNode,org.codehaus.groovy.ast.AnnotationNode> - Parameters:
element- The type element- Returns:
- The annotations
-
buildHierarchy
protected List<org.codehaus.groovy.ast.AnnotatedNode> buildHierarchy(org.codehaus.groovy.ast.AnnotatedNode element, boolean inheritTypeAnnotations, boolean declaredOnly) Description copied from class:AbstractAnnotationMetadataBuilderBuild the type hierarchy for the given element.- Specified by:
buildHierarchyin classAbstractAnnotationMetadataBuilder<org.codehaus.groovy.ast.AnnotatedNode,org.codehaus.groovy.ast.AnnotationNode> - Parameters:
element- The elementinheritTypeAnnotations- Whether to inherit type annotationsdeclaredOnly- Whether to only include declared annotations- Returns:
- The type hierarchy
-
readAnnotationRawValues
protected void readAnnotationRawValues(org.codehaus.groovy.ast.AnnotatedNode originatingElement, String annotationName, org.codehaus.groovy.ast.AnnotatedNode member, String memberName, Object annotationValue, Map<CharSequence, Object> annotationValues) Description copied from class:AbstractAnnotationMetadataBuilderRead the given member and value, applying conversions if necessary, and place the data in the given map.- Specified by:
readAnnotationRawValuesin classAbstractAnnotationMetadataBuilder<org.codehaus.groovy.ast.AnnotatedNode,org.codehaus.groovy.ast.AnnotationNode> - Parameters:
originatingElement- The originating elementannotationName- The annotation namemember- The member being read frommemberName- The memberannotationValue- The valueannotationValues- The values to populate
-
readAnnotationDefaultValues
protected Map<? extends org.codehaus.groovy.ast.AnnotatedNode,?> readAnnotationDefaultValues(String annotationName, org.codehaus.groovy.ast.AnnotatedNode annotationType) Description copied from class:AbstractAnnotationMetadataBuilderRead the raw default annotation values from the given annotation.- Specified by:
readAnnotationDefaultValuesin classAbstractAnnotationMetadataBuilder<org.codehaus.groovy.ast.AnnotatedNode,org.codehaus.groovy.ast.AnnotationNode> - Parameters:
annotationName- annotation nameannotationType- the type- Returns:
- The values
-
readAnnotationValue
protected Object readAnnotationValue(org.codehaus.groovy.ast.AnnotatedNode originatingElement, org.codehaus.groovy.ast.AnnotatedNode member, String annotationName, String memberName, Object annotationValue) Description copied from class:AbstractAnnotationMetadataBuilderRead the given member and value, applying conversions if necessary, and place the data in the given map.- Specified by:
readAnnotationValuein classAbstractAnnotationMetadataBuilder<org.codehaus.groovy.ast.AnnotatedNode,org.codehaus.groovy.ast.AnnotationNode> - Parameters:
originatingElement- The originating elementmember- The memberannotationName- The annotation namememberName- The member nameannotationValue- The value- Returns:
- The object
-
readAnnotationRawValues
protected Map<? extends org.codehaus.groovy.ast.AnnotatedNode,?> readAnnotationRawValues(org.codehaus.groovy.ast.AnnotationNode annotationMirror) Description copied from class:AbstractAnnotationMetadataBuilderRead the raw annotation values from the given annotation.- Specified by:
readAnnotationRawValuesin classAbstractAnnotationMetadataBuilder<org.codehaus.groovy.ast.AnnotatedNode,org.codehaus.groovy.ast.AnnotationNode> - Parameters:
annotationMirror- The annotation- Returns:
- The values
-
getAnnotationValues
protected <K extends Annotation> Optional<AnnotationValue<K>> getAnnotationValues(org.codehaus.groovy.ast.AnnotatedNode originatingElement, org.codehaus.groovy.ast.AnnotatedNode member, Class<K> annotationType) Description copied from class:AbstractAnnotationMetadataBuilderResolve the annotations values from the given member for the given type.- Specified by:
getAnnotationValuesin classAbstractAnnotationMetadataBuilder<org.codehaus.groovy.ast.AnnotatedNode,org.codehaus.groovy.ast.AnnotationNode> - Type Parameters:
K- The annotation type- Parameters:
originatingElement- The originating elementmember- The memberannotationType- The type- Returns:
- The values
-
getAnnotationMemberName
Description copied from class:AbstractAnnotationMetadataBuilderRead the name of an annotation member.- Specified by:
getAnnotationMemberNamein classAbstractAnnotationMetadataBuilder<org.codehaus.groovy.ast.AnnotatedNode,org.codehaus.groovy.ast.AnnotationNode> - Parameters:
member- The member- Returns:
- The name
-