@AutoService(value=javax.annotation.processing.Processor.class) public class AutoValueProcessor extends javax.annotation.processing.AbstractProcessor
AutoValue
Modifier and Type | Class and Description |
---|---|
private static class |
AutoValueProcessor.ObjectMethodToOverride |
static class |
AutoValueProcessor.Property
A property of an
@AutoValue class, defined by one of its abstract methods. |
Modifier and Type | Field and Description |
---|---|
private java.util.List<java.lang.String> |
deferredTypeNames
Qualified names of
@AutoValue classes that we attempted to process but had to abandon
because we needed other types that they referenced and those other types were missing. |
private ErrorReporter |
errorReporter |
Constructor and Description |
---|
AutoValueProcessor() |
Modifier and Type | Method and Description |
---|---|
private static boolean |
allGetters(java.lang.Iterable<javax.lang.model.element.ExecutableElement> methods) |
private boolean |
ancestorIsAutoValue(javax.lang.model.element.TypeElement type) |
private void |
checkDuplicateGetters(java.util.Map<javax.lang.model.element.ExecutableElement,java.lang.String> methodToIdentifier) |
private static boolean |
containsArrayType(java.util.Set<javax.lang.model.type.TypeMirror> types) |
private void |
defineVarsForType(javax.lang.model.element.TypeElement type,
AutoValueTemplateVars vars) |
private static void |
determineObjectMethodsToGenerate(java.util.List<javax.lang.model.element.ExecutableElement> methods,
AutoValueTemplateVars vars)
Given a list of all methods defined in or inherited by a class, sets the equals, hashCode, and
toString fields of vars according as the corresponding methods should be generated.
|
private java.lang.String |
disambiguate(java.lang.String name,
java.util.Collection<java.lang.String> existingNames) |
private EclipseHack |
eclipseHack() |
private void |
findLocalAndInheritedMethods(javax.lang.model.element.TypeElement type,
java.util.List<javax.lang.model.element.ExecutableElement> methods) |
private void |
fixReservedIdentifiers(java.util.Map<javax.lang.model.element.ExecutableElement,java.lang.String> methodToIdentifier) |
private java.lang.String |
generatedClassName(javax.lang.model.element.TypeElement type,
java.lang.String prefix) |
private java.lang.String |
generatedSubclassName(javax.lang.model.element.TypeElement type) |
private java.lang.String |
getSerialVersionUID(javax.lang.model.element.TypeElement type) |
java.util.Set<java.lang.String> |
getSupportedAnnotationTypes() |
javax.lang.model.SourceVersion |
getSupportedSourceVersion() |
private javax.lang.model.type.TypeMirror |
getTypeMirror(java.lang.Class<?> c) |
private boolean |
implementsAnnotation(javax.lang.model.element.TypeElement type) |
void |
init(javax.annotation.processing.ProcessingEnvironment processingEnv) |
private static boolean |
isJavaLangObject(javax.lang.model.element.TypeElement type) |
private static boolean |
isReferenceArrayType(javax.lang.model.type.TypeMirror type) |
private com.google.common.collect.ImmutableSet<javax.lang.model.element.ExecutableElement> |
methodsToImplement(java.util.List<javax.lang.model.element.ExecutableElement> methods) |
private com.google.common.collect.ImmutableBiMap<javax.lang.model.element.ExecutableElement,java.lang.String> |
methodToPropertyNameMap(java.lang.Iterable<javax.lang.model.element.ExecutableElement> propertyMethods) |
private java.lang.String |
nameWithoutPrefix(java.lang.String name) |
private static AutoValueProcessor.ObjectMethodToOverride |
objectMethodToOverride(javax.lang.model.element.ExecutableElement method) |
boolean |
process(java.util.Set<? extends javax.lang.model.element.TypeElement> annotations,
javax.annotation.processing.RoundEnvironment roundEnv) |
private void |
processType(javax.lang.model.element.TypeElement type) |
private java.util.Set<javax.lang.model.type.TypeMirror> |
returnTypesOf(java.lang.Iterable<javax.lang.model.element.ExecutableElement> methods) |
private static java.lang.String |
wildcardTypeParametersString(javax.lang.model.element.TypeElement type) |
private void |
writeSourceFile(java.lang.String className,
java.lang.String text,
javax.lang.model.element.TypeElement originatingType) |
private ErrorReporter errorReporter
private final java.util.List<java.lang.String> deferredTypeNames
@AutoValue
classes that we attempted to process but had to abandon
because we needed other types that they referenced and those other types were missing.public java.util.Set<java.lang.String> getSupportedAnnotationTypes()
getSupportedAnnotationTypes
in interface javax.annotation.processing.Processor
getSupportedAnnotationTypes
in class javax.annotation.processing.AbstractProcessor
public javax.lang.model.SourceVersion getSupportedSourceVersion()
getSupportedSourceVersion
in interface javax.annotation.processing.Processor
getSupportedSourceVersion
in class javax.annotation.processing.AbstractProcessor
public void init(javax.annotation.processing.ProcessingEnvironment processingEnv)
init
in interface javax.annotation.processing.Processor
init
in class javax.annotation.processing.AbstractProcessor
public boolean process(java.util.Set<? extends javax.lang.model.element.TypeElement> annotations, javax.annotation.processing.RoundEnvironment roundEnv)
process
in interface javax.annotation.processing.Processor
process
in class javax.annotation.processing.AbstractProcessor
private java.lang.String generatedClassName(javax.lang.model.element.TypeElement type, java.lang.String prefix)
private java.lang.String generatedSubclassName(javax.lang.model.element.TypeElement type)
private static boolean isJavaLangObject(javax.lang.model.element.TypeElement type)
private static AutoValueProcessor.ObjectMethodToOverride objectMethodToOverride(javax.lang.model.element.ExecutableElement method)
private void findLocalAndInheritedMethods(javax.lang.model.element.TypeElement type, java.util.List<javax.lang.model.element.ExecutableElement> methods)
private void processType(javax.lang.model.element.TypeElement type)
private void defineVarsForType(javax.lang.model.element.TypeElement type, AutoValueTemplateVars vars)
private com.google.common.collect.ImmutableBiMap<javax.lang.model.element.ExecutableElement,java.lang.String> methodToPropertyNameMap(java.lang.Iterable<javax.lang.model.element.ExecutableElement> propertyMethods)
private static boolean allGetters(java.lang.Iterable<javax.lang.model.element.ExecutableElement> methods)
private java.lang.String nameWithoutPrefix(java.lang.String name)
private void checkDuplicateGetters(java.util.Map<javax.lang.model.element.ExecutableElement,java.lang.String> methodToIdentifier)
private void fixReservedIdentifiers(java.util.Map<javax.lang.model.element.ExecutableElement,java.lang.String> methodToIdentifier)
private java.lang.String disambiguate(java.lang.String name, java.util.Collection<java.lang.String> existingNames)
private java.util.Set<javax.lang.model.type.TypeMirror> returnTypesOf(java.lang.Iterable<javax.lang.model.element.ExecutableElement> methods)
private static boolean containsArrayType(java.util.Set<javax.lang.model.type.TypeMirror> types)
private static void determineObjectMethodsToGenerate(java.util.List<javax.lang.model.element.ExecutableElement> methods, AutoValueTemplateVars vars)
private com.google.common.collect.ImmutableSet<javax.lang.model.element.ExecutableElement> methodsToImplement(java.util.List<javax.lang.model.element.ExecutableElement> methods)
private static boolean isReferenceArrayType(javax.lang.model.type.TypeMirror type)
private void writeSourceFile(java.lang.String className, java.lang.String text, javax.lang.model.element.TypeElement originatingType)
private boolean ancestorIsAutoValue(javax.lang.model.element.TypeElement type)
private boolean implementsAnnotation(javax.lang.model.element.TypeElement type)
private java.lang.String getSerialVersionUID(javax.lang.model.element.TypeElement type)
private javax.lang.model.type.TypeMirror getTypeMirror(java.lang.Class<?> c)
private static java.lang.String wildcardTypeParametersString(javax.lang.model.element.TypeElement type)
private EclipseHack eclipseHack()