aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordpb <dpb@google.com>2017-09-29 08:43:39 -0700
committerRon Shapiro <ronshapiro@google.com>2017-10-02 17:46:14 -0400
commit8201d9408c93419a9d777a8e4a586e5b66e2429e (patch)
treee79cf665c9fc2022fc4032510e62a7a94570701c
parent5fe00a6e0bd605c57e5a127f0b0378dd33b673b8 (diff)
downloadauto-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
-rw-r--r--value/src/main/java/com/google/auto/value/processor/AutoAnnotationProcessor.java11
-rw-r--r--value/src/main/java/com/google/auto/value/processor/AutoAnnotationTemplateVars.java3
-rw-r--r--value/src/main/java/com/google/auto/value/processor/AutoValueTemplateVars.java3
-rw-r--r--value/src/main/java/com/google/auto/value/processor/GwtSerialization.java4
-rw-r--r--value/src/main/java/com/google/auto/value/processor/autoannotation.vm4
-rw-r--r--value/src/main/java/com/google/auto/value/processor/autovalue.vm4
-rw-r--r--value/src/main/java/com/google/auto/value/processor/gwtserializer.vm4
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(