diff options
author | dpb <dpb@google.com> | 2017-09-29 08:43:39 -0700 |
---|---|---|
committer | Ron Shapiro <ronshapiro@google.com> | 2017-10-02 17:46:14 -0400 |
commit | 8201d9408c93419a9d777a8e4a586e5b66e2429e (patch) | |
tree | e79cf665c9fc2022fc4032510e62a7a94570701c /value/src/main/java/com/google | |
parent | 5fe00a6e0bd605c57e5a127f0b0378dd33b673b8 (diff) | |
download | auto-8201d9408c93419a9d777a8e4a586e5b66e2429e.tar.gz |
Make AutoValue processors generate valid code if @Generated is not available.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=170487026
Diffstat (limited to 'value/src/main/java/com/google')
7 files changed, 27 insertions, 6 deletions
diff --git a/value/src/main/java/com/google/auto/value/processor/AutoAnnotationProcessor.java b/value/src/main/java/com/google/auto/value/processor/AutoAnnotationProcessor.java index 4990a605..4a7780db 100644 --- a/value/src/main/java/com/google/auto/value/processor/AutoAnnotationProcessor.java +++ b/value/src/main/java/com/google/auto/value/processor/AutoAnnotationProcessor.java @@ -171,7 +171,7 @@ public class AutoAnnotationProcessor extends AbstractProcessor { vars.annotationName = typeSimplifier.simplify(annotationElement.asType()); vars.className = generatedClassName; vars.imports = typeSimplifier.typesToImport(); - vars.generated = typeSimplifier.simplify(getTypeMirror(Generated.class)); + vars.generated = getGeneratedTypeName(typeSimplifier); vars.arrays = typeSimplifier.simplify(getTypeMirror(Arrays.class)); vars.members = members; vars.params = parameters; @@ -190,6 +190,15 @@ public class AutoAnnotationProcessor extends AbstractProcessor { writeSourceFile(fullName, text, methodClass); } + private String getGeneratedTypeName(TypeSimplifier typeSimplifier) { + TypeElement generatedTypeElement = + processingEnv.getElementUtils().getTypeElement("javax.annotation.Generated"); + if (generatedTypeElement == null) { + return ""; + } + return typeSimplifier.simplify(generatedTypeElement.asType()); + } + /** * Returns the hashCode of the given AnnotationValue, if that hashCode is guaranteed to be always * the same. The hashCode of a String or primitive type never changes. The hashCode of a Class diff --git a/value/src/main/java/com/google/auto/value/processor/AutoAnnotationTemplateVars.java b/value/src/main/java/com/google/auto/value/processor/AutoAnnotationTemplateVars.java index 9617a201..629fe166 100644 --- a/value/src/main/java/com/google/auto/value/processor/AutoAnnotationTemplateVars.java +++ b/value/src/main/java/com/google/auto/value/processor/AutoAnnotationTemplateVars.java @@ -44,7 +44,8 @@ class AutoAnnotationTemplateVars extends TemplateVars { SortedSet<String> imports; /** - * The spelling of the javax.annotation.Generated class: Generated or javax.annotation.Generated. + * The spelling of the {@code Generated} class: {@code Generated} or {@code + * javax.annotation.Generated}. Empty if the class is not available. */ String generated; diff --git a/value/src/main/java/com/google/auto/value/processor/AutoValueTemplateVars.java b/value/src/main/java/com/google/auto/value/processor/AutoValueTemplateVars.java index a9612f94..515652e4 100644 --- a/value/src/main/java/com/google/auto/value/processor/AutoValueTemplateVars.java +++ b/value/src/main/java/com/google/auto/value/processor/AutoValueTemplateVars.java @@ -53,7 +53,8 @@ class AutoValueTemplateVars extends TemplateVars { ImmutableSortedSet<String> imports; /** - * The spelling of the javax.annotation.Generated class: Generated or javax.annotation.Generated. + * The spelling of the {@code Generated} class: {@code Generated} or {@code + * javax.annotation.Generated}. Empty if the class is not available. */ String generated; diff --git a/value/src/main/java/com/google/auto/value/processor/GwtSerialization.java b/value/src/main/java/com/google/auto/value/processor/GwtSerialization.java index 4ec17964..c61f06c1 100644 --- a/value/src/main/java/com/google/auto/value/processor/GwtSerialization.java +++ b/value/src/main/java/com/google/auto/value/processor/GwtSerialization.java @@ -205,8 +205,8 @@ class GwtSerialization { String serializerClass; /** - * The spelling of the javax.annotation.Generated class: Generated or - * javax.annotation.Generated. + * The spelling of the {@code Generated} class: {@code Generated} or {@code + * javax.annotation.Generated}. Empty if the class is not available. */ String generated; diff --git a/value/src/main/java/com/google/auto/value/processor/autoannotation.vm b/value/src/main/java/com/google/auto/value/processor/autoannotation.vm index f4a321be..ccfc4a0e 100644 --- a/value/src/main/java/com/google/auto/value/processor/autoannotation.vm +++ b/value/src/main/java/com/google/auto/value/processor/autoannotation.vm @@ -25,7 +25,11 @@ package $pkg; import $i; #end +#if (!$generated.empty) @${generated}("com.google.auto.value.processor.AutoAnnotationProcessor") +#else +// Generated by com.google.auto.value.processor.AutoAnnotationProcessor +#end final class $className implements $annotationName { ## Fields diff --git a/value/src/main/java/com/google/auto/value/processor/autovalue.vm b/value/src/main/java/com/google/auto/value/processor/autovalue.vm index 65d1d2f7..ffbbf21e 100644 --- a/value/src/main/java/com/google/auto/value/processor/autovalue.vm +++ b/value/src/main/java/com/google/auto/value/processor/autovalue.vm @@ -21,8 +21,10 @@ ${gwtCompatibleAnnotation} #foreach ($a in $annotations) $a #end -#if ($generated != "") +#if (!$generated.empty) @${generated}("com.google.auto.value.processor.AutoValueProcessor") +#else +// Generated by com.google.auto.value.processor.AutoValueProcessor #end #if ($isFinal) final #else abstract #end class $subclass$formalTypes extends $origClass$actualTypes { diff --git a/value/src/main/java/com/google/auto/value/processor/gwtserializer.vm b/value/src/main/java/com/google/auto/value/processor/gwtserializer.vm index 66782738..e24ddbbb 100644 --- a/value/src/main/java/com/google/auto/value/processor/gwtserializer.vm +++ b/value/src/main/java/com/google/auto/value/processor/gwtserializer.vm @@ -22,7 +22,11 @@ import com.google.gwt.user.client.rpc.SerializationException; import com.google.gwt.user.client.rpc.SerializationStreamReader; import com.google.gwt.user.client.rpc.SerializationStreamWriter; +#if (!$generated.empty) @${generated}("com.google.auto.value.processor.AutoValueProcessor") +#else +// Generated by com.google.auto.value.processor.AutoValueProcessor +#end public final class $serializerClass$formalTypes extends CustomFieldSerializer<$subclass$actualTypes> { public static $formalTypes $subclass$actualTypes instantiate( |