summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/rootcomponentgenerator
diff options
context:
space:
mode:
authorweijiaxu <weijiaxu@google.com>2018-04-18 16:22:33 -0700
committerCopybara-Service <copybara-piper@google.com>2018-04-18 16:51:04 -0700
commit560eb125b437fef71e624327a024853dd9bc06ea (patch)
tree07e3197d0a4f8759eff7de0f528829c13d9dfc07 /java/com/android/dialer/rootcomponentgenerator
parentad11c3f4f2063d216422f2405ce92639afebf071 (diff)
Add support for adding module in the same class annotated with @DialerRootComponent.
Test: local test. PiperOrigin-RevId: 193435828 Change-Id: Ieb2be7c7d3e2861c0d2f32f1461535e439dbcb1a
Diffstat (limited to 'java/com/android/dialer/rootcomponentgenerator')
-rw-r--r--java/com/android/dialer/rootcomponentgenerator/RootComponentGeneratingStep.java22
1 files changed, 20 insertions, 2 deletions
diff --git a/java/com/android/dialer/rootcomponentgenerator/RootComponentGeneratingStep.java b/java/com/android/dialer/rootcomponentgenerator/RootComponentGeneratingStep.java
index 61c326a3c..4c4e6ee8d 100644
--- a/java/com/android/dialer/rootcomponentgenerator/RootComponentGeneratingStep.java
+++ b/java/com/android/dialer/rootcomponentgenerator/RootComponentGeneratingStep.java
@@ -19,6 +19,7 @@ package com.android.dialer.rootcomponentgenerator;
import static com.google.auto.common.AnnotationMirrors.getAnnotationValue;
import static com.google.auto.common.MoreElements.getAnnotationMirror;
import static com.google.auto.common.MoreElements.isAnnotationPresent;
+import static javax.tools.Diagnostic.Kind.ERROR;
import com.android.dialer.inject.DialerRootComponent;
import com.android.dialer.inject.DialerVariant;
@@ -61,14 +62,22 @@ final class RootComponentGeneratingStep implements ProcessingStep {
@Override
public Set<? extends Class<? extends Annotation>> annotations() {
- return ImmutableSet.of(DialerRootComponent.class);
+ return ImmutableSet.of(DialerRootComponent.class, InstallIn.class, IncludeInDialerRoot.class);
}
@Override
public Set<? extends Element> process(
SetMultimap<Class<? extends Annotation>, Element> elementsByAnnotation) {
for (Element element : elementsByAnnotation.get(DialerRootComponent.class)) {
- generateRootComponent(MoreElements.asType(element));
+ // defer root components to the next round in case where the current build target contains
+ // elements annotated with @InstallIn. Annotation processor cannot detect metadata files
+ // generated in the same round and the metadata is accessible in the next round.
+ if (elementsByAnnotation.containsKey(InstallIn.class)
+ || elementsByAnnotation.containsKey(IncludeInDialerRoot.class)) {
+ return elementsByAnnotation.get(DialerRootComponent.class);
+ } else {
+ generateRootComponent(MoreElements.asType(element));
+ }
}
return Collections.emptySet();
}
@@ -124,6 +133,15 @@ final class RootComponentGeneratingStep implements ProcessingStep {
Class<? extends Annotation> annotation, MetadataProcessor metadataProcessor) {
PackageElement cachePackage =
processingEnv.getElementUtils().getPackageElement(RootComponentUtils.METADATA_PACKAGE_NAME);
+ if (cachePackage == null) {
+ processingEnv
+ .getMessager()
+ .printMessage(
+ ERROR,
+ "Metadata haven't been generated! do you forget to add modules "
+ + "or components in dependency of dialer root?");
+ return;
+ }
for (Element element : cachePackage.getEnclosedElements()) {
Optional<AnnotationMirror> metadataAnnotation =
getAnnotationMirror(element, RootComponentGeneratorMetadata.class);