aboutsummaryrefslogtreecommitdiff
path: root/java/dagger/hilt/processor
diff options
context:
space:
mode:
authorBrad Corso <bcorso@google.com>2021-02-24 16:40:20 -0800
committerDagger Team <dagger-dev+copybara@google.com>2021-02-24 16:44:41 -0800
commit1ad74b995bf337bbb281f16a2ec20f3cabdf83d2 (patch)
tree30c84129efcf6370e64ddbc0f35b0d2d13eafa61 /java/dagger/hilt/processor
parent289f59fe8e4f8081761aa88c97b43054c3f0124e (diff)
downloaddagger2-1ad74b995bf337bbb281f16a2ec20f3cabdf83d2.tar.gz
Follow-up changes to the EarlyEntryPoint API
This CL changes the usage of @EarlyEntryPoint from being an addition to @EntryPoint to being a replacement for @EntryPoint. It also adds the @Beta annotation to the API. RELNOTES=N/A PiperOrigin-RevId: 359399064
Diffstat (limited to 'java/dagger/hilt/processor')
-rw-r--r--java/dagger/hilt/processor/BUILD2
-rw-r--r--java/dagger/hilt/processor/internal/aggregateddeps/AggregatedDepsProcessor.java23
-rw-r--r--java/dagger/hilt/processor/internal/aggregateddeps/PkgPrivateEntryPointGenerator.java5
3 files changed, 23 insertions, 7 deletions
diff --git a/java/dagger/hilt/processor/BUILD b/java/dagger/hilt/processor/BUILD
index 03d1e12ac..87adcf34f 100644
--- a/java/dagger/hilt/processor/BUILD
+++ b/java/dagger/hilt/processor/BUILD
@@ -27,7 +27,6 @@ java_library(
"//java/dagger/hilt/android/processor/internal/androidentrypoint:processor_lib",
"//java/dagger/hilt/android/processor/internal/bindvalue:bind_value_processor_lib",
"//java/dagger/hilt/android/processor/internal/customtestapplication:processor_lib",
- "//java/dagger/hilt/android/processor/internal/earlyentrypoint:processor_lib",
"//java/dagger/hilt/android/processor/internal/uninstallmodules:processor_lib",
"//java/dagger/hilt/android/processor/internal/viewmodel:processor_lib",
"//java/dagger/hilt/android/processor/internal/viewmodel:validation_plugin_lib",
@@ -64,7 +63,6 @@ gen_maven_artifact(
"//java/dagger/hilt/android/processor/internal/androidentrypoint:processor_lib",
"//java/dagger/hilt/android/processor/internal/bindvalue:bind_value_processor_lib",
"//java/dagger/hilt/android/processor/internal/customtestapplication:processor_lib",
- "//java/dagger/hilt/android/processor/internal/earlyentrypoint:processor_lib",
"//java/dagger/hilt/android/processor/internal/viewmodel:validation_plugin_lib",
"//java/dagger/hilt/android/processor/internal/uninstallmodules:processor_lib",
"//java/dagger/hilt/android/processor/internal/viewmodel:processor_lib",
diff --git a/java/dagger/hilt/processor/internal/aggregateddeps/AggregatedDepsProcessor.java b/java/dagger/hilt/processor/internal/aggregateddeps/AggregatedDepsProcessor.java
index 88c4fc76c..2ac0b3d03 100644
--- a/java/dagger/hilt/processor/internal/aggregateddeps/AggregatedDepsProcessor.java
+++ b/java/dagger/hilt/processor/internal/aggregateddeps/AggregatedDepsProcessor.java
@@ -65,6 +65,7 @@ public final class AggregatedDepsProcessor extends BaseProcessor {
private static final ImmutableSet<ClassName> ENTRY_POINT_ANNOTATIONS =
ImmutableSet.of(
ClassNames.ENTRY_POINT,
+ ClassNames.EARLY_ENTRY_POINT,
ClassNames.GENERATED_ENTRY_POINT,
ClassNames.COMPONENT_ENTRY_POINT);
@@ -308,6 +309,28 @@ public final class AggregatedDepsProcessor extends BaseProcessor {
element);
TypeElement entryPoint = asType(element);
+ if (entryPointAnnotation.equals(ClassNames.EARLY_ENTRY_POINT)) {
+ ImmutableSet<ClassName> components = Components.getComponents(getElementUtils(), element);
+ ProcessorErrors.checkState(
+ components.equals(ImmutableSet.of(ClassNames.SINGLETON_COMPONENT)),
+ element,
+ "@EarlyEntryPoint can only be installed into the SingletonComponent. Found: %s",
+ components);
+
+ Optional<TypeElement> optionalTestElement =
+ Processors.getOriginatingTestElement(element, getElementUtils());
+ ProcessorErrors.checkState(
+ !optionalTestElement.isPresent(),
+ element,
+ "@EarlyEntryPoint-annotated entry point, %s, cannot be nested in (or originate from) "
+ + "a @HiltAndroidTest-annotated class, %s. This requirement is to avoid confusion "
+ + "with other, test-specific entry points.",
+ asType(element).getQualifiedName().toString(),
+ optionalTestElement
+ .map(testElement -> testElement.getQualifiedName().toString())
+ .orElse(""));
+ }
+
generateAggregatedDeps(
entryPointAnnotation.equals(ClassNames.COMPONENT_ENTRY_POINT)
? "componentEntryPoints"
diff --git a/java/dagger/hilt/processor/internal/aggregateddeps/PkgPrivateEntryPointGenerator.java b/java/dagger/hilt/processor/internal/aggregateddeps/PkgPrivateEntryPointGenerator.java
index fee4330d7..6dac59fb7 100644
--- a/java/dagger/hilt/processor/internal/aggregateddeps/PkgPrivateEntryPointGenerator.java
+++ b/java/dagger/hilt/processor/internal/aggregateddeps/PkgPrivateEntryPointGenerator.java
@@ -19,7 +19,6 @@ package dagger.hilt.processor.internal.aggregateddeps;
import com.squareup.javapoet.AnnotationSpec;
import com.squareup.javapoet.JavaFile;
import com.squareup.javapoet.TypeSpec;
-import dagger.hilt.processor.internal.ClassNames;
import dagger.hilt.processor.internal.Processors;
import java.io.IOException;
import javax.annotation.processing.ProcessingEnvironment;
@@ -70,10 +69,6 @@ final class PkgPrivateEntryPointGenerator {
AnnotationSpec.get(metadata.getOptionalInstallInAnnotationMirror().get()));
}
- if (Processors.hasAnnotation(metadata.getTypeElement(), ClassNames.EARLY_ENTRY_POINT)) {
- entryPointInterfaceBuilder.addAnnotation(ClassNames.EARLY_ENTRY_POINT);
- }
-
JavaFile.builder(
metadata.generatedClassName().packageName(), entryPointInterfaceBuilder.build())
.build()