diff options
Diffstat (limited to 'compiler/src/main/java/android/databinding/tool/CompilerChef.java')
-rw-r--r-- | compiler/src/main/java/android/databinding/tool/CompilerChef.java | 44 |
1 files changed, 32 insertions, 12 deletions
diff --git a/compiler/src/main/java/android/databinding/tool/CompilerChef.java b/compiler/src/main/java/android/databinding/tool/CompilerChef.java index d93d701d..029fb472 100644 --- a/compiler/src/main/java/android/databinding/tool/CompilerChef.java +++ b/compiler/src/main/java/android/databinding/tool/CompilerChef.java @@ -23,14 +23,19 @@ import android.databinding.tool.store.FeatureInfoList; import android.databinding.tool.store.GenClassInfoLog; import android.databinding.tool.store.ResourceBundle; import android.databinding.tool.util.L; +import android.databinding.tool.util.StringUtils; import android.databinding.tool.writer.BindingMapperWriter; import android.databinding.tool.writer.BindingMapperWriterV2; import android.databinding.tool.writer.JavaFileWriter; import android.databinding.tool.writer.MergedBindingMapperWriter; import com.android.annotations.NonNull; import com.android.annotations.Nullable; +import com.google.common.base.Splitter; +import com.google.common.collect.Lists; +import com.google.common.collect.Sets; import com.squareup.javapoet.JavaFile; import com.squareup.javapoet.TypeSpec; +import org.jetbrains.annotations.NotNull; import javax.annotation.processing.ProcessingEnvironment; import javax.lang.model.element.TypeElement; @@ -42,6 +47,7 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.SortedSet; import java.util.TreeSet; import java.util.stream.Collectors; @@ -189,18 +195,8 @@ public class CompilerChef { List<String> modulePackages) { if (compilerArgs.isEnableV2()) { // figure out which mappers exists as they may not exist for v1 libs. - Set<String> availableDependencyModules = modulePackages.stream() - .filter(modulePackage -> { - if (modulePackage.equals(compilerArgs.getModulePackage())) { - // I'm not a dependency - return false; - } - String mapper = BindingMapperWriterV2.createMapperQName(modulePackage); - TypeElement impl = processingEnv - .getElementUtils() - .getTypeElement(mapper); - return impl != null; - }).distinct().collect(Collectors.toCollection(TreeSet::new)); + SortedSet<String> availableDependencyModules = getDirectDependencies( + processingEnv, compilerArgs, modulePackages); final boolean generateMapper; if (compilerArgs.isApp()) { // generate mapper for apps only if it is not test or enabled for tests. @@ -244,6 +240,30 @@ public class CompilerChef { } } + @NotNull + private SortedSet<String> getDirectDependencies( + ProcessingEnvironment processingEnv, + CompilerArguments compilerArgs, + List<String> modulePackages) { + TreeSet<String> explicitPkgs = compilerArgs.parseDirectDependencyPackages(); + if (explicitPkgs != null) { + // used the value specified by the compiler + return Sets.newTreeSet(explicitPkgs); + } + return modulePackages.stream() + .filter(modulePackage -> { + if (modulePackage.equals(compilerArgs.getModulePackage())) { + // I'm not a dependency + return false; + } + String mapper = BindingMapperWriterV2.createMapperQName(modulePackage); + TypeElement impl = processingEnv + .getElementUtils() + .getTypeElement(mapper); + return impl != null; + }).distinct().collect(Collectors.toCollection(TreeSet::new)); + } + public boolean useAndroidX() { return ModelAnalyzer.getInstance().libTypes.getUseAndroidX(); } |