diff options
author | Yigit Boyar <yboyar@google.com> | 2016-01-22 10:33:20 -0800 |
---|---|---|
committer | Yigit Boyar <yboyar@google.com> | 2016-01-22 13:22:37 -0800 |
commit | af146d6a8c0efcf5682d14047c06866a5548f78f (patch) | |
tree | 43aa8af42d26f3851925686d4afecb7e94319025 /compiler | |
parent | a138270e662e29ee982942a9d963af5c45d0e8c2 (diff) | |
download | data-binding-af146d6a8c0efcf5682d14047c06866a5548f78f.tar.gz |
Update data binding to kotlin beta 4
I've also run some cleanup inspections to keep codebase
more up to date.
Bug: 26738574
Change-Id: I02aa43157cad858c0ea60dd41a22150e3cf2cfa1
Diffstat (limited to 'compiler')
9 files changed, 39 insertions, 130 deletions
diff --git a/compiler/compiler.iml b/compiler/compiler.iml index acf8f63e..b0d4edff 100644 --- a/compiler/compiler.iml +++ b/compiler/compiler.iml @@ -18,12 +18,12 @@ <orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="module" module-name="compilerCommon" /> <orderEntry type="module" module-name="baseLibrary" /> - <orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib:1.0.0-beta-1103" level="project" /> + <orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib:1.0.0-beta-4584" level="project" /> <orderEntry type="library" name="Gradle: commons-io:commons-io:2.4" level="project" /> <orderEntry type="library" name="Gradle: commons-codec:commons-codec:1.10" level="project" /> <orderEntry type="library" name="Gradle: com.tunnelvisionlabs:antlr4:4.5" level="project" /> <orderEntry type="library" name="Gradle: com.googlecode.juniversalchardet:juniversalchardet:1.0.3" level="project" /> - <orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-runtime:1.0.0-beta-1103" level="project" /> + <orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-runtime:1.0.0-beta-4584" level="project" /> <orderEntry type="library" name="Gradle: com.tunnelvisionlabs:antlr4-runtime:4.5" level="project" /> <orderEntry type="library" name="Gradle: com.tunnelvisionlabs:antlr4-annotations:4.5" level="project" /> <orderEntry type="library" name="Gradle: org.antlr:antlr-runtime:3.5.2" level="project" /> diff --git a/compiler/src/main/java/android/databinding/tool/expr/BracketExpr.java b/compiler/src/main/java/android/databinding/tool/expr/BracketExpr.java index 16c6ce10..392512ce 100644 --- a/compiler/src/main/java/android/databinding/tool/expr/BracketExpr.java +++ b/compiler/src/main/java/android/databinding/tool/expr/BracketExpr.java @@ -24,7 +24,7 @@ import java.util.List; public class BracketExpr extends Expr { - public static enum BracketAccessor { + public enum BracketAccessor { ARRAY, LIST, MAP, diff --git a/compiler/src/main/java/android/databinding/tool/expr/VersionProvider.java b/compiler/src/main/java/android/databinding/tool/expr/VersionProvider.java index cef58f72..8e066a46 100644 --- a/compiler/src/main/java/android/databinding/tool/expr/VersionProvider.java +++ b/compiler/src/main/java/android/databinding/tool/expr/VersionProvider.java @@ -21,5 +21,5 @@ package android.databinding.tool.expr; * This number is used when caching values in code generation. (like flags) */ public interface VersionProvider { - public int getVersion(); + int getVersion(); } diff --git a/compiler/src/main/kotlin/android/databinding/tool/ext/list_ext.kt b/compiler/src/main/kotlin/android/databinding/tool/ext/list_ext.kt index 70317f6a..4d420dd3 100644 --- a/compiler/src/main/kotlin/android/databinding/tool/ext/list_ext.kt +++ b/compiler/src/main/kotlin/android/databinding/tool/ext/list_ext.kt @@ -16,29 +16,14 @@ package android.databinding.tool.ext -import android.databinding.tool.ext.toCamelCase -import android.databinding.tool.ext.toCamelCaseAsVar - public fun List<String>.joinToCamelCase(): String = when(size) { 0 -> throw IllegalArgumentException("invalid section size, cannot be zero") - 1 -> this.get(0).toCamelCase() + 1 -> this[0].toCamelCase() else -> this.map {it.toCamelCase()}.joinToString("") } public fun List<String>.joinToCamelCaseAsVar(): String = when(size) { 0 -> throw IllegalArgumentException("invalid section size, cannot be zero") - 1 -> this.get(0).toCamelCaseAsVar() - else -> get(0).toCamelCaseAsVar() + drop(1).joinToCamelCase() -} - -public fun Array<String>.joinToCamelCase(): String = when(size) { - 0 -> throw IllegalArgumentException("invalid section size, cannot be zero") - 1 -> this.get(0).toCamelCase() - else -> this.map {it.toCamelCase()}.joinToString("") -} - -public fun Array<String>.joinToCamelCaseAsVar(): String = when(size) { - 0 -> throw IllegalArgumentException("invalid section size, cannot be zero") - 1 -> this.get(0).toCamelCaseAsVar() + 1 -> this[0].toCamelCaseAsVar() else -> get(0).toCamelCaseAsVar() + drop(1).joinToCamelCase() }
\ No newline at end of file diff --git a/compiler/src/main/kotlin/android/databinding/tool/ext/node_ext.kt b/compiler/src/main/kotlin/android/databinding/tool/ext/node_ext.kt deleted file mode 100644 index 83a34baa..00000000 --- a/compiler/src/main/kotlin/android/databinding/tool/ext/node_ext.kt +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (C) 2014 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 android.databinding.tool.ext - -import org.w3c.dom.Node -import org.w3c.dom.NodeList -import java.util.ArrayList - -public fun Node.getAndroidId() : String? = - getAttributes()?.getNamedItem("android:id")?.getNodeValue() - -public fun Node.getAndroidIdPath(includeRoot : Boolean) : List<String> { - val ids = arrayListOf<String>() - ids.add(getAndroidId()!!) - var parent : Node? = getParentNode() - while (parent != null && (includeRoot || parent.getParentNode()?.getParentNode() != null)) { - val id = parent.getAndroidId() - if (id != null) { - ids.add(id) - } - parent = parent.getParentNode() - } - return ids -} - -public fun NodeList.forEach( f : (Node) -> Unit ) { - val cnt = getLength() - if (cnt == 0) return - for (i in 0..cnt - 1) { - f(item(i)) - } -} -public fun NodeList.toArrayList() : ArrayList<Node> { - val cnt = getLength() - val arrayList = arrayListOf<Node>() - for (i in 0..cnt - 1) { - arrayList.add(item(i)) - } - return arrayList -} - - diff --git a/compiler/src/main/kotlin/android/databinding/tool/writer/DataBinderWriter.kt b/compiler/src/main/kotlin/android/databinding/tool/writer/DataBinderWriter.kt index 8801303c..da953e46 100644 --- a/compiler/src/main/kotlin/android/databinding/tool/writer/DataBinderWriter.kt +++ b/compiler/src/main/kotlin/android/databinding/tool/writer/DataBinderWriter.kt @@ -21,7 +21,7 @@ class DataBinderWriter(val pkg: String, val projectPackage: String, val classNam nl("package $pkg;") nl("import $projectPackage.BR;") nl("class $className {") { - tab("final static int TARGET_MIN_SDK = ${minSdk};") + tab("final static int TARGET_MIN_SDK = $minSdk;") nl("") tab("public $className() {") { } @@ -29,14 +29,14 @@ class DataBinderWriter(val pkg: String, val projectPackage: String, val classNam nl("") tab("public android.databinding.ViewDataBinding getDataBinder(android.databinding.DataBindingComponent bindingComponent, android.view.View view, int layoutId) {") { tab("switch(layoutId) {") { - layoutBinders.groupBy{it.getLayoutname()}.forEach { - val firstVal = it.value.get(0) - tab("case ${firstVal.getModulePackage()}.R.layout.${firstVal.getLayoutname()}:") { + layoutBinders.groupBy{it.layoutname }.forEach { + val firstVal = it.value[0] + tab("case ${firstVal.modulePackage}.R.layout.${firstVal.layoutname}:") { if (it.value.size == 1) { - if (firstVal.isMerge()) { - tab("return new ${firstVal.getPackage()}.${firstVal.getImplementationName()}(bindingComponent, new android.view.View[]{view});") + if (firstVal.isMerge) { + tab("return new ${firstVal.`package`}.${firstVal.implementationName}(bindingComponent, new android.view.View[]{view});") } else { - tab("return ${firstVal.getPackage()}.${firstVal.getImplementationName()}.bind(view, bindingComponent);") + tab("return ${firstVal.`package`}.${firstVal.implementationName}.bind(view, bindingComponent);") } } else { // we should check the tag to decide which layout we need to inflate @@ -44,15 +44,15 @@ class DataBinderWriter(val pkg: String, val projectPackage: String, val classNam tab("final Object tag = view.getTag();") tab("if(tag == null) throw new java.lang.RuntimeException(\"view must have a tag\");") it.value.forEach { - tab("if (\"${it.getTag()}_0\".equals(tag)) {") { - if (it.isMerge()) { - tab("return new ${it.getPackage()}.${it.getImplementationName()}(bindingComponent, new android.view.View[]{view});") + tab("if (\"${it.tag}_0\".equals(tag)) {") { + if (it.isMerge) { + tab("return new ${it.`package`}.${it.implementationName}(bindingComponent, new android.view.View[]{view});") } else { - tab("return new ${it.getPackage()}.${it.getImplementationName()}(bindingComponent, view);") + tab("return new ${it.`package`}.${it.implementationName}(bindingComponent, view);") } } tab("}") } - tab("throw new java.lang.IllegalArgumentException(\"The tag for ${firstVal.getLayoutname()} is invalid. Received: \" + tag);"); + tab("throw new java.lang.IllegalArgumentException(\"The tag for ${firstVal.layoutname} is invalid. Received: \" + tag);"); }tab("}") } @@ -66,19 +66,19 @@ class DataBinderWriter(val pkg: String, val projectPackage: String, val classNam tab("android.databinding.ViewDataBinding getDataBinder(android.databinding.DataBindingComponent bindingComponent, android.view.View[] views, int layoutId) {") { tab("switch(layoutId) {") { - layoutBinders.filter{it.isMerge()}.groupBy{it.getLayoutname()}.forEach { - val firstVal = it.value.get(0) - tab("case ${firstVal.getModulePackage()}.R.layout.${firstVal.getLayoutname()}:") { + layoutBinders.filter{it.isMerge }.groupBy{it.layoutname }.forEach { + val firstVal = it.value[0] + tab("case ${firstVal.modulePackage}.R.layout.${firstVal.layoutname}:") { if (it.value.size == 1) { - tab("return new ${firstVal.getPackage()}.${firstVal.getImplementationName()}(bindingComponent, views);") + tab("return new ${firstVal.`package`}.${firstVal.implementationName}(bindingComponent, views);") } else { // we should check the tag to decide which layout we need to inflate tab("{") { tab("final Object tag = views[0].getTag();") tab("if(tag == null) throw new java.lang.RuntimeException(\"view must have a tag\");") it.value.forEach { - tab("if (\"${it.getTag()}_0\".equals(tag)) {") { - tab("return new ${it.getPackage()}.${it.getImplementationName()}(bindingComponent, views);") + tab("if (\"${it.tag}_0\".equals(tag)) {") { + tab("return new ${it.`package`}.${it.implementationName}(bindingComponent, views);") } tab("}") } }tab("}") @@ -99,11 +99,11 @@ class DataBinderWriter(val pkg: String, val projectPackage: String, val classNam // String.hashCode is well defined in the API so we can rely on it being the same on the device and the host machine tab("final int code = tag.hashCode();"); tab("switch(code) {") { - layoutBinders.groupBy {"${it.getTag()}_0".hashCode()}.forEach { + layoutBinders.groupBy {"${it.tag}_0".hashCode()}.forEach { tab("case ${it.key}:") { it.value.forEach { - tab("if(tag.equals(\"${it.getTag()}_0\"))") { - tab("return ${it.getModulePackage()}.R.layout.${it.getLayoutname()};") + tab("if(tag.equals(\"${it.tag}_0\"))") { + tab("return ${it.modulePackage}.R.layout.${it.layoutname};") } } tab("break;") diff --git a/compiler/src/main/kotlin/android/databinding/tool/writer/KCode.kt b/compiler/src/main/kotlin/android/databinding/tool/writer/KCode.kt index 906880a0..a9b282ac 100644 --- a/compiler/src/main/kotlin/android/databinding/tool/writer/KCode.kt +++ b/compiler/src/main/kotlin/android/databinding/tool/writer/KCode.kt @@ -31,14 +31,14 @@ class KCode (private val s : String? = null){ private val indentCache = arrayListOf<String>() fun indent(n: Int): String { if (cachedIndentations.get(n)) { - return indentCache.get(n) + return indentCache[n] } - val s = (0..n-1).fold(""){prev, next -> "${prev} "} + val s = (0..n-1).fold(""){prev, next -> "$prev "} cachedIndentations.set(n, true ) while (indentCache.size <= n) { indentCache.add(""); } - indentCache.set(n, s) + indentCache[n] = s return s } } @@ -71,22 +71,12 @@ class KCode (private val s : String? = null){ return this } - fun nls(vararg codes : KCode?) : KCode { - codes.forEach { nl(it) } - return this - } - - fun nls(codes : Collection<KCode?>) : KCode { - codes.forEach { nl(it) } - return this - } - infix fun nl(c : KCode?) : KCode { if (c == null || isNull(c)) { return this } nodes.add(c) - c!!.sameLine = true + c.sameLine = true return this } @@ -98,16 +88,6 @@ class KCode (private val s : String? = null){ return nl(c) } - fun apps(glue : String = "", vararg codes : KCode?) : KCode { - codes.forEach { app(glue, it)} - return this - } - - fun apps(glue : String = "", codes : Collection<KCode?>) : KCode { - codes.forEach { app(glue, it)} - return this - } - fun app(glue : String = "", c : KCode?) : KCode { if (isNull(c)) { return this 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 324c2e9c..690a4d60 100644 --- a/compiler/src/main/kotlin/android/databinding/tool/writer/LayoutBinderWriter.kt +++ b/compiler/src/main/kotlin/android/databinding/tool/writer/LayoutBinderWriter.kt @@ -153,9 +153,9 @@ val Expr.fieldName by lazyProp { expr : Expr -> } val InverseBinding.fieldName by lazyProp { inverseBinding : InverseBinding -> - val targetName = inverseBinding.getTarget().fieldName; - val eventName = inverseBinding.getEventAttribute().stripNonJava() - inverseBinding.getModel().getUniqueFieldName("${targetName}${eventName}", false) + val targetName = inverseBinding.target.fieldName; + val eventName = inverseBinding.eventAttribute.stripNonJava() + inverseBinding.model.getUniqueFieldName("$targetName$eventName", false) } val Expr.listenerClassName by lazyProp { expr : Expr -> @@ -703,18 +703,18 @@ class LayoutBinderWriter(val layoutBinder : LayoutBinder) { } fun declareInverseBindingImpls() = kcode("// Inverse Binding Event Handlers") { - layoutBinder.getSortedTargets().filter { it.isUsed() }.forEach { target -> - target.getInverseBindings().forEach { inverseBinding -> + layoutBinder.sortedTargets.filter { it.isUsed }.forEach { target -> + target.inverseBindings.forEach { inverseBinding -> val className : String val param : String - if (inverseBinding.isOnBinder()) { + if (inverseBinding.isOnBinder) { className = "android.databinding.ViewDataBinding.PropertyChangedInverseListener" param = "BR.${inverseBinding.eventAttribute}" } else { className = "android.databinding.InverseBindingListener" param = "" } - nl("private ${className} ${inverseBinding.fieldName} = new ${className}(${param}) {") { + nl("private $className ${inverseBinding.fieldName} = new $className($param) {") { tab("@Override") tab("public void onChange() {") { tab(inverseBinding.toJavaCode("mBindingComponent", mDirtyFlags)).app(";"); diff --git a/compiler/src/test/java/android/databinding/tool/expr/ExprModelTest.java b/compiler/src/test/java/android/databinding/tool/expr/ExprModelTest.java index 1bcc4df9..04813e16 100644 --- a/compiler/src/test/java/android/databinding/tool/expr/ExprModelTest.java +++ b/compiler/src/test/java/android/databinding/tool/expr/ExprModelTest.java @@ -1003,7 +1003,7 @@ public class ExprModelTest { } private List<Expr> getShouldRead() { - return mExprModel.filterShouldRead(mExprModel.getPendingExpressions()); + return ExprModel.filterShouldRead(mExprModel.getPendingExpressions()); } public static class User implements Observable { |