From 52be64c79a62d4412d94e87f05bea6d27766af99 Mon Sep 17 00:00:00 2001 From: Zac Sweers Date: Sat, 17 Nov 2018 14:26:54 -0800 Subject: [PATCH 01/10] Switch to incap helper --- auto-value-moshi/build.gradle | 3 +++ .../value/moshi/AutoValueMoshiAdapterFactoryProcessor.java | 5 +++++ .../META-INF/gradle/incremental.annotation.processors | 1 - 3 files changed, 8 insertions(+), 1 deletion(-) delete mode 100644 auto-value-moshi/src/main/resources/META-INF/gradle/incremental.annotation.processors diff --git a/auto-value-moshi/build.gradle b/auto-value-moshi/build.gradle index 529dc9c..e21c18d 100644 --- a/auto-value-moshi/build.gradle +++ b/auto-value-moshi/build.gradle @@ -5,6 +5,9 @@ sourceCompatibility = versions.java targetCompatibility = versions.java dependencies { + compileOnly("net.ltgt.gradle.incap:incap:0.2") + annotationProcessor("net.ltgt.gradle.incap:incap-processor:0.2") + compile project(':auto-value-moshi-annotations') compile libraries.javaPoet compile libraries.autoValue diff --git a/auto-value-moshi/src/main/java/com/ryanharter/auto/value/moshi/AutoValueMoshiAdapterFactoryProcessor.java b/auto-value-moshi/src/main/java/com/ryanharter/auto/value/moshi/AutoValueMoshiAdapterFactoryProcessor.java index c5543dd..23cfa7d 100644 --- a/auto-value-moshi/src/main/java/com/ryanharter/auto/value/moshi/AutoValueMoshiAdapterFactoryProcessor.java +++ b/auto-value-moshi/src/main/java/com/ryanharter/auto/value/moshi/AutoValueMoshiAdapterFactoryProcessor.java @@ -16,6 +16,9 @@ import com.squareup.moshi.JsonAdapter; import com.squareup.moshi.Moshi; +import net.ltgt.gradle.incap.IncrementalAnnotationProcessor; +import net.ltgt.gradle.incap.IncrementalAnnotationProcessorType; + import java.io.IOException; import java.lang.annotation.Annotation; import java.lang.reflect.ParameterizedType; @@ -46,6 +49,7 @@ import static javax.lang.model.element.Modifier.FINAL; import static javax.lang.model.element.Modifier.PUBLIC; import static javax.tools.Diagnostic.Kind.ERROR; +import static net.ltgt.gradle.incap.IncrementalAnnotationProcessorType.AGGREGATING; /** * Annotation Processor responsible for the generation of the {@link JsonAdapter.Factory} class @@ -53,6 +57,7 @@ * * @author rharter */ +@IncrementalAnnotationProcessor(AGGREGATING) @AutoService(Processor.class) public class AutoValueMoshiAdapterFactoryProcessor extends AbstractProcessor { private static final ParameterSpec TYPE_SPEC = ParameterSpec.builder(Type.class, "type").build(); diff --git a/auto-value-moshi/src/main/resources/META-INF/gradle/incremental.annotation.processors b/auto-value-moshi/src/main/resources/META-INF/gradle/incremental.annotation.processors deleted file mode 100644 index a9ccfca..0000000 --- a/auto-value-moshi/src/main/resources/META-INF/gradle/incremental.annotation.processors +++ /dev/null @@ -1 +0,0 @@ -com.ryanharter.auto.value.moshi.AutoValueMoshiAdapterFactoryProcessor,aggregating \ No newline at end of file From 4ae805c022bc5e8fed3b6764842feb3cf86782fa Mon Sep 17 00:00:00 2001 From: Zac Sweers Date: Sat, 17 Nov 2018 14:33:41 -0800 Subject: [PATCH 02/10] Clean up compileOnly/annotationProcessor configurations --- auto-value-moshi/build.gradle | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/auto-value-moshi/build.gradle b/auto-value-moshi/build.gradle index e21c18d..21e373a 100644 --- a/auto-value-moshi/build.gradle +++ b/auto-value-moshi/build.gradle @@ -5,14 +5,15 @@ sourceCompatibility = versions.java targetCompatibility = versions.java dependencies { - compileOnly("net.ltgt.gradle.incap:incap:0.2") - annotationProcessor("net.ltgt.gradle.incap:incap-processor:0.2") + annotationProcessor "net.ltgt.gradle.incap:incap-processor:0.2" + annotationProcessor libraries.autoService + compileOnly "net.ltgt.gradle.incap:incap:0.2" + compileOnly libraries.autoService compile project(':auto-value-moshi-annotations') compile libraries.javaPoet compile libraries.autoValue compile libraries.autoValueAnnotations - compileOnly libraries.autoService compile libraries.autoCommon compile libraries.moshi From 49b02c33ee4d24b6c276753faa7778bb5028f0f2 Mon Sep 17 00:00:00 2001 From: Zac Sweers Date: Sat, 17 Nov 2018 15:11:46 -0800 Subject: [PATCH 03/10] Add missing implementation of incremental type --- .../auto/value/moshi/AutoValueMoshiExtension.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/auto-value-moshi/src/main/java/com/ryanharter/auto/value/moshi/AutoValueMoshiExtension.java b/auto-value-moshi/src/main/java/com/ryanharter/auto/value/moshi/AutoValueMoshiExtension.java index b880298..f4f549b 100644 --- a/auto-value-moshi/src/main/java/com/ryanharter/auto/value/moshi/AutoValueMoshiExtension.java +++ b/auto-value-moshi/src/main/java/com/ryanharter/auto/value/moshi/AutoValueMoshiExtension.java @@ -28,6 +28,7 @@ import com.squareup.moshi.Types; import javax.annotation.processing.Messager; +import javax.annotation.processing.ProcessingEnvironment; import javax.lang.model.element.AnnotationMirror; import javax.lang.model.element.Element; import javax.lang.model.element.ExecutableElement; @@ -112,6 +113,11 @@ private ImmutableSet buildAnnotations(ExecutableElement element) { } } + @Override + public IncrementalExtensionType incrementalType(ProcessingEnvironment processingEnvironment) { + return IncrementalExtensionType.ISOLATING; + } + @Override public boolean applicable(Context context) { // check that the class contains a public static method returning a JsonAdapter TypeElement type = context.autoValueClass(); From 17509d4ddd98f78e488e4a82379a540bc3f96774 Mon Sep 17 00:00:00 2001 From: Zac Sweers Date: Sat, 17 Nov 2018 15:31:42 -0800 Subject: [PATCH 04/10] Add appropriate originating elements to processor --- .../value/moshi/AutoValueMoshiAdapterFactoryProcessor.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/auto-value-moshi/src/main/java/com/ryanharter/auto/value/moshi/AutoValueMoshiAdapterFactoryProcessor.java b/auto-value-moshi/src/main/java/com/ryanharter/auto/value/moshi/AutoValueMoshiAdapterFactoryProcessor.java index 23cfa7d..1f6d255 100644 --- a/auto-value-moshi/src/main/java/com/ryanharter/auto/value/moshi/AutoValueMoshiAdapterFactoryProcessor.java +++ b/auto-value-moshi/src/main/java/com/ryanharter/auto/value/moshi/AutoValueMoshiAdapterFactoryProcessor.java @@ -17,7 +17,6 @@ import com.squareup.moshi.Moshi; import net.ltgt.gradle.incap.IncrementalAnnotationProcessor; -import net.ltgt.gradle.incap.IncrementalAnnotationProcessorType; import java.io.IOException; import java.lang.annotation.Annotation; @@ -118,7 +117,7 @@ public class AutoValueMoshiAdapterFactoryProcessor extends AbstractProcessor { MoshiAdapterFactory annotation = element.getAnnotation(MoshiAdapterFactory.class); boolean requestNullSafeAdapters = annotation.nullSafe(); - TypeSpec jsonAdapterFactory = createJsonAdapterFactory(elements, packageName, adapterName, + TypeSpec jsonAdapterFactory = createJsonAdapterFactory(type, elements, packageName, adapterName, requestNullSafeAdapters); JavaFile file = JavaFile.builder(packageName, jsonAdapterFactory).build(); try { @@ -134,10 +133,11 @@ public class AutoValueMoshiAdapterFactoryProcessor extends AbstractProcessor { return false; } - private TypeSpec createJsonAdapterFactory(List elements, String packageName, + private TypeSpec createJsonAdapterFactory(TypeElement sourceElement, List elements, String packageName, String factoryName, boolean requestNullSafeAdapters) { TypeSpec.Builder factory = TypeSpec.classBuilder(ClassName.get(packageName, "AutoValueMoshi_" + factoryName)); + factory.addOriginatingElement(sourceElement); factory.addModifiers(PUBLIC, FINAL); factory.superclass(ClassName.get(packageName, factoryName)); @@ -162,6 +162,7 @@ private TypeSpec createJsonAdapterFactory(List elements, String package for (int i = 0; i < elements.size(); i++) { Element element = elements.get(i); + factory.addOriginatingElement(element); TypeName elementTypeName = TypeName.get(element.asType()); if (elementTypeName instanceof ParameterizedTypeName) { From 8654c8af89979c26365a29e4af8f5b5740c08ef4 Mon Sep 17 00:00:00 2001 From: Zac Sweers Date: Sat, 17 Nov 2018 15:32:44 -0800 Subject: [PATCH 05/10] Try using apt instead of annotationProcessor for CI --- auto-value-moshi/build.gradle | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/auto-value-moshi/build.gradle b/auto-value-moshi/build.gradle index 21e373a..c62cc68 100644 --- a/auto-value-moshi/build.gradle +++ b/auto-value-moshi/build.gradle @@ -1,3 +1,4 @@ +apply plugin: 'net.ltgt.apt' apply plugin: 'java' apply plugin: 'maven-publish' @@ -5,8 +6,8 @@ sourceCompatibility = versions.java targetCompatibility = versions.java dependencies { - annotationProcessor "net.ltgt.gradle.incap:incap-processor:0.2" - annotationProcessor libraries.autoService + apt "net.ltgt.gradle.incap:incap-processor:0.2" + apt libraries.autoService compileOnly "net.ltgt.gradle.incap:incap:0.2" compileOnly libraries.autoService From ec31fc678fc1a38cfac8c46daf0f61f4d0f9d9d9 Mon Sep 17 00:00:00 2001 From: Zac Sweers Date: Sat, 17 Nov 2018 15:36:30 -0800 Subject: [PATCH 06/10] Checkstyle fixes --- .../moshi/AutoValueMoshiAdapterFactoryProcessor.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/auto-value-moshi/src/main/java/com/ryanharter/auto/value/moshi/AutoValueMoshiAdapterFactoryProcessor.java b/auto-value-moshi/src/main/java/com/ryanharter/auto/value/moshi/AutoValueMoshiAdapterFactoryProcessor.java index 1f6d255..2446ef4 100644 --- a/auto-value-moshi/src/main/java/com/ryanharter/auto/value/moshi/AutoValueMoshiAdapterFactoryProcessor.java +++ b/auto-value-moshi/src/main/java/com/ryanharter/auto/value/moshi/AutoValueMoshiAdapterFactoryProcessor.java @@ -117,7 +117,10 @@ public class AutoValueMoshiAdapterFactoryProcessor extends AbstractProcessor { MoshiAdapterFactory annotation = element.getAnnotation(MoshiAdapterFactory.class); boolean requestNullSafeAdapters = annotation.nullSafe(); - TypeSpec jsonAdapterFactory = createJsonAdapterFactory(type, elements, packageName, adapterName, + TypeSpec jsonAdapterFactory = createJsonAdapterFactory(type, + elements, + packageName, + adapterName, requestNullSafeAdapters); JavaFile file = JavaFile.builder(packageName, jsonAdapterFactory).build(); try { @@ -133,8 +136,11 @@ public class AutoValueMoshiAdapterFactoryProcessor extends AbstractProcessor { return false; } - private TypeSpec createJsonAdapterFactory(TypeElement sourceElement, List elements, String packageName, - String factoryName, boolean requestNullSafeAdapters) { + private TypeSpec createJsonAdapterFactory(TypeElement sourceElement, + List elements, + String packageName, + String factoryName, + boolean requestNullSafeAdapters) { TypeSpec.Builder factory = TypeSpec.classBuilder(ClassName.get(packageName, "AutoValueMoshi_" + factoryName)); factory.addOriginatingElement(sourceElement); From 364b785cecabb807647ff6e95bb62a50abb3ac7c Mon Sep 17 00:00:00 2001 From: Zac Sweers Date: Sun, 18 Nov 2018 19:48:12 -0800 Subject: [PATCH 07/10] Switch back to annotationProcessor --- auto-value-moshi-tests/build.gradle | 2 +- auto-value-moshi/build.gradle | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/auto-value-moshi-tests/build.gradle b/auto-value-moshi-tests/build.gradle index a25c6b5..e804ee2 100644 --- a/auto-value-moshi-tests/build.gradle +++ b/auto-value-moshi-tests/build.gradle @@ -9,7 +9,7 @@ dependencies { compileOnly libraries.jsr305 compileOnly project(':auto-value-moshi') - apt project(':auto-value-moshi') + annotationProcessor project(':auto-value-moshi') testCompile libraries.junit testCompile libraries.assertJ diff --git a/auto-value-moshi/build.gradle b/auto-value-moshi/build.gradle index c62cc68..21e373a 100644 --- a/auto-value-moshi/build.gradle +++ b/auto-value-moshi/build.gradle @@ -1,4 +1,3 @@ -apply plugin: 'net.ltgt.apt' apply plugin: 'java' apply plugin: 'maven-publish' @@ -6,8 +5,8 @@ sourceCompatibility = versions.java targetCompatibility = versions.java dependencies { - apt "net.ltgt.gradle.incap:incap-processor:0.2" - apt libraries.autoService + annotationProcessor "net.ltgt.gradle.incap:incap-processor:0.2" + annotationProcessor libraries.autoService compileOnly "net.ltgt.gradle.incap:incap:0.2" compileOnly libraries.autoService From e7b3104a6cc76697e438dc12703c662282b2fcc9 Mon Sep 17 00:00:00 2001 From: Zac Sweers Date: Sun, 18 Nov 2018 19:51:24 -0800 Subject: [PATCH 08/10] Extract dependencies --- auto-value-moshi/build.gradle | 4 ++-- dependencies.gradle | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/auto-value-moshi/build.gradle b/auto-value-moshi/build.gradle index 21e373a..b3956f0 100644 --- a/auto-value-moshi/build.gradle +++ b/auto-value-moshi/build.gradle @@ -5,9 +5,9 @@ sourceCompatibility = versions.java targetCompatibility = versions.java dependencies { - annotationProcessor "net.ltgt.gradle.incap:incap-processor:0.2" + annotationProcessor libraries.incapProcessor annotationProcessor libraries.autoService - compileOnly "net.ltgt.gradle.incap:incap:0.2" + compileOnly libraries.incap compileOnly libraries.autoService compile project(':auto-value-moshi-annotations') diff --git a/dependencies.gradle b/dependencies.gradle index 628fc45..12b7ae4 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -9,6 +9,7 @@ ext { autoService : '1.0-rc4', autoCommon : '0.10', moshi : '1.7.0', + incapHelper : '0.2', jsr305 : '3.0.2', // For testing junit : '4.12', @@ -24,6 +25,8 @@ ext { autoService : "com.google.auto.service:auto-service:$versions.autoService", autoCommon : "com.google.auto:auto-common:$versions.autoCommon", moshi : "com.squareup.moshi:moshi:$versions.moshi", + incapProcessor : "net.ltgt.gradle.incap:incap-processor:${versions.incapHelper}", + incap : "net.ltgt.gradle.incap:incap:${versions.incapHelper}", jsr305 : "com.google.code.findbugs:jsr305:$versions.jsr305", junit : "junit:junit:$versions.junit", From ad8514b0b3721713f5b9eadb5d9df5d53176a843 Mon Sep 17 00:00:00 2001 From: Zac Sweers Date: Sun, 18 Nov 2018 20:49:14 -0800 Subject: [PATCH 09/10] Alpha --- dependencies.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dependencies.gradle b/dependencies.gradle index 12b7ae4..14fb314 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -25,8 +25,8 @@ ext { autoService : "com.google.auto.service:auto-service:$versions.autoService", autoCommon : "com.google.auto:auto-common:$versions.autoCommon", moshi : "com.squareup.moshi:moshi:$versions.moshi", - incapProcessor : "net.ltgt.gradle.incap:incap-processor:${versions.incapHelper}", incap : "net.ltgt.gradle.incap:incap:${versions.incapHelper}", + incapProcessor : "net.ltgt.gradle.incap:incap-processor:${versions.incapHelper}", jsr305 : "com.google.code.findbugs:jsr305:$versions.jsr305", junit : "junit:junit:$versions.junit", From 1620b56c1fd074d681ea0ff33a72776af6e7a02b Mon Sep 17 00:00:00 2001 From: Zac Sweers Date: Sun, 18 Nov 2018 20:49:30 -0800 Subject: [PATCH 10/10] Add incap workaround to tests --- auto-value-moshi-tests/build.gradle | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/auto-value-moshi-tests/build.gradle b/auto-value-moshi-tests/build.gradle index e804ee2..3713866 100644 --- a/auto-value-moshi-tests/build.gradle +++ b/auto-value-moshi-tests/build.gradle @@ -5,11 +5,12 @@ sourceCompatibility = versions.java targetCompatibility = versions.java dependencies { - compile libraries.moshi - + annotationProcessor libraries.incap // https://github.com/google/auto/issues/615#issuecomment-438045951 + annotationProcessor project(':auto-value-moshi') compileOnly libraries.jsr305 compileOnly project(':auto-value-moshi') - annotationProcessor project(':auto-value-moshi') + + compile libraries.moshi testCompile libraries.junit testCompile libraries.assertJ