diff options
author | Eric Chang <erichang@google.com> | 2021-01-19 15:43:47 -0800 |
---|---|---|
committer | Dagger Team <dagger-dev+copybara@google.com> | 2021-01-19 15:45:04 -0800 |
commit | b9325a45c4c73a5c5518d50f8ccf91a320e4661b (patch) | |
tree | e00072daca9bcac06b435d2f7aa556823b9c7cd5 /java/dagger/hilt/processor/internal | |
parent | 94a55bc7f786b24bc5e700bf50aa9671cb2f4feb (diff) | |
download | dagger2-b9325a45c4c73a5c5518d50f8ccf91a320e4661b.tar.gz |
Add back the deprecated ApplicationComponent since hilt-work latest release still uses it.
RELNOTES=Add back the deprecated ApplicationComponent.
PiperOrigin-RevId: 352671220
Diffstat (limited to 'java/dagger/hilt/processor/internal')
4 files changed, 28 insertions, 4 deletions
diff --git a/java/dagger/hilt/processor/internal/ClassNames.java b/java/dagger/hilt/processor/internal/ClassNames.java index 234ea7b45..776eb59f4 100644 --- a/java/dagger/hilt/processor/internal/ClassNames.java +++ b/java/dagger/hilt/processor/internal/ClassNames.java @@ -167,6 +167,8 @@ public final class ClassNames { public static final ClassName ARRAYS = get("java.util", "Arrays"); // Standard components + public static final ClassName LEGACY_APPLICATION_COMPONENT = + get("dagger.hilt.android.components", "ApplicationComponent"); public static final ClassName SINGLETON_COMPONENT = get("dagger.hilt.components", "SingletonComponent"); public static final ClassName ACTIVITY_COMPONENT = diff --git a/java/dagger/hilt/processor/internal/Components.java b/java/dagger/hilt/processor/internal/Components.java index 661dd8a9b..9ea7e64e7 100644 --- a/java/dagger/hilt/processor/internal/Components.java +++ b/java/dagger/hilt/processor/internal/Components.java @@ -93,16 +93,19 @@ public final class Components { || Processors.hasAnnotation(element, ClassNames.TEST_INSTALL_IN)); ImmutableSet<TypeElement> components = - ImmutableSet.copyOf( Processors.hasAnnotation(element, ClassNames.INSTALL_IN) ? Processors.getAnnotationClassValues( elements, Processors.getAnnotationMirror(element, ClassNames.INSTALL_IN), - "value") + "value").stream() + .map(component -> mapComponents(elements, component)) + .collect(toImmutableSet()) : Processors.getAnnotationClassValues( elements, Processors.getAnnotationMirror(element, ClassNames.TEST_INSTALL_IN), - "components")); + "components").stream() + .map(component -> mapComponents(elements, component)) + .collect(toImmutableSet()); ImmutableSet<TypeElement> undefinedComponents = components.stream() @@ -118,5 +121,16 @@ public final class Components { return components.stream().map(ClassName::get).collect(toImmutableSet()); } + // Temporary hack while ApplicationComponent is renamed to SingletonComponent + private static TypeElement mapComponents(Elements elements, TypeElement element) { + if (ClassNames.LEGACY_APPLICATION_COMPONENT.equals(ClassName.get(element))) { + TypeElement singletonComponent = + elements.getTypeElement(ClassNames.SINGLETON_COMPONENT.canonicalName()); + Preconditions.checkState(singletonComponent != null); + return singletonComponent; + } + return element; + } + private Components() {} } diff --git a/java/dagger/hilt/processor/internal/aggregateddeps/ComponentDependencies.java b/java/dagger/hilt/processor/internal/aggregateddeps/ComponentDependencies.java index 23ed148c0..d943faf72 100644 --- a/java/dagger/hilt/processor/internal/aggregateddeps/ComponentDependencies.java +++ b/java/dagger/hilt/processor/internal/aggregateddeps/ComponentDependencies.java @@ -243,7 +243,7 @@ public abstract class ComponentDependencies { // processor since new processors should convert to the new SingletonComponent when generating // the metadata class. if (descriptor.component().equals(ClassNames.SINGLETON_COMPONENT)) { - builder.put("dagger.hilt.android.components.ApplicationComponent", descriptor); + builder.put(ClassNames.LEGACY_APPLICATION_COMPONENT.toString(), descriptor); } builder.put(descriptor.component().toString(), descriptor); } diff --git a/java/dagger/hilt/processor/internal/definecomponent/DefineComponentMetadatas.java b/java/dagger/hilt/processor/internal/definecomponent/DefineComponentMetadatas.java index aa69e40e1..fde80265b 100644 --- a/java/dagger/hilt/processor/internal/definecomponent/DefineComponentMetadatas.java +++ b/java/dagger/hilt/processor/internal/definecomponent/DefineComponentMetadatas.java @@ -61,6 +61,13 @@ final class DefineComponentMetadatas { } private DefineComponentMetadata get(Element element, LinkedHashSet<Element> childPath) { + // This is a temporary hack to map the old ApplicationComponent to the new SingletonComponent + if (element.getKind().equals(ElementKind.INTERFACE) + && asType(element).getQualifiedName() + .contentEquals(ClassNames.LEGACY_APPLICATION_COMPONENT.toString())) { + element = asTypeElement(asType(element).getInterfaces().get(0)); + } + if (!metadatas.containsKey(element)) { metadatas.put(element, getUncached(element, childPath)); } @@ -152,6 +159,7 @@ final class DefineComponentMetadatas { ProcessorErrors.checkState( ClassName.get(parent).equals(ClassNames.DEFINE_COMPONENT_NO_PARENT) + || ClassName.get(parent).equals(ClassNames.LEGACY_APPLICATION_COMPONENT) || Processors.hasAnnotation(parent, ClassNames.DEFINE_COMPONENT), component, "@DefineComponent %s, references a type not annotated with @DefineComponent: %s", |