Package org.atteo.classindex.processor
Class ClassIndexProcessor
- java.lang.Object
-
- javax.annotation.processing.AbstractProcessor
-
- org.atteo.classindex.processor.ClassIndexProcessor
-
- All Implemented Interfaces:
javax.annotation.processing.Processor
public class ClassIndexProcessor extends javax.annotation.processing.AbstractProcessor
Generates index files forClassIndex
.
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.Map<java.lang.String,java.util.Set<java.lang.String>>
annotatedMap
private boolean
annotationDriven
private javax.lang.model.util.Elements
elementUtils
private javax.annotation.processing.Filer
filer
private java.util.Set<java.lang.String>
indexedAnnotations
private java.util.Set<java.lang.String>
indexedPackages
private java.util.Set<java.lang.String>
indexedSuperclasses
private java.util.Set<javax.lang.model.element.TypeElement>
javadocAlreadyStored
private javax.annotation.processing.Messager
messager
private java.util.Map<java.lang.String,java.util.Set<java.lang.String>>
packageMap
private java.util.Map<java.lang.String,java.util.Set<java.lang.String>>
subclassMap
private javax.lang.model.util.Types
types
-
Constructor Summary
Constructors Modifier Constructor Description ClassIndexProcessor()
protected
ClassIndexProcessor(java.lang.Class<?>... classes)
Used when creating subclasses of the processor which will index some annotations which cannot be itself annotated withIndexAnnotated
orIndexSubclasses
.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private java.lang.String
getFullName(javax.lang.model.element.TypeElement typeElement)
private javax.lang.model.element.PackageElement
getPackage(javax.lang.model.element.Element typeElement)
private java.lang.String
getShortName(javax.lang.model.element.TypeElement typeElement)
java.util.Set<java.lang.String>
getSupportedAnnotationTypes()
javax.lang.model.SourceVersion
getSupportedSourceVersion()
private boolean
hasAnnotation(javax.lang.model.element.TypeElement element, java.lang.Class<? extends java.lang.annotation.Annotation> inheritedClass)
protected void
indexAnnotations(java.lang.Class<?>... classes)
Adds given annotations for indexing.protected void
indexPackages(java.lang.String... packages)
Adds given package for indexing.protected void
indexSubclasses(java.lang.Class<?>... classes)
Adds given classes for subclass indexing.private void
indexSupertypes(javax.lang.model.element.TypeElement rootElement, javax.lang.model.element.TypeElement element)
void
init(javax.annotation.processing.ProcessingEnvironment processingEnv)
boolean
process(java.util.Set<? extends javax.lang.model.element.TypeElement> annotations, javax.annotation.processing.RoundEnvironment roundEnv)
private <K> void
putElement(java.util.Map<K,java.util.Set<java.lang.String>> map, K keyElement, java.lang.String valueElement)
private <K> void
putElement(java.util.Map<K,java.util.Set<java.lang.String>> map, K keyElement, javax.lang.model.element.TypeElement valueElement)
private static void
readOldIndexFile(java.util.Set<java.lang.String> entries, java.io.Reader reader)
private javax.tools.FileObject
readOldIndexFile(java.util.Set<java.lang.String> entries, java.lang.String resourceName)
private void
storeAnnotation(javax.lang.model.element.TypeElement annotationElement, javax.lang.model.element.TypeElement rootElement)
private void
storeClassFromPackage(javax.lang.model.element.PackageElement packageElement, javax.lang.model.element.TypeElement rootElement)
private void
storeJavadoc(javax.lang.model.element.TypeElement element)
private void
storeRepeatableAnnotation(javax.lang.model.element.AnnotationMirror annotation, javax.lang.model.element.TypeElement typeElement)
private void
storeSubclass(javax.lang.model.element.TypeElement superTypeElement, javax.lang.model.element.TypeElement rootElement)
private void
writeFile(java.lang.String content, java.lang.String resourceName)
private void
writeIndexFile(java.util.Set<java.lang.String> entries, java.lang.String resourceName, javax.tools.FileObject overrideFile)
private void
writeIndexFiles(java.lang.String prefix, java.util.Map<java.lang.String,java.util.Set<java.lang.String>> indexMap)
private void
writeSimpleNameIndexFile(java.util.Set<java.lang.String> elementList, java.lang.String resourceName)
-
-
-
Field Detail
-
subclassMap
private java.util.Map<java.lang.String,java.util.Set<java.lang.String>> subclassMap
-
annotatedMap
private java.util.Map<java.lang.String,java.util.Set<java.lang.String>> annotatedMap
-
packageMap
private java.util.Map<java.lang.String,java.util.Set<java.lang.String>> packageMap
-
annotationDriven
private boolean annotationDriven
-
indexedAnnotations
private java.util.Set<java.lang.String> indexedAnnotations
-
indexedSuperclasses
private java.util.Set<java.lang.String> indexedSuperclasses
-
indexedPackages
private java.util.Set<java.lang.String> indexedPackages
-
javadocAlreadyStored
private java.util.Set<javax.lang.model.element.TypeElement> javadocAlreadyStored
-
types
private javax.lang.model.util.Types types
-
filer
private javax.annotation.processing.Filer filer
-
elementUtils
private javax.lang.model.util.Elements elementUtils
-
messager
private javax.annotation.processing.Messager messager
-
-
Constructor Detail
-
ClassIndexProcessor
public ClassIndexProcessor()
-
ClassIndexProcessor
protected ClassIndexProcessor(java.lang.Class<?>... classes)
Used when creating subclasses of the processor which will index some annotations which cannot be itself annotated withIndexAnnotated
orIndexSubclasses
.- Parameters:
classes
- list of classes which the processor will be indexing
-
-
Method Detail
-
indexAnnotations
protected final void indexAnnotations(java.lang.Class<?>... classes)
Adds given annotations for indexing.
-
indexSubclasses
protected final void indexSubclasses(java.lang.Class<?>... classes)
Adds given classes for subclass indexing.
-
indexPackages
protected final void indexPackages(java.lang.String... packages)
Adds given package for indexing.
-
getSupportedSourceVersion
public javax.lang.model.SourceVersion getSupportedSourceVersion()
- Specified by:
getSupportedSourceVersion
in interfacejavax.annotation.processing.Processor
- Overrides:
getSupportedSourceVersion
in classjavax.annotation.processing.AbstractProcessor
-
getSupportedAnnotationTypes
public java.util.Set<java.lang.String> getSupportedAnnotationTypes()
- Specified by:
getSupportedAnnotationTypes
in interfacejavax.annotation.processing.Processor
- Overrides:
getSupportedAnnotationTypes
in classjavax.annotation.processing.AbstractProcessor
-
init
public void init(javax.annotation.processing.ProcessingEnvironment processingEnv)
- Specified by:
init
in interfacejavax.annotation.processing.Processor
- Overrides:
init
in classjavax.annotation.processing.AbstractProcessor
-
process
public boolean process(java.util.Set<? extends javax.lang.model.element.TypeElement> annotations, javax.annotation.processing.RoundEnvironment roundEnv)
- Specified by:
process
in interfacejavax.annotation.processing.Processor
- Specified by:
process
in classjavax.annotation.processing.AbstractProcessor
-
storeRepeatableAnnotation
private void storeRepeatableAnnotation(javax.lang.model.element.AnnotationMirror annotation, javax.lang.model.element.TypeElement typeElement) throws java.io.IOException
- Throws:
java.io.IOException
-
writeIndexFiles
private void writeIndexFiles(java.lang.String prefix, java.util.Map<java.lang.String,java.util.Set<java.lang.String>> indexMap) throws java.io.IOException
- Throws:
java.io.IOException
-
readOldIndexFile
private javax.tools.FileObject readOldIndexFile(java.util.Set<java.lang.String> entries, java.lang.String resourceName) throws java.io.IOException
- Throws:
java.io.IOException
-
readOldIndexFile
private static void readOldIndexFile(java.util.Set<java.lang.String> entries, java.io.Reader reader) throws java.io.IOException
- Throws:
java.io.IOException
-
writeIndexFile
private void writeIndexFile(java.util.Set<java.lang.String> entries, java.lang.String resourceName, javax.tools.FileObject overrideFile) throws java.io.IOException
- Throws:
java.io.IOException
-
writeSimpleNameIndexFile
private void writeSimpleNameIndexFile(java.util.Set<java.lang.String> elementList, java.lang.String resourceName) throws java.io.IOException
- Throws:
java.io.IOException
-
writeFile
private void writeFile(java.lang.String content, java.lang.String resourceName) throws java.io.IOException
- Throws:
java.io.IOException
-
indexSupertypes
private void indexSupertypes(javax.lang.model.element.TypeElement rootElement, javax.lang.model.element.TypeElement element) throws java.io.IOException
- Throws:
java.io.IOException
-
hasAnnotation
private boolean hasAnnotation(javax.lang.model.element.TypeElement element, java.lang.Class<? extends java.lang.annotation.Annotation> inheritedClass)
-
storeAnnotation
private void storeAnnotation(javax.lang.model.element.TypeElement annotationElement, javax.lang.model.element.TypeElement rootElement) throws java.io.IOException
- Throws:
java.io.IOException
-
storeSubclass
private void storeSubclass(javax.lang.model.element.TypeElement superTypeElement, javax.lang.model.element.TypeElement rootElement) throws java.io.IOException
- Throws:
java.io.IOException
-
storeClassFromPackage
private void storeClassFromPackage(javax.lang.model.element.PackageElement packageElement, javax.lang.model.element.TypeElement rootElement) throws java.io.IOException
- Throws:
java.io.IOException
-
putElement
private <K> void putElement(java.util.Map<K,java.util.Set<java.lang.String>> map, K keyElement, javax.lang.model.element.TypeElement valueElement)
-
putElement
private <K> void putElement(java.util.Map<K,java.util.Set<java.lang.String>> map, K keyElement, java.lang.String valueElement)
-
getFullName
private java.lang.String getFullName(javax.lang.model.element.TypeElement typeElement)
-
getShortName
private java.lang.String getShortName(javax.lang.model.element.TypeElement typeElement)
-
getPackage
private javax.lang.model.element.PackageElement getPackage(javax.lang.model.element.Element typeElement)
-
storeJavadoc
private void storeJavadoc(javax.lang.model.element.TypeElement element) throws java.io.IOException
- Throws:
java.io.IOException
-
-