aboutsummaryrefslogtreecommitdiff
path: root/java/dagger/android/internal/proguard/ProguardProcessor.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/dagger/android/internal/proguard/ProguardProcessor.java')
-rw-r--r--java/dagger/android/internal/proguard/ProguardProcessor.java57
1 files changed, 11 insertions, 46 deletions
diff --git a/java/dagger/android/internal/proguard/ProguardProcessor.java b/java/dagger/android/internal/proguard/ProguardProcessor.java
index 49274e94f..8677bf179 100644
--- a/java/dagger/android/internal/proguard/ProguardProcessor.java
+++ b/java/dagger/android/internal/proguard/ProguardProcessor.java
@@ -16,19 +16,13 @@
package dagger.android.internal.proguard;
-import static javax.tools.StandardLocation.CLASS_OUTPUT;
-
+import androidx.room.compiler.processing.XProcessingEnv;
+import androidx.room.compiler.processing.XProcessingStep;
+import androidx.room.compiler.processing.javac.JavacBasicAnnotationProcessor;
import com.google.auto.service.AutoService;
-import java.io.IOException;
-import java.io.Writer;
-import java.util.Set;
-import javax.annotation.processing.AbstractProcessor;
-import javax.annotation.processing.Filer;
+import com.google.common.collect.ImmutableList;
import javax.annotation.processing.Processor;
-import javax.annotation.processing.RoundEnvironment;
-import javax.annotation.processing.SupportedAnnotationTypes;
import javax.lang.model.SourceVersion;
-import javax.lang.model.element.TypeElement;
/**
* An {@linkplain Processor annotation processor} to generate dagger-android's specific proguard
@@ -44,46 +38,17 @@ import javax.lang.model.element.TypeElement;
* </code></pre>
*/
@AutoService(Processor.class)
-@SupportedAnnotationTypes(ProguardProcessor.GENERATE_RULES_ANNOTATION_NAME)
-public final class ProguardProcessor extends AbstractProcessor {
-
- static final String GENERATE_RULES_ANNOTATION_NAME =
- "dagger.android.internal.GenerateAndroidInjectionProguardRules";
+public final class ProguardProcessor extends JavacBasicAnnotationProcessor {
+ private XProcessingEnv env;
@Override
- public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
- roundEnv
- .getElementsAnnotatedWith(
- processingEnv.getElementUtils().getTypeElement(GENERATE_RULES_ANNOTATION_NAME))
- .forEach(element -> generate());
-
- return false;
- }
-
- private void generate() {
- Filer filer = processingEnv.getFiler();
-
- String errorProneRule = "-dontwarn com.google.errorprone.annotations.**\n";
- String androidInjectionKeysRule =
- "-identifiernamestring class dagger.android.internal.AndroidInjectionKeys {\n"
- + " java.lang.String of(java.lang.String);\n"
- + "}\n";
-
- writeFile(filer, "com.android.tools/proguard", errorProneRule);
- writeFile(filer, "com.android.tools/r8", errorProneRule + androidInjectionKeysRule);
- writeFile(filer, "proguard", errorProneRule);
+ public void initialize(XProcessingEnv env) {
+ this.env = env;
}
- private static void writeFile(Filer filer, String intermediatePath, String contents) {
- try (Writer writer =
- filer
- .createResource(
- CLASS_OUTPUT, "", "META-INF/" + intermediatePath + "/dagger-android.pro")
- .openWriter()) {
- writer.write(contents);
- } catch (IOException e) {
- throw new IllegalStateException(e);
- }
+ @Override
+ public Iterable<XProcessingStep> processingSteps() {
+ return ImmutableList.of(new ProguardProcessingStep(env));
}
@Override