Dialer: Remove the remainder of DialerVariants
Change-Id: I6ce026531f7b49c044bcc0f8763448a276a7ce5b
diff --git a/Android.mk b/Android.mk
index 1fb4981..970eba5 100644
--- a/Android.mk
+++ b/Android.mk
@@ -140,8 +140,6 @@
LOCAL_SRC_FILES := \
$(call all-java-files-under, $(BASE_DIR)/dialer/rootcomponentgenerator) \
- $(BASE_DIR)/dialer/inject/DialerRootComponent.java \
- $(BASE_DIR)/dialer/inject/DialerVariant.java \
$(BASE_DIR)/dialer/inject/HasRootComponent.java \
$(BASE_DIR)/dialer/inject/IncludeInDialerRoot.java \
$(BASE_DIR)/dialer/inject/RootComponentGeneratorMetadata.java
diff --git a/java/com/android/dialer/inject/DialerRootComponent.java b/java/com/android/dialer/inject/DialerRootComponent.java
deleted file mode 100644
index e508e17..0000000
--- a/java/com/android/dialer/inject/DialerRootComponent.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.inject;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * Annotates the place with this annotation when a RootComponent is needed.
- *
- * <p>Usually users put this annotation on application class that is root of dependencies (the last
- * thing to compile). The annotation processor will figure out what it needs to generate a variant
- * root through dependencies.
- *
- * <p>Example:
- *
- * <pre>
- * <code>
- * @DialerRootComponent(variant = DialerVariant.DIALER_AOSP)
- * public class RootDialerAosp {}
- * </code>
- * </pre>
- */
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.SOURCE)
-public @interface DialerRootComponent {
- DialerVariant variant();
-
- Class<?> injectClass() default Object.class;
-}
diff --git a/java/com/android/dialer/inject/DialerVariant.java b/java/com/android/dialer/inject/DialerVariant.java
deleted file mode 100644
index 2e5794f..0000000
--- a/java/com/android/dialer/inject/DialerVariant.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.inject;
-
-/** Represents all dialer variants. */
-public enum DialerVariant {
- // AOSP Dialer variants
- DIALER_AOSP("DialerAosp"),
- DIALER_AOSP_ESPRESSO("DialerAospEspresso"),
- DIALER_ROBOLECTRIC("DialerRobolectric"),
-
-
-
- // TEST variant will be used in situations where we need create in-test application class which
- // doesn't belong to any variants listed above
- DIALER_TEST("DialerTest"),
- // Just for sample code in inject/demo.
- DIALER_DEMO("DialerDemo");
-
- private final String variant;
-
- DialerVariant(String variant) {
- this.variant = variant;
- }
-
- @Override
- public String toString() {
- return variant;
- }
-}
diff --git a/java/com/android/dialer/rootcomponentgenerator/RootComponentGeneratingStep.java b/java/com/android/dialer/rootcomponentgenerator/RootComponentGeneratingStep.java
deleted file mode 100644
index 8a82f86..0000000
--- a/java/com/android/dialer/rootcomponentgenerator/RootComponentGeneratingStep.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-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;
-import com.android.dialer.inject.IncludeInDialerRoot;
-import com.android.dialer.inject.RootComponentGeneratorMetadata;
-import com.google.auto.common.BasicAnnotationProcessor.ProcessingStep;
-import com.google.auto.common.MoreElements;
-import com.google.common.base.Optional;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.SetMultimap;
-import com.squareup.javapoet.AnnotationSpec;
-import com.squareup.javapoet.ClassName;
-import com.squareup.javapoet.MethodSpec;
-import com.squareup.javapoet.TypeSpec;
-import dagger.Component;
-import java.lang.annotation.Annotation;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Set;
-import javax.annotation.processing.ProcessingEnvironment;
-import javax.inject.Singleton;
-import javax.lang.model.element.AnnotationMirror;
-import javax.lang.model.element.Element;
-import javax.lang.model.element.Modifier;
-import javax.lang.model.element.PackageElement;
-import javax.lang.model.element.TypeElement;
-import javax.lang.model.type.TypeMirror;
-
-/**
- * Generates root component for a java type annotated with {@link DialerRootComponent}.
- *
- * <p>If users use {@link GenerateTestDaggerApp} along with RootComponentGenerator, there's an
- * optional method that they can use to inject instance in the test.
- *
- * <p>Example:
- *
- * <p>
- *
- * <pre>
- * <code>
- * @Inject SomeThing someThing;
- * @Before
- * public void setUp() {
- * ...
- * TestApplication application = (TestApplication) RuntimeEnvironment.application;
- * TestComponent component = (TestComponent) application.component();
- * component.inject(this);
- * ...
- * }
- * </code>
- * </pre>
- */
-final class RootComponentGeneratingStep implements ProcessingStep {
-
- private final ProcessingEnvironment processingEnv;
-
- public RootComponentGeneratingStep(ProcessingEnvironment processingEnv) {
- this.processingEnv = processingEnv;
- }
-
- @Override
- public Set<? extends Class<? extends Annotation>> annotations() {
- return ImmutableSet.of(DialerRootComponent.class, IncludeInDialerRoot.class);
- }
-
- @Override
- public Set<? extends Element> process(
- SetMultimap<Class<? extends Annotation>, Element> elementsByAnnotation) {
- for (Element element : elementsByAnnotation.get(DialerRootComponent.class)) {
- // defer root components to the next round. Annotation processor cannot detect metadata files
- // generated in the same round and the metadata is accessible in the next round.
- if (shouldDeferRootComponent(elementsByAnnotation)) {
- return elementsByAnnotation.get(DialerRootComponent.class);
- } else {
- generateRootComponent(MoreElements.asType(element));
- }
- }
- return Collections.emptySet();
- }
-
- private boolean shouldDeferRootComponent(
- SetMultimap<Class<? extends Annotation>, Element> elementsByAnnotation) {
- return elementsByAnnotation.containsKey(IncludeInDialerRoot.class);
- }
-
- /**
- * Generates a root component.
- *
- * @param rootElement the annotated type with {@link DialerRootComponent} used in annotation
- * processor.
- */
- private void generateRootComponent(TypeElement rootElement) {
- DialerRootComponent dialerRootComponent = rootElement.getAnnotation(DialerRootComponent.class);
- List<TypeElement> componentList = generateComponentList();
- DialerVariant dialerVariant = dialerRootComponent.variant();
- TypeSpec.Builder rootComponentClassBuilder =
- TypeSpec.interfaceBuilder(dialerVariant.toString())
- .addModifiers(Modifier.PUBLIC)
- .addAnnotation(Singleton.class);
- for (TypeElement componentWithSuperInterface : componentList) {
- rootComponentClassBuilder.addSuperinterface(ClassName.get(componentWithSuperInterface));
- }
- AnnotationSpec.Builder componentAnnotation = AnnotationSpec.builder(Component.class);
- rootComponentClassBuilder.addAnnotation(componentAnnotation.build());
-
- AnnotationMirror dialerRootComponentMirror =
- getAnnotationMirror(rootElement, DialerRootComponent.class).get();
-
- TypeMirror annotatedTestClass =
- (TypeMirror) getAnnotationValue(dialerRootComponentMirror, "injectClass").getValue();
-
- rootComponentClassBuilder.addMethod(generateInjectMethod(annotatedTestClass));
-
- TypeSpec rootComponentClass = rootComponentClassBuilder.build();
- RootComponentUtils.writeJavaFile(
- processingEnv, ClassName.get(rootElement).packageName(), rootComponentClass);
- }
-
- private List<TypeElement> generateComponentList() {
- List<TypeElement> list = new ArrayList<>();
- extractInfoFromMetadata(IncludeInDialerRoot.class, list::add);
- return list;
- }
-
- private void extractInfoFromMetadata(
- 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);
- if (isAnnotationPresent(element, RootComponentGeneratorMetadata.class)
- && getAnnotationValue(metadataAnnotation.get(), "tag")
- .getValue()
- .equals(annotation.getSimpleName())) {
- TypeMirror annotatedClass =
- (TypeMirror) getAnnotationValue(metadataAnnotation.get(), "annotatedClass").getValue();
- TypeElement annotatedElement =
- processingEnv.getElementUtils().getTypeElement(annotatedClass.toString());
- metadataProcessor.process(annotatedElement);
- }
- }
- }
-
- private MethodSpec generateInjectMethod(TypeMirror testClassTypeMirror) {
- return MethodSpec.methodBuilder("inject")
- .addModifiers(Modifier.PUBLIC, Modifier.ABSTRACT)
- .returns(void.class)
- .addParameter(ClassName.get(testClassTypeMirror), "clazz")
- .build();
- }
-
- private interface MetadataProcessor {
- void process(TypeElement typeElement);
- }
-}
diff --git a/java/com/android/dialer/rootcomponentgenerator/RootComponentProcessor.java b/java/com/android/dialer/rootcomponentgenerator/RootComponentProcessor.java
index e5086aa..84d1961 100644
--- a/java/com/android/dialer/rootcomponentgenerator/RootComponentProcessor.java
+++ b/java/com/android/dialer/rootcomponentgenerator/RootComponentProcessor.java
@@ -29,7 +29,7 @@
@Override
protected Iterable<? extends ProcessingStep> initSteps() {
return ImmutableList.of(
- new MetadataGeneratingStep(processingEnv), new RootComponentGeneratingStep(processingEnv));
+ new MetadataGeneratingStep(processingEnv));
}
@Override