diff --git a/java/dagger/hilt/processor/internal/BUILD b/java/dagger/hilt/processor/internal/BUILD index 43c2a56204f..cd5018743bc 100644 --- a/java/dagger/hilt/processor/internal/BUILD +++ b/java/dagger/hilt/processor/internal/BUILD @@ -62,6 +62,7 @@ java_library( ":processor_errors", "//java/dagger/hilt/processor/internal/kotlin", "//java/dagger/internal/codegen/extension", + "//java/dagger/internal/codegen/xprocessing", "//third_party/java/auto:common", "//third_party/java/guava/base", "//third_party/java/guava/collect", diff --git a/java/dagger/hilt/processor/internal/Processors.java b/java/dagger/hilt/processor/internal/Processors.java index 3fdb8c0e89d..54896f0410f 100644 --- a/java/dagger/hilt/processor/internal/Processors.java +++ b/java/dagger/hilt/processor/internal/Processors.java @@ -16,6 +16,8 @@ package dagger.hilt.processor.internal; +import static androidx.room.compiler.processing.compat.XConverters.getProcessingEnv; +import static androidx.room.compiler.processing.compat.XConverters.toJavac; import static com.google.auto.common.MoreElements.asPackage; import static com.google.auto.common.MoreElements.asType; import static com.google.auto.common.MoreElements.asVariable; @@ -25,6 +27,7 @@ import static javax.lang.model.element.Modifier.PUBLIC; import static javax.lang.model.element.Modifier.STATIC; +import androidx.room.compiler.processing.XTypeElement; import com.google.auto.common.AnnotationMirrors; import com.google.auto.common.GeneratedAnnotations; import com.google.auto.common.MoreElements; @@ -92,22 +95,39 @@ public final class Processors { private static final String JAVA_CLASS = "java.lang.Class"; + /** Generates the aggregating metadata class for an aggregating annotation. */ public static void generateAggregatingClass( String aggregatingPackage, AnnotationSpec aggregatingAnnotation, - TypeElement element, - Class generatedAnnotationClass, + XTypeElement originatingElement, + Class generatorClass) throws IOException { + generateAggregatingClass( + aggregatingPackage, + aggregatingAnnotation, + toJavac(originatingElement), + generatorClass, + toJavac(getProcessingEnv(originatingElement))); + } + + // TODO(bcorso): Remove this method once all usages are migrated to XProcessing. + /** Generates the aggregating metadata class for an aggregating annotation. */ + public static void generateAggregatingClass( + String aggregatingPackage, + AnnotationSpec aggregatingAnnotation, + TypeElement originatingElement, + Class generatorClass, ProcessingEnvironment env) throws IOException { - ClassName name = ClassName.get(aggregatingPackage, "_" + getFullEnclosedName(element)); + ClassName name = + ClassName.get(aggregatingPackage, "_" + getFullEnclosedName(originatingElement)); TypeSpec.Builder builder = TypeSpec.classBuilder(name) .addModifiers(PUBLIC) - .addOriginatingElement(element) + .addOriginatingElement(originatingElement) .addAnnotation(aggregatingAnnotation) .addJavadoc("This class should only be referenced by generated code! ") .addJavadoc("This class aggregates information across multiple compilations.\n");; - addGeneratedAnnotation(builder, env, generatedAnnotationClass); + addGeneratedAnnotation(builder, env, generatorClass); JavaFile.builder(name.packageName(), builder.build()).build().writeTo(env.getFiler()); } diff --git a/java/dagger/hilt/processor/internal/earlyentrypoint/AggregatedEarlyEntryPointGenerator.java b/java/dagger/hilt/processor/internal/earlyentrypoint/AggregatedEarlyEntryPointGenerator.java index ae341189cbf..ed5df0ebb3f 100644 --- a/java/dagger/hilt/processor/internal/earlyentrypoint/AggregatedEarlyEntryPointGenerator.java +++ b/java/dagger/hilt/processor/internal/earlyentrypoint/AggregatedEarlyEntryPointGenerator.java @@ -16,25 +16,21 @@ package dagger.hilt.processor.internal.earlyentrypoint; +import androidx.room.compiler.processing.XTypeElement; import com.squareup.javapoet.AnnotationSpec; import dagger.hilt.processor.internal.ClassNames; import dagger.hilt.processor.internal.Processors; import java.io.IOException; -import javax.annotation.processing.ProcessingEnvironment; -import javax.lang.model.element.TypeElement; /** * Generates an {@link dagger.hilt.android.internal.earlyentrypoint.AggregatedEarlyEntryPoint} * annotation. */ final class AggregatedEarlyEntryPointGenerator { + private final XTypeElement earlyEntryPoint; - private final ProcessingEnvironment env; - private final TypeElement earlyEntryPoint; - - AggregatedEarlyEntryPointGenerator(TypeElement earlyEntryPoint, ProcessingEnvironment env) { + AggregatedEarlyEntryPointGenerator(XTypeElement earlyEntryPoint) { this.earlyEntryPoint = earlyEntryPoint; - this.env = env; } void generate() throws IOException { @@ -44,7 +40,6 @@ void generate() throws IOException { .addMember("earlyEntryPoint", "$S", earlyEntryPoint.getQualifiedName()) .build(), earlyEntryPoint, - getClass(), - env); + getClass()); } } diff --git a/java/dagger/hilt/processor/internal/earlyentrypoint/EarlyEntryPointProcessor.java b/java/dagger/hilt/processor/internal/earlyentrypoint/EarlyEntryPointProcessor.java index 0d52d5bf786..60085dd5ebb 100644 --- a/java/dagger/hilt/processor/internal/earlyentrypoint/EarlyEntryPointProcessor.java +++ b/java/dagger/hilt/processor/internal/earlyentrypoint/EarlyEntryPointProcessor.java @@ -16,8 +16,7 @@ package dagger.hilt.processor.internal.earlyentrypoint; -import static androidx.room.compiler.processing.compat.XConverters.toJavac; -import static com.google.auto.common.MoreElements.asType; +import static dagger.internal.codegen.xprocessing.XElements.asTypeElement; import static net.ltgt.gradle.incap.IncrementalAnnotationProcessorType.ISOLATING; import androidx.room.compiler.processing.XElement; @@ -27,7 +26,6 @@ import dagger.hilt.processor.internal.BaseProcessor; import dagger.hilt.processor.internal.ClassNames; import javax.annotation.processing.Processor; -import javax.lang.model.element.Element; import net.ltgt.gradle.incap.IncrementalAnnotationProcessor; /** Validates {@link dagger.hilt.android.EarlyEntryPoint} usages. */ @@ -42,10 +40,6 @@ public ImmutableSet getSupportedAnnotationTypes() { @Override public void processEach(XTypeElement annotation, XElement element) throws Exception { - processEach(toJavac(element)); - } - - private void processEach(Element element) throws Exception { - new AggregatedEarlyEntryPointGenerator(asType(element), getProcessingEnv()).generate(); + new AggregatedEarlyEntryPointGenerator(asTypeElement(element)).generate(); } }