Skip to content

Commit 5fd8ec1

Browse files
bcorsoDagger Team
authored andcommitted
Add the originating element in LazyMapKeyProxyGenerator.
Forgetting the originating element was an oversight. Gradle's incremental processing requires originating elements to determine when to reprocess files. This CL fixes `LazyMapKeyProxyGenerator` by extending `SourceFileGenerator`, which takes care of assigning the originating element. In addition, it removes some duplicate code that's already handled in `SourceFileGenerator` (e.g. adding the generated and suppress annotations). Fixes #4526 RELNOTES=Fixes #4526: Add the originating element in LazyMapKeyProxyGenerator. PiperOrigin-RevId: 702869366
1 parent 384ad08 commit 5fd8ec1

File tree

1 file changed

+20
-44
lines changed

1 file changed

+20
-44
lines changed

java/dagger/internal/codegen/writing/LazyMapKeyProxyGenerator.java

Lines changed: 20 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -20,73 +20,49 @@
2020
import static dagger.internal.codegen.binding.MapKeys.KEEP_FIELD_TYPE_FIELD;
2121
import static dagger.internal.codegen.binding.MapKeys.LAZY_CLASS_KEY_NAME_FIELD;
2222
import static dagger.internal.codegen.binding.MapKeys.lazyClassKeyProxyClassName;
23-
import static dagger.internal.codegen.javapoet.AnnotationSpecs.Suppression.CAST;
24-
import static dagger.internal.codegen.javapoet.AnnotationSpecs.Suppression.DEPRECATION;
25-
import static dagger.internal.codegen.javapoet.AnnotationSpecs.Suppression.KOTLIN_INTERNAL;
26-
import static dagger.internal.codegen.javapoet.AnnotationSpecs.Suppression.RAWTYPES;
27-
import static dagger.internal.codegen.javapoet.AnnotationSpecs.Suppression.UNCHECKED;
2823
import static javax.lang.model.element.Modifier.FINAL;
2924
import static javax.lang.model.element.Modifier.PUBLIC;
3025
import static javax.lang.model.element.Modifier.STATIC;
3126

27+
import androidx.room.compiler.processing.XElement;
3228
import androidx.room.compiler.processing.XFiler;
3329
import androidx.room.compiler.processing.XMethodElement;
3430
import androidx.room.compiler.processing.XProcessingEnv;
3531
import com.google.common.collect.ImmutableList;
36-
import com.google.common.collect.ImmutableSet;
37-
import com.squareup.javapoet.AnnotationSpec;
3832
import com.squareup.javapoet.ClassName;
3933
import com.squareup.javapoet.FieldSpec;
40-
import com.squareup.javapoet.JavaFile;
4134
import com.squareup.javapoet.TypeSpec;
42-
import dagger.internal.DaggerGenerated;
43-
import dagger.internal.codegen.javapoet.AnnotationSpecs;
44-
import dagger.internal.codegen.javapoet.AnnotationSpecs.Suppression;
35+
import dagger.internal.codegen.base.SourceFileGenerator;
4536
import dagger.internal.codegen.javapoet.TypeNames;
46-
import java.util.Optional;
4737
import javax.inject.Inject;
4838

4939
/**
5040
* Generate a class containing fields that works with proguard rules to support @LazyClassKey
5141
* usages.
5242
*/
53-
public final class LazyMapKeyProxyGenerator {
54-
private static final String GENERATED_COMMENTS = "https://dagger.dev";
55-
private final XProcessingEnv processingEnv;
56-
private final XFiler filer;
43+
public final class LazyMapKeyProxyGenerator extends SourceFileGenerator<XMethodElement> {
5744

5845
@Inject
59-
LazyMapKeyProxyGenerator(XProcessingEnv processingEnv, XFiler filer) {
60-
this.processingEnv = processingEnv;
61-
this.filer = filer;
46+
LazyMapKeyProxyGenerator(XFiler filer, XProcessingEnv processingEnv) {
47+
super(filer, processingEnv);
6248
}
6349

64-
public void generate(XMethodElement element) {
65-
ClassName lazyClassKeyProxyClassName = lazyClassKeyProxyClassName(element);
66-
TypeSpec.Builder typeSpecBuilder =
67-
classBuilder(lazyClassKeyProxyClassName)
68-
.addModifiers(PUBLIC, FINAL)
69-
.addAnnotation(TypeNames.IDENTIFIER_NAME_STRING)
70-
.addAnnotation(DaggerGenerated.class)
71-
.addFields(lazyClassKeyFields(element));
72-
Optional<AnnotationSpec> generatedAnnotation =
73-
Optional.ofNullable(processingEnv.findGeneratedAnnotation())
74-
.map(
75-
annotation ->
76-
AnnotationSpec.builder(annotation.getClassName())
77-
.addMember("value", "$S", "dagger.internal.codegen.LazyClassKeyProcessor")
78-
.addMember("comments", "$S", GENERATED_COMMENTS)
79-
.build());
80-
generatedAnnotation.ifPresent(typeSpecBuilder::addAnnotation);
81-
typeSpecBuilder.addAnnotation(
82-
AnnotationSpecs.suppressWarnings(
83-
ImmutableSet.<Suppression>builder()
84-
.add(UNCHECKED, RAWTYPES, KOTLIN_INTERNAL, CAST, DEPRECATION)
85-
.build()));
50+
@Override
51+
public XElement originatingElement(XMethodElement input) {
52+
return input;
53+
}
54+
55+
@Override
56+
public ImmutableList<TypeSpec.Builder> topLevelTypes(XMethodElement input) {
57+
return ImmutableList.of(lazyClassKeyProxyTypeSpec(input).toBuilder());
58+
}
8659

87-
filer.write(
88-
JavaFile.builder(lazyClassKeyProxyClassName.packageName(), typeSpecBuilder.build()).build(),
89-
XFiler.Mode.Isolating);
60+
private TypeSpec lazyClassKeyProxyTypeSpec(XMethodElement element) {
61+
return classBuilder(lazyClassKeyProxyClassName(element))
62+
.addModifiers(PUBLIC, FINAL)
63+
.addAnnotation(TypeNames.IDENTIFIER_NAME_STRING)
64+
.addFields(lazyClassKeyFields(element))
65+
.build();
9066
}
9167

9268
private static ImmutableList<FieldSpec> lazyClassKeyFields(XMethodElement element) {

0 commit comments

Comments
 (0)