summaryrefslogtreecommitdiff
path: root/compiler/src/main/kotlin/android/databinding
diff options
context:
space:
mode:
authorYigit Boyar <yboyar@google.com>2018-03-20 11:08:44 -0700
committerYigit Boyar <yboyar@google.com>2018-03-30 16:13:06 -0700
commit38a2cc526274fa18ea807ca9b807a632a119dd54 (patch)
treecb554719d61439143cbc449fa98187be22326d97 /compiler/src/main/kotlin/android/databinding
parentb7bc711dd022e5338d0d58595148cbacc792d9d9 (diff)
downloaddata-binding-38a2cc526274fa18ea807ca9b807a632a119dd54.tar.gz
Data Binding Android X support
This CL adds partial support for Android X. We duplicate baseLibrary and extensions (runtime libs) to have copies that are in the androidX namespace. Gradle picks the right version to include based on shared androidX flag. Right now, we have only 1 test that use androidX (DataBindingIncrementalTest) so all other tests still use the old package. I'll add testing for androidX in a followup CL. Bug: 77166878 Test: existing tests pass Change-Id: I77ec65b872cae0821513ca78ef9b6ab1b0300ed1
Diffstat (limited to 'compiler/src/main/kotlin/android/databinding')
-rw-r--r--compiler/src/main/kotlin/android/databinding/tool/writer/BindingMapperWriter.kt12
-rw-r--r--compiler/src/main/kotlin/android/databinding/tool/writer/BindingMapperWriterV2.kt31
-rw-r--r--compiler/src/main/kotlin/android/databinding/tool/writer/LayoutBinderWriter.kt76
-rw-r--r--compiler/src/main/kotlin/android/databinding/tool/writer/MergedBindingMapperWriter.kt33
4 files changed, 79 insertions, 73 deletions
diff --git a/compiler/src/main/kotlin/android/databinding/tool/writer/BindingMapperWriter.kt b/compiler/src/main/kotlin/android/databinding/tool/writer/BindingMapperWriter.kt
index 70921a52..5c07af1a 100644
--- a/compiler/src/main/kotlin/android/databinding/tool/writer/BindingMapperWriter.kt
+++ b/compiler/src/main/kotlin/android/databinding/tool/writer/BindingMapperWriter.kt
@@ -15,14 +15,15 @@ package android.databinding.tool.writer
import android.databinding.tool.DataBindingCompilerArgs
import android.databinding.tool.LayoutBinder
-import android.databinding.tool.ext.N
+import android.databinding.tool.LibTypes
class BindingMapperWriter(var pkg : String, var className: String,
val layoutBinders : List<LayoutBinder>,
- val compilerArgs: DataBindingCompilerArgs) {
+ val compilerArgs: DataBindingCompilerArgs,
+ val libTypes: LibTypes) {
private val appClassName : String = className
private val testClassName = "Test$className"
- private val baseMapperClassName = "android.databinding.DataBinderMapper"
+ private val baseMapperClassName = libTypes.dataBinderMapper
val generateAsTest = compilerArgs.isTestVariant && compilerArgs.isApp
val generateTestOverride = !generateAsTest && compilerArgs.isEnabledForTests
init {
@@ -59,7 +60,7 @@ class BindingMapperWriter(var pkg : String, var className: String,
}
nl("")
nl("@Override")
- block("public android.databinding.ViewDataBinding getDataBinder(android.databinding.DataBindingComponent bindingComponent, android.view.View view, int layoutId)") {
+ block("public ${libTypes.viewDataBinding} getDataBinder(${libTypes.dataBindingComponent} bindingComponent, android.view.View view, int layoutId)") {
block("switch(layoutId)") {
layoutBinders.groupBy{it.layoutname }.forEach {
val firstVal = it.value[0]
@@ -90,8 +91,7 @@ class BindingMapperWriter(var pkg : String, var className: String,
nl("return null;")
}
nl("@Override")
- block("public android.databinding.ViewDataBinding getDataBinder(android.databinding" +
- ".DataBindingComponent bindingComponent, android.view.View[] views, int layoutId)") {
+ block("public ${libTypes.viewDataBinding} getDataBinder(${libTypes.dataBindingComponent} bindingComponent, android.view.View[] views, int layoutId)") {
block("switch(layoutId)") {
layoutBinders.filter{it.isMerge }.groupBy{it.layoutname }.forEach {
val firstVal = it.value[0]
diff --git a/compiler/src/main/kotlin/android/databinding/tool/writer/BindingMapperWriterV2.kt b/compiler/src/main/kotlin/android/databinding/tool/writer/BindingMapperWriterV2.kt
index baa30b6a..1aadf315 100644
--- a/compiler/src/main/kotlin/android/databinding/tool/writer/BindingMapperWriterV2.kt
+++ b/compiler/src/main/kotlin/android/databinding/tool/writer/BindingMapperWriterV2.kt
@@ -17,6 +17,7 @@
package android.databinding.tool.writer
import android.databinding.tool.DataBindingCompilerArgs
+import android.databinding.tool.LibTypes
import android.databinding.tool.ext.L
import android.databinding.tool.ext.N
import android.databinding.tool.ext.S
@@ -39,14 +40,9 @@ import javax.annotation.Generated
import javax.lang.model.element.Modifier
class BindingMapperWriterV2(private val genClassInfoLog: GenClassInfoLog,
- private val compilerArgs: DataBindingCompilerArgs) {
+ compilerArgs: DataBindingCompilerArgs,
+ libTypes: LibTypes) {
companion object {
- private val VIEW_DATA_BINDING = ClassName
- .get("android.databinding", "ViewDataBinding")
- private val COMPONENT = ClassName
- .get("android.databinding", "DataBindingComponent")
- val DATA_BINDER_MAPPER: ClassName = ClassName
- .get("android.databinding", "DataBinderMapper")
private val VIEW = ClassName
.get("android.view", "View")
private val OBJECT = ClassName
@@ -57,8 +53,6 @@ class BindingMapperWriterV2(private val genClassInfoLog: GenClassInfoLog,
.get("java.lang", "IllegalArgumentException")
private val STRING = ClassName
.get("java.lang", "String")
- private val INTEGER = ClassName
- .get("java.lang", "Integer")
private val LAYOUT_ID_LOOKUP_MAP_NAME = "INTERNAL_LAYOUT_ID_LOOKUP"
private val IMPL_CLASS_NAME = "DataBinderMapperImpl"
private val SPARSE_INT_ARRAY =
@@ -72,12 +66,19 @@ class BindingMapperWriterV2(private val genClassInfoLog: GenClassInfoLog,
private val rClassMap = mutableMapOf<String, ClassName>()
+ private val viewDataBinding = ClassName.bestGuess(libTypes.viewDataBinding)
+ private val bindingComponent = ClassName.bestGuess(libTypes.dataBindingComponent)
+ private val dataBinderMapper: ClassName = ClassName.bestGuess(libTypes.dataBinderMapper)
+ private val testOverride: ClassName = ClassName.get(
+ libTypes.bindingPackage,
+ MergedBindingMapperWriter.TEST_CLASS_NAME)
+
+
val pkg : String
val className : String
init {
val generateAsTest = compilerArgs.isTestVariant && compilerArgs.isApp
if(generateAsTest) {
- val testOverride = MergedBindingMapperWriter.TEST_OVERRIDE
pkg = testOverride.packageName()
className = testOverride.simpleName()
} else {
@@ -123,7 +124,7 @@ class BindingMapperWriterV2(private val genClassInfoLog: GenClassInfoLog,
}
fun write(brValueLookup: MutableMap<String, Int>): TypeSpec = TypeSpec.classBuilder(className).apply {
- superclass(DATA_BINDER_MAPPER)
+ superclass(dataBinderMapper)
addModifiers(Modifier.PUBLIC)
if (ModelAnalyzer.getInstance().hasGeneratedAnnotation()) {
addAnnotation(AnnotationSpec.builder(Generated::class.java).apply {
@@ -262,8 +263,8 @@ class BindingMapperWriterV2(private val genClassInfoLog: GenClassInfoLog,
return MethodSpec.methodBuilder("getDataBinder").apply {
addModifiers(Modifier.PUBLIC)
addAnnotation(Override::class.java)
- returns(VIEW_DATA_BINDING)
- val componentParam = ParameterSpec.builder(COMPONENT, "component").build()
+ returns(viewDataBinding)
+ val componentParam = ParameterSpec.builder(bindingComponent, "component").build()
val viewParam = ParameterSpec.builder(VIEW, "view").build()
val layoutIdParam = ParameterSpec.builder(TypeName.INT, "layoutId").build()
addParameter(componentParam)
@@ -319,8 +320,8 @@ class BindingMapperWriterV2(private val genClassInfoLog: GenClassInfoLog,
.apply {
addModifiers(Modifier.PUBLIC)
addAnnotation(Override::class.java)
- returns(VIEW_DATA_BINDING)
- val componentParam = ParameterSpec.builder(COMPONENT, "component").build()
+ returns(viewDataBinding)
+ val componentParam = ParameterSpec.builder(bindingComponent, "component").build()
val viewParam = ParameterSpec.builder(ArrayTypeName.of(VIEW), "views").build()
val layoutIdParam = ParameterSpec.builder(TypeName.INT, "layoutId").build()
addParameter(componentParam)
diff --git a/compiler/src/main/kotlin/android/databinding/tool/writer/LayoutBinderWriter.kt b/compiler/src/main/kotlin/android/databinding/tool/writer/LayoutBinderWriter.kt
index a3755f85..526d733f 100644
--- a/compiler/src/main/kotlin/android/databinding/tool/writer/LayoutBinderWriter.kt
+++ b/compiler/src/main/kotlin/android/databinding/tool/writer/LayoutBinderWriter.kt
@@ -18,6 +18,7 @@ import android.databinding.tool.BindingTarget
import android.databinding.tool.CallbackWrapper
import android.databinding.tool.InverseBinding
import android.databinding.tool.LayoutBinder
+import android.databinding.tool.LibTypes
import android.databinding.tool.expr.Expr
import android.databinding.tool.expr.ExprModel
import android.databinding.tool.expr.FieldAccessExpr
@@ -39,10 +40,7 @@ import android.databinding.tool.reflection.ModelAnalyzer
import android.databinding.tool.reflection.ModelClass
import android.databinding.tool.util.L
import android.databinding.tool.util.Preconditions
-import java.util.ArrayList
-import java.util.Arrays
-import java.util.BitSet
-import java.util.HashMap
+import java.util.*
enum class Scope {
GLOBAL,
@@ -129,10 +127,11 @@ val BindingTarget.readableName by lazyProp { target: BindingTarget ->
}
fun BindingTarget.superConversion(variable : String) : String {
- if (resolvedType != null && resolvedType.extendsViewStub()) {
- return "new android.databinding.ViewStubProxy((android.view.ViewStub) $variable)"
+ return if (resolvedType != null && resolvedType.extendsViewStub()) {
+ val libTypes = ModelAnalyzer.getInstance().libTypes
+ "new ${libTypes.viewStubProxy}((android.view.ViewStub) $variable)"
} else {
- return "($interfaceClass) $variable"
+ "($interfaceClass) $variable"
}
}
@@ -159,7 +158,8 @@ val BindingTarget.androidId by lazyProp { target: BindingTarget ->
val BindingTarget.interfaceClass by lazyProp { target: BindingTarget ->
if (target.resolvedType != null && target.resolvedType.extendsViewStub()) {
- "android.databinding.ViewStubProxy"
+ val libTypes = ModelAnalyzer.getInstance().libTypes
+ libTypes.viewStubProxy
} else {
target.interfaceType
}
@@ -312,7 +312,7 @@ fun indexFromTag(tag : String) : kotlin.Int {
return Integer.parseInt(tag.substring(startIndex))
}
-class LayoutBinderWriter(val layoutBinder : LayoutBinder) {
+class LayoutBinderWriter(val layoutBinder : LayoutBinder, val libTypes: LibTypes) {
val hasBaseBinder = layoutBinder.enableV2() || layoutBinder.hasVariations()
val model = layoutBinder.model
val indices = HashMap<BindingTarget, kotlin.Int>()
@@ -347,13 +347,13 @@ class LayoutBinderWriter(val layoutBinder : LayoutBinder) {
return kcode("package ${layoutBinder.`package`};") {
nl("import ${layoutBinder.modulePackage}.R;")
nl("import ${layoutBinder.modulePackage}.BR;")
- nl("import android.support.annotation.NonNull;")
- nl("import android.support.annotation.Nullable;")
+ nl("import ${libTypes.nonNull};")
+ nl("import ${libTypes.nullable};")
nl("import android.view.View;")
val classDeclaration = if (hasBaseBinder) {
"$className extends $baseClassName"
} else {
- "$className extends android.databinding.ViewDataBinding"
+ "$className extends ${libTypes.viewDataBinding}"
}
nl("@SuppressWarnings(\"unchecked\")")
annotateWithGenerated()
@@ -434,7 +434,7 @@ class LayoutBinderWriter(val layoutBinder : LayoutBinder) {
fun declareIncludeViews() = kcode("") {
nl("@Nullable")
- nl("private static final android.databinding.ViewDataBinding.IncludedLayouts sIncludes;")
+ nl("private static final ${libTypes.viewDataBinding}.IncludedLayouts sIncludes;")
nl("@Nullable")
nl("private static final android.util.SparseIntArray sViewsWithIds;")
nl("static {") {
@@ -443,7 +443,7 @@ class LayoutBinderWriter(val layoutBinder : LayoutBinder) {
tab("sIncludes = null;")
} else {
val numBindings = layoutBinder.bindingTargets.filter { it.isUsed }.count()
- tab("sIncludes = new android.databinding.ViewDataBinding.IncludedLayouts($numBindings);")
+ tab("sIncludes = new ${libTypes.viewDataBinding}.IncludedLayouts($numBindings);")
val includeMap = HashMap<BindingTarget, ArrayList<BindingTarget>>()
layoutBinder.bindingTargets.filter { it.isUsed && it.isBinder }.forEach {
val includeTag = it.tag
@@ -517,11 +517,11 @@ class LayoutBinderWriter(val layoutBinder : LayoutBinder) {
val rootTagsSupported = minSdk >= 14
if (hasBaseBinder) {
nl("")
- nl("public $className(@Nullable android.databinding.DataBindingComponent bindingComponent, @NonNull $parameterType root) {") {
+ nl("public $className(@Nullable ${libTypes.dataBindingComponent} bindingComponent, @NonNull $parameterType root) {") {
tab("this(bindingComponent, root, mapBindings(bindingComponent, root, $bindingCount, sIncludes, sViewsWithIds));")
}
nl("}")
- nl("private $className(android.databinding.DataBindingComponent bindingComponent, $parameterType root, Object[] bindings) {") {
+ nl("private $className(${libTypes.dataBindingComponent} bindingComponent, $parameterType root, Object[] bindings) {") {
tab("super(bindingComponent, $superParam, ${model.observables.size}") {
layoutBinder.sortedTargets.filter { it.id != null }.forEach {
tab(", ${fieldConversion(it)}")
@@ -530,7 +530,7 @@ class LayoutBinderWriter(val layoutBinder : LayoutBinder) {
}
}
} else {
- nl("public $baseClassName(@NonNull android.databinding.DataBindingComponent bindingComponent, @NonNull $parameterType root) {") {
+ nl("public $baseClassName(@NonNull ${libTypes.dataBindingComponent} bindingComponent, @NonNull $parameterType root) {") {
tab("super(bindingComponent, $superParam, ${model.observables.size});")
tab("final Object[] bindings = mapBindings(bindingComponent, root, $bindingCount, sIncludes, sViewsWithIds);")
}
@@ -890,10 +890,10 @@ class LayoutBinderWriter(val layoutBinder : LayoutBinder) {
val invClass: String
val param: String
if (inverseBinding.isOnBinder) {
- invClass = "android.databinding.ViewDataBinding.PropertyChangedInverseListener"
+ invClass = libTypes.propertyChangedInverseListener
param = "BR.${inverseBinding.eventAttribute}"
} else {
- invClass = "android.databinding.InverseBindingListener"
+ invClass = libTypes.inverseBindingListener
param = ""
}
block("private $invClass ${inverseBinding.fieldName} = new $invClass($param)") {
@@ -1235,27 +1235,27 @@ class LayoutBinderWriter(val layoutBinder : LayoutBinder) {
fun declareFactories() = kcode("") {
nl("@NonNull")
block("public static $baseClassName inflate(@NonNull android.view.LayoutInflater inflater, @Nullable android.view.ViewGroup root, boolean attachToRoot)") {
- nl("return inflate(inflater, root, attachToRoot, android.databinding.DataBindingUtil.getDefaultComponent());")
+ nl("return inflate(inflater, root, attachToRoot, ${libTypes.dataBindingUtil}.getDefaultComponent());")
}
nl("@NonNull")
- block("public static $baseClassName inflate(@NonNull android.view.LayoutInflater inflater, @Nullable android.view.ViewGroup root, boolean attachToRoot, @Nullable android.databinding.DataBindingComponent bindingComponent)") {
- nl("return android.databinding.DataBindingUtil.<$baseClassName>inflate(inflater, ${layoutBinder.modulePackage}.R.layout.${layoutBinder.layoutname}, root, attachToRoot, bindingComponent);")
+ block("public static $baseClassName inflate(@NonNull android.view.LayoutInflater inflater, @Nullable android.view.ViewGroup root, boolean attachToRoot, @Nullable ${libTypes.dataBindingComponent} bindingComponent)") {
+ nl("return ${libTypes.dataBindingUtil}.<$baseClassName>inflate(inflater, ${layoutBinder.modulePackage}.R.layout.${layoutBinder.layoutname}, root, attachToRoot, bindingComponent);")
}
if (!layoutBinder.isMerge) {
nl("@NonNull")
block("public static $baseClassName inflate(@NonNull android.view.LayoutInflater inflater)") {
- nl("return inflate(inflater, android.databinding.DataBindingUtil.getDefaultComponent());")
+ nl("return inflate(inflater, ${libTypes.dataBindingUtil}.getDefaultComponent());")
}
nl("@NonNull")
- block("public static $baseClassName inflate(@NonNull android.view.LayoutInflater inflater, @Nullable android.databinding.DataBindingComponent bindingComponent)") {
+ block("public static $baseClassName inflate(@NonNull android.view.LayoutInflater inflater, @Nullable ${libTypes.dataBindingComponent} bindingComponent)") {
nl("return bind(inflater.inflate(${layoutBinder.modulePackage}.R.layout.${layoutBinder.layoutname}, null, false), bindingComponent);")
}
nl("@NonNull")
block("public static $baseClassName bind(@NonNull android.view.View view)") {
- nl("return bind(view, android.databinding.DataBindingUtil.getDefaultComponent());")
+ nl("return bind(view, ${libTypes.dataBindingUtil}.getDefaultComponent());")
}
nl("@NonNull")
- block("public static $baseClassName bind(@NonNull android.view.View view, @Nullable android.databinding.DataBindingComponent bindingComponent)") {
+ block("public static $baseClassName bind(@NonNull android.view.View view, @Nullable ${libTypes.dataBindingComponent} bindingComponent)") {
block("if (!\"${layoutBinder.tag}_0\".equals(view.getTag()))") {
nl("throw new RuntimeException(\"view tag isn't correct on view:\" + view.getTag());")
}
@@ -1273,11 +1273,11 @@ class LayoutBinderWriter(val layoutBinder : LayoutBinder) {
public fun writeBaseClass(forLibrary: Boolean, variations: List<LayoutBinder>) : String =
kcode("package ${layoutBinder.`package`};") {
Scope.reset()
- nl("import android.databinding.Bindable;")
- nl("import android.databinding.DataBindingUtil;")
- nl("import android.databinding.ViewDataBinding;")
- nl("import android.support.annotation.NonNull;")
- nl("import android.support.annotation.Nullable;")
+ nl("import ${libTypes.bindable};")
+ nl("import ${libTypes.dataBindingUtil};")
+ nl("import ${libTypes.viewDataBinding};")
+ nl("import ${libTypes.nonNull};")
+ nl("import ${libTypes.nullable};")
annotateWithGenerated()
nl("public abstract class $baseClassName extends ViewDataBinding {")
layoutBinder.sortedTargets.filter{it.id != null}.forEach {
@@ -1296,7 +1296,7 @@ class LayoutBinderWriter(val layoutBinder : LayoutBinder) {
}
}
- tab("protected $baseClassName(@Nullable android.databinding.DataBindingComponent bindingComponent, @Nullable android.view.View root_, int localFieldCount") {
+ tab("protected $baseClassName(@Nullable ${libTypes.dataBindingComponent} bindingComponent, @Nullable android.view.View root_, int localFieldCount") {
layoutBinder.sortedTargets.filter{it.id != null}.forEach {
tab(", ${it.interfaceClass} ${it.constructorParamName}")
}
@@ -1327,12 +1327,12 @@ class LayoutBinderWriter(val layoutBinder : LayoutBinder) {
}
tab("@NonNull")
tab("public static $baseClassName inflate(@NonNull android.view.LayoutInflater inflater, @Nullable android.view.ViewGroup root, boolean attachToRoot) {") {
- tab("return inflate(inflater, root, attachToRoot, android.databinding.DataBindingUtil.getDefaultComponent());")
+ tab("return inflate(inflater, root, attachToRoot, ${libTypes.dataBindingUtil}.getDefaultComponent());")
}
tab("}")
tab("@NonNull")
tab("public static $baseClassName inflate(@NonNull android.view.LayoutInflater inflater) {") {
- tab("return inflate(inflater, android.databinding.DataBindingUtil.getDefaultComponent());")
+ tab("return inflate(inflater, ${libTypes.dataBindingUtil}.getDefaultComponent());")
}
tab("}")
tab("@NonNull")
@@ -1340,12 +1340,12 @@ class LayoutBinderWriter(val layoutBinder : LayoutBinder) {
if (forLibrary) {
tab("return null;")
} else {
- tab("return bind(view, android.databinding.DataBindingUtil.getDefaultComponent());")
+ tab("return bind(view, ${libTypes.dataBindingUtil}.getDefaultComponent());")
}
}
tab("}")
tab("@NonNull")
- tab("public static $baseClassName inflate(@NonNull android.view.LayoutInflater inflater, @Nullable android.view.ViewGroup root, boolean attachToRoot, @Nullable android.databinding.DataBindingComponent bindingComponent) {") {
+ tab("public static $baseClassName inflate(@NonNull android.view.LayoutInflater inflater, @Nullable android.view.ViewGroup root, boolean attachToRoot, @Nullable ${libTypes.dataBindingComponent} bindingComponent) {") {
if (forLibrary) {
tab("return null;")
} else {
@@ -1354,7 +1354,7 @@ class LayoutBinderWriter(val layoutBinder : LayoutBinder) {
}
tab("}")
tab("@NonNull")
- tab("public static $baseClassName inflate(@NonNull android.view.LayoutInflater inflater, @Nullable android.databinding.DataBindingComponent bindingComponent) {") {
+ tab("public static $baseClassName inflate(@NonNull android.view.LayoutInflater inflater, @Nullable ${libTypes.dataBindingComponent} bindingComponent) {") {
if (forLibrary) {
tab("return null;")
} else {
@@ -1363,7 +1363,7 @@ class LayoutBinderWriter(val layoutBinder : LayoutBinder) {
}
tab("}")
tab("@NonNull")
- tab("public static $baseClassName bind(@NonNull android.view.View view, @Nullable android.databinding.DataBindingComponent bindingComponent) {") {
+ tab("public static $baseClassName bind(@NonNull android.view.View view, @Nullable ${libTypes.dataBindingComponent} bindingComponent) {") {
if (forLibrary) {
tab("return null;")
} else {
diff --git a/compiler/src/main/kotlin/android/databinding/tool/writer/MergedBindingMapperWriter.kt b/compiler/src/main/kotlin/android/databinding/tool/writer/MergedBindingMapperWriter.kt
index 8517c234..b908ecd3 100644
--- a/compiler/src/main/kotlin/android/databinding/tool/writer/MergedBindingMapperWriter.kt
+++ b/compiler/src/main/kotlin/android/databinding/tool/writer/MergedBindingMapperWriter.kt
@@ -17,6 +17,7 @@
package android.databinding.tool.writer
import android.databinding.tool.DataBindingCompilerArgs
+import android.databinding.tool.LibTypes
import android.databinding.tool.ext.N
import android.databinding.tool.ext.S
import android.databinding.tool.ext.T
@@ -30,30 +31,34 @@ import javax.lang.model.element.Modifier
class MergedBindingMapperWriter(private val packages: List<String>,
compilerArgs: DataBindingCompilerArgs,
private val featurePackages : Set<String>,
- private val hasV1CompatMapper: Boolean) {
+ private val hasV1CompatMapper: Boolean,
+ libTypes: LibTypes) {
private val generateAsTest = compilerArgs.isTestVariant && compilerArgs.isApp
private val generateTestOverride = !generateAsTest && compilerArgs.isEnabledForTests
- private val overrideField = FieldSpec.builder(BindingMapperWriterV2.DATA_BINDER_MAPPER,
+ private val overrideField = FieldSpec.builder(ClassName.bestGuess(libTypes.dataBinderMapper),
"sTestOverride")
.addModifiers(Modifier.STATIC)
.build()
companion object {
const val APP_CLASS_NAME = "DataBinderMapperImpl"
- private const val TEST_CLASS_NAME = "Test$APP_CLASS_NAME"
- val MERGED_MAPPER_BASE: ClassName = ClassName.get(
- "android.databinding",
- "MergedDataBinderMapper")
- internal val TEST_OVERRIDE: ClassName = ClassName.get(
- "android.databinding",
- TEST_CLASS_NAME)
+ internal const val TEST_CLASS_NAME = "Test$APP_CLASS_NAME"
}
- val pkg = "android.databinding"
+ val pkg = libTypes.bindingPackage
val qualifiedName = "$pkg.$APP_CLASS_NAME"
+ private val dataBinderMapper: ClassName = ClassName.bestGuess(libTypes.dataBinderMapper)
+
+ private val mergedMapperBase: ClassName = ClassName.get(
+ libTypes.bindingPackage,
+ "MergedDataBinderMapper")
+
+ private val testOverride: ClassName = ClassName.get(
+ libTypes.bindingPackage,
+ TEST_CLASS_NAME)
fun write() = TypeSpec.classBuilder(APP_CLASS_NAME).apply {
- superclass(MERGED_MAPPER_BASE)
+ superclass(mergedMapperBase)
addModifiers(Modifier.PUBLIC)
addMethod(MethodSpec.constructorBuilder().apply {
packages.forEach { pkg ->
@@ -80,9 +85,9 @@ class MergedBindingMapperWriter(private val packages: List<String>,
addStaticBlock(CodeBlock.builder()
.beginControlFlow("try").apply {
addStatement("$N = ($T) $T.class.getClassLoader().loadClass($S).newInstance()",
- overrideField, BindingMapperWriterV2.DATA_BINDER_MAPPER,
- BindingMapperWriterV2.DATA_BINDER_MAPPER,
- TEST_OVERRIDE)
+ overrideField, dataBinderMapper,
+ dataBinderMapper,
+ testOverride)
}.nextControlFlow("catch($T ignored)", ClassName.get(Throwable::class.java))
.apply {
addStatement("$N = null", overrideField)