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.AbstractProcessorGenerates index files forClassIndex.
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.Map<java.lang.String,java.util.Set<java.lang.String>>annotatedMapprivate booleanannotationDrivenprivate javax.lang.model.util.ElementselementUtilsprivate javax.annotation.processing.Filerfilerprivate java.util.Set<java.lang.String>indexedAnnotationsprivate java.util.Set<java.lang.String>indexedPackagesprivate java.util.Set<java.lang.String>indexedSuperclassesprivate java.util.Set<javax.lang.model.element.TypeElement>javadocAlreadyStoredprivate javax.annotation.processing.Messagermessagerprivate java.util.Map<java.lang.String,java.util.Set<java.lang.String>>packageMapprivate java.util.Map<java.lang.String,java.util.Set<java.lang.String>>subclassMapprivate javax.lang.model.util.Typestypes
-
Constructor Summary
Constructors Modifier Constructor Description ClassIndexProcessor()protectedClassIndexProcessor(java.lang.Class<?>... classes)Used when creating subclasses of the processor which will index some annotations which cannot be itself annotated withIndexAnnotatedorIndexSubclasses.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private java.lang.StringgetFullName(javax.lang.model.element.TypeElement typeElement)private javax.lang.model.element.PackageElementgetPackage(javax.lang.model.element.Element typeElement)private java.lang.StringgetShortName(javax.lang.model.element.TypeElement typeElement)java.util.Set<java.lang.String>getSupportedAnnotationTypes()javax.lang.model.SourceVersiongetSupportedSourceVersion()private booleanhasAnnotation(javax.lang.model.element.TypeElement element, java.lang.Class<? extends java.lang.annotation.Annotation> inheritedClass)protected voidindexAnnotations(java.lang.Class<?>... classes)Adds given annotations for indexing.protected voidindexPackages(java.lang.String... packages)Adds given package for indexing.protected voidindexSubclasses(java.lang.Class<?>... classes)Adds given classes for subclass indexing.private voidindexSupertypes(javax.lang.model.element.TypeElement rootElement, javax.lang.model.element.TypeElement element)voidinit(javax.annotation.processing.ProcessingEnvironment processingEnv)booleanprocess(java.util.Set<? extends javax.lang.model.element.TypeElement> annotations, javax.annotation.processing.RoundEnvironment roundEnv)private <K> voidputElement(java.util.Map<K,java.util.Set<java.lang.String>> map, K keyElement, java.lang.String valueElement)private <K> voidputElement(java.util.Map<K,java.util.Set<java.lang.String>> map, K keyElement, javax.lang.model.element.TypeElement valueElement)private static voidreadOldIndexFile(java.util.Set<java.lang.String> entries, java.io.Reader reader)private javax.tools.FileObjectreadOldIndexFile(java.util.Set<java.lang.String> entries, java.lang.String resourceName)private voidstoreAnnotation(javax.lang.model.element.TypeElement annotationElement, javax.lang.model.element.TypeElement rootElement)private voidstoreClassFromPackage(javax.lang.model.element.PackageElement packageElement, javax.lang.model.element.TypeElement rootElement)private voidstoreJavadoc(javax.lang.model.element.TypeElement element)private voidstoreRepeatableAnnotation(javax.lang.model.element.AnnotationMirror annotation, javax.lang.model.element.TypeElement typeElement)private voidstoreSubclass(javax.lang.model.element.TypeElement superTypeElement, javax.lang.model.element.TypeElement rootElement)private voidwriteFile(java.lang.String content, java.lang.String resourceName)private voidwriteIndexFile(java.util.Set<java.lang.String> entries, java.lang.String resourceName, javax.tools.FileObject overrideFile)private voidwriteIndexFiles(java.lang.String prefix, java.util.Map<java.lang.String,java.util.Set<java.lang.String>> indexMap)private voidwriteSimpleNameIndexFile(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 withIndexAnnotatedorIndexSubclasses.- 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:
getSupportedSourceVersionin interfacejavax.annotation.processing.Processor- Overrides:
getSupportedSourceVersionin classjavax.annotation.processing.AbstractProcessor
-
getSupportedAnnotationTypes
public java.util.Set<java.lang.String> getSupportedAnnotationTypes()
- Specified by:
getSupportedAnnotationTypesin interfacejavax.annotation.processing.Processor- Overrides:
getSupportedAnnotationTypesin classjavax.annotation.processing.AbstractProcessor
-
init
public void init(javax.annotation.processing.ProcessingEnvironment processingEnv)
- Specified by:
initin interfacejavax.annotation.processing.Processor- Overrides:
initin 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:
processin interfacejavax.annotation.processing.Processor- Specified by:
processin 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
-
-