Skip to content

Commit

Permalink
Migrate EarlyEntryPointProcessor to XProcessing.
Browse files Browse the repository at this point in the history
RELNOTES=N/A
PiperOrigin-RevId: 511606217
  • Loading branch information
bcorso authored and Dagger Team committed Feb 22, 2023
1 parent a56433c commit ba66b29
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 22 deletions.
1 change: 1 addition & 0 deletions java/dagger/hilt/processor/internal/BUILD
Expand Up @@ -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",
Expand Down
30 changes: 25 additions & 5 deletions java/dagger/hilt/processor/internal/Processors.java
Expand Up @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -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());
}
Expand Down
Expand Up @@ -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 {
Expand All @@ -44,7 +40,6 @@ void generate() throws IOException {
.addMember("earlyEntryPoint", "$S", earlyEntryPoint.getQualifiedName())
.build(),
earlyEntryPoint,
getClass(),
env);
getClass());
}
}
Expand Up @@ -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;
Expand All @@ -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. */
Expand All @@ -42,10 +40,6 @@ public ImmutableSet<String> 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();
}
}

0 comments on commit ba66b29

Please sign in to comment.