Class AnnotationFileParser
AnnotationFileParser.AnnotationFileAnnotations
passed as an argument.
The first main entry point is parseStubFile(String, InputStream, AnnotatedTypeFactory, ProcessingEnvironment, AnnotationFileAnnotations, AnnotationFileUtil.AnnotationFileType)
, which
side-effects its last argument. It operates in two steps. First, it calls the Annotation File
Parser to parse an annotation file. Then, it walks the AST to create/collect types and
declaration annotations.
The second main entry point is parseAjavaFile(String, InputStream, CompilationUnitTree, AnnotatedTypeFactory, ProcessingEnvironment, AnnotationFileAnnotations)
.
This behaves the same as parseStubFile(String, InputStream, AnnotatedTypeFactory, ProcessingEnvironment, AnnotationFileAnnotations, AnnotationFileUtil.AnnotationFileType)
, but takes an ajava file instead.
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
The result of calling AnnotationFileParser.parse: the annotated types and declaration annotations from the file.static class
An exception indicating a problem while parsing an annotation file.static class
Information about a record component: its type, and whether there was an accessor in the stubs for that component.static class
Information about a record from a stub file. -
Method Summary
Modifier and TypeMethodDescriptionstatic Map<String,
TypeElement> annosInPackage
(PackageElement packageElement) All annotations defined in the package (but not those nested within classes in the package).static Map<String,
TypeElement> annosInType
(TypeElement typeElement) All annotations declared (directly) within a class.static Map<String,
TypeElement> createNameToAnnotationMap
(List<TypeElement> typeElements) All annotations declared within any of the given elements.static void
parseAjavaFile
(String filename, InputStream inputStream, CompilationUnitTree root, AnnotatedTypeFactory atypeFactory, ProcessingEnvironment processingEnv, AnnotationFileParser.AnnotationFileAnnotations ajavaAnnos) The main entry point when parsing an ajava file.static void
parseJdkFileAsStub
(String filename, InputStream inputStream, AnnotatedTypeFactory atypeFactory, ProcessingEnvironment processingEnv, AnnotationFileParser.AnnotationFileAnnotations stubAnnos) Parse a stub file that is a part of the annotated JDK and side-effects thestubAnnos
argument.static void
parseStubFile
(String filename, InputStream inputStream, AnnotatedTypeFactory atypeFactory, ProcessingEnvironment processingEnv, AnnotationFileParser.AnnotationFileAnnotations annotationFileAnnos, AnnotationFileUtil.AnnotationFileType fileType) The main entry point.static <K,
V> void Just like Map.putAll, but modifies existing values usingputIfAbsent(Map, Object, Object)
.static <K,
V> void putIfAbsent
(Map<K, V> m, K key, V value) Just like Map.put, but does not override any existing value in the map.
-
Method Details
-
annosInPackage
All annotations defined in the package (but not those nested within classes in the package). Keys are both fully-qualified and simple names.- Parameters:
packageElement
- a package- Returns:
- a map from annotation name to TypeElement
-
annosInType
All annotations declared (directly) within a class. Keys are both fully-qualified and simple names.- Parameters:
typeElement
- a type- Returns:
- a map from annotation name to TypeElement
-
createNameToAnnotationMap
All annotations declared within any of the given elements.- Parameters:
typeElements
- the elements whose annotations to retrieve- Returns:
- a map from annotation names (both fully-qualified and simple names) to TypeElement
-
parseStubFile
public static void parseStubFile(String filename, InputStream inputStream, AnnotatedTypeFactory atypeFactory, ProcessingEnvironment processingEnv, AnnotationFileParser.AnnotationFileAnnotations annotationFileAnnos, AnnotationFileUtil.AnnotationFileType fileType) The main entry point. Parse a stub file and side-effects theannotationFileAnnos
argument.- Parameters:
filename
- name of stub file, used only for diagnostic messagesinputStream
- of stub file to parseatypeFactory
- AnnotatedTypeFactory to useprocessingEnv
- ProcessingEnvironment to useannotationFileAnnos
- annotations from the annotation file; side-effected by this methodfileType
- the annotation file type and source
-
parseAjavaFile
public static void parseAjavaFile(String filename, InputStream inputStream, CompilationUnitTree root, AnnotatedTypeFactory atypeFactory, ProcessingEnvironment processingEnv, AnnotationFileParser.AnnotationFileAnnotations ajavaAnnos) The main entry point when parsing an ajava file. Parses an ajava file and side-effects the last two arguments.- Parameters:
filename
- name of ajava file, used only for diagnostic messagesinputStream
- of ajava file to parseroot
- javac tree for the file to be parsedatypeFactory
- AnnotatedTypeFactory to useprocessingEnv
- ProcessingEnvironment to useajavaAnnos
- annotations from the ajava file; side-effected by this method
-
parseJdkFileAsStub
public static void parseJdkFileAsStub(String filename, InputStream inputStream, AnnotatedTypeFactory atypeFactory, ProcessingEnvironment processingEnv, AnnotationFileParser.AnnotationFileAnnotations stubAnnos) Parse a stub file that is a part of the annotated JDK and side-effects thestubAnnos
argument.- Parameters:
filename
- name of stub file, used only for diagnostic messagesinputStream
- of stub file to parseatypeFactory
- AnnotatedTypeFactory to useprocessingEnv
- ProcessingEnvironment to usestubAnnos
- annotations from the stub file; side-effected by this method
-
putIfAbsent
Just like Map.put, but does not override any existing value in the map.- Type Parameters:
K
- the key typeV
- the value type- Parameters:
m
- a mapkey
- a keyvalue
- the value to associate with the key, if the key isn't already in the map
-
putAllNew
Just like Map.putAll, but modifies existing values usingputIfAbsent(Map, Object, Object)
.- Type Parameters:
K
- the key type for the mapsV
- the value type for the maps- Parameters:
m
- the destination mapm2
- the source map
-