summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorGeorge Mount <mount@google.com>2015-01-27 15:23:47 -0800
committerGeorge Mount <mount@google.com>2015-01-27 15:47:05 -0800
commit662d87aa0b5b045ed3fc06532f06f3bd278562c1 (patch)
tree577930320018e3987336afb2ee838b26822b36ab /tools
parent607fb140679970b683102200aecbc06880a529e7 (diff)
downloadframeworks_base-662d87aa0b5b045ed3fc06532f06f3bd278562c1.zip
frameworks_base-662d87aa0b5b045ed3fc06532f06f3bd278562c1.tar.gz
frameworks_base-662d87aa0b5b045ed3fc06532f06f3bd278562c1.tar.bz2
Moved classes from library to baseLibrary
Added tests for some classes.
Diffstat (limited to 'tools')
-rw-r--r--tools/data-binding/TestApp/build.gradle5
-rw-r--r--tools/data-binding/TestApp/src/androidTest/java/com/android/databinding/testapp/ListChangeRegistryTest.java237
-rw-r--r--tools/data-binding/TestApp/src/androidTest/java/com/android/databinding/testapp/MapChangeRegistryTest.java53
-rw-r--r--tools/data-binding/TestApp/src/androidTest/java/com/android/databinding/testapp/PropertyChangeRegistryTest.java62
-rw-r--r--tools/data-binding/baseLibrary/build.gradle14
-rw-r--r--tools/data-binding/baseLibrary/src/main/java/android/binding/CallbackRegistry.java (renamed from tools/data-binding/library/src/main/java/com/android/databinding/library/CallbackRegistry.java)42
-rw-r--r--tools/data-binding/baseLibrary/src/main/java/android/binding/Observable.java (renamed from tools/data-binding/library/src/main/java/com/android/databinding/library/Observable.java)4
-rw-r--r--tools/data-binding/baseLibrary/src/main/java/android/binding/ObservableList.java (renamed from tools/data-binding/library/src/main/java/com/android/databinding/library/ObservableList.java)2
-rw-r--r--tools/data-binding/baseLibrary/src/main/java/android/binding/ObservableMap.java (renamed from tools/data-binding/library/src/main/java/com/android/databinding/library/ObservableMap.java)2
-rw-r--r--tools/data-binding/baseLibrary/src/main/java/android/binding/OnListChangedListener.java (renamed from tools/data-binding/library/src/main/java/com/android/databinding/library/OnListChangedListener.java)2
-rw-r--r--tools/data-binding/baseLibrary/src/main/java/android/binding/OnMapChangedListener.java (renamed from tools/data-binding/library/src/main/java/com/android/databinding/library/OnMapChangedListener.java)4
-rw-r--r--tools/data-binding/baseLibrary/src/main/java/android/binding/OnPropertyChangedListener.java (renamed from tools/data-binding/library/src/main/java/com/android/databinding/library/OnPropertyChangedListener.java)2
-rw-r--r--tools/data-binding/baseLibrary/src/test/java/android/binding/CallbackRegistryTest.java (renamed from tools/data-binding/library/src/test/java/com/android/databinding/library/CallbackRegistryTest.java)13
-rw-r--r--tools/data-binding/compiler/src/main/java/com/android/databinding/ClassAnalyzer.java6
-rw-r--r--tools/data-binding/compiler/src/main/kotlin/com/android/databinding/writer/LayoutBinderWriter.kt6
-rw-r--r--tools/data-binding/grammarBuilder/build.gradle2
-rw-r--r--tools/data-binding/grammarBuilder/src/test/java/com/android/databinding/BindingExpressionParserTest.java79
-rw-r--r--tools/data-binding/library/build.gradle7
-rw-r--r--tools/data-binding/library/src/main/java/com/android/databinding/library/BaseObservable.java3
-rw-r--r--tools/data-binding/library/src/main/java/com/android/databinding/library/ListChangeRegistry.java6
-rw-r--r--tools/data-binding/library/src/main/java/com/android/databinding/library/MapChangeRegistry.java8
-rw-r--r--tools/data-binding/library/src/main/java/com/android/databinding/library/ObservableArrayList.java3
-rw-r--r--tools/data-binding/library/src/main/java/com/android/databinding/library/ObservableArrayMap.java2
-rw-r--r--tools/data-binding/library/src/main/java/com/android/databinding/library/PropertyChangeRegistry.java4
-rw-r--r--tools/data-binding/library/src/main/java/com/android/databinding/library/ViewDataBinder.java8
-rw-r--r--tools/data-binding/samples/BindingDemo/app/build.gradle3
-rw-r--r--tools/data-binding/samples/BindingDemo/app/src/main/java/com/android/example/bindingdemo/MainActivity.java4
-rw-r--r--tools/data-binding/settings.gradle2
28 files changed, 513 insertions, 72 deletions
diff --git a/tools/data-binding/TestApp/build.gradle b/tools/data-binding/TestApp/build.gradle
index 84b62cd..30ab4d8 100644
--- a/tools/data-binding/TestApp/build.gradle
+++ b/tools/data-binding/TestApp/build.gradle
@@ -51,10 +51,15 @@ android {
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
+
+ packagingOptions {
+ exclude 'META-INF/services/javax.annotation.processing.Processor'
+ }
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.databinding:library:0.3-SNAPSHOT'
+ compile "com.android.support:support-v4:+"
provided 'com.android.databinding:annotationprocessor:0.3-SNAPSHOT'
}
diff --git a/tools/data-binding/TestApp/src/androidTest/java/com/android/databinding/testapp/ListChangeRegistryTest.java b/tools/data-binding/TestApp/src/androidTest/java/com/android/databinding/testapp/ListChangeRegistryTest.java
new file mode 100644
index 0000000..9a25082
--- /dev/null
+++ b/tools/data-binding/TestApp/src/androidTest/java/com/android/databinding/testapp/ListChangeRegistryTest.java
@@ -0,0 +1,237 @@
+/*
+ * Copyright (C) 2015 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.databinding.testapp;
+
+import com.android.databinding.library.ListChangeRegistry;
+import com.android.databinding.testapp.generated.BasicBindingBinder;
+
+import android.binding.OnListChangedListener;
+
+public class ListChangeRegistryTest extends BaseDataBinderTest<BasicBindingBinder> {
+
+ private ListChangeRegistry mListChangeRegistry;
+
+ private int mCallCount;
+
+ public ListChangeRegistryTest() {
+ super(BasicBindingBinder.class, R.layout.basic_binding);
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ mListChangeRegistry = new ListChangeRegistry();
+ mCallCount = 0;
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ mListChangeRegistry = null;
+ }
+
+ public void testNotifyChangedAll() {
+ OnListChangedListener listChangedListener = new OnListChangedListener() {
+ @Override
+ public void onChanged() {
+ mCallCount++;
+ }
+
+ @Override
+ public void onItemRangeChanged(int start, int count) {
+ fail("onItemRangeChanged should not be called");
+ }
+
+ @Override
+ public void onItemRangeInserted(int start, int count) {
+ fail("onItemRangeInserted should not be called");
+ }
+
+ @Override
+ public void onItemRangeMoved(int from, int to, int count) {
+ fail("onItemRangeMoved should not be called");
+ }
+
+ @Override
+ public void onItemRangeRemoved(int start, int count) {
+ fail("onItemRangeRemoved should not be called");
+ }
+ };
+
+ mListChangeRegistry.add(listChangedListener);
+ assertEquals(0, mCallCount);
+ mListChangeRegistry.notifyChanged(null);
+ assertEquals(1, mCallCount);
+ }
+
+ public void testNotifyChanged() {
+ final int expectedStart = 10;
+ final int expectedCount = 3;
+
+ OnListChangedListener listChangedListener = new OnListChangedListener() {
+ @Override
+ public void onChanged() {
+ fail("onChanged should not be called");
+ }
+
+ @Override
+ public void onItemRangeChanged(int start, int count) {
+ assertEquals(expectedStart, start);
+ assertEquals(expectedCount, count);
+ mCallCount++;
+ }
+
+ @Override
+ public void onItemRangeInserted(int start, int count) {
+ fail("onItemRangeInserted should not be called");
+ }
+
+ @Override
+ public void onItemRangeMoved(int from, int to, int count) {
+ fail("onItemRangeMoved should not be called");
+ }
+
+ @Override
+ public void onItemRangeRemoved(int start, int count) {
+ fail("onItemRangeRemoved should not be called");
+ }
+ };
+
+ mListChangeRegistry.add(listChangedListener);
+ assertEquals(0, mCallCount);
+ mListChangeRegistry.notifyChanged(null, expectedStart, expectedCount);
+ assertEquals(1, mCallCount);
+ }
+
+ public void testNotifyInserted() {
+ final int expectedStart = 10;
+ final int expectedCount = 3;
+
+ OnListChangedListener listChangedListener = new OnListChangedListener() {
+ @Override
+ public void onChanged() {
+ fail("onChanged should not be called");
+ }
+
+ @Override
+ public void onItemRangeChanged(int start, int count) {
+ fail("onItemRangeChanged should not be called");
+ }
+
+ @Override
+ public void onItemRangeInserted(int start, int count) {
+ assertEquals(expectedStart, start);
+ assertEquals(expectedCount, count);
+ mCallCount++;
+ }
+
+ @Override
+ public void onItemRangeMoved(int from, int to, int count) {
+ fail("onItemRangeMoved should not be called");
+ }
+
+ @Override
+ public void onItemRangeRemoved(int start, int count) {
+ fail("onItemRangeRemoved should not be called");
+ }
+ };
+
+ mListChangeRegistry.add(listChangedListener);
+ assertEquals(0, mCallCount);
+ mListChangeRegistry.notifyInserted(null, expectedStart, expectedCount);
+ assertEquals(1, mCallCount);
+ }
+
+ public void testNotifyMoved() {
+ final int expectedFrom = 10;
+ final int expectedTo = 100;
+ final int expectedCount = 3;
+
+ OnListChangedListener listChangedListener = new OnListChangedListener() {
+ @Override
+ public void onChanged() {
+ fail("onChanged should not be called");
+ }
+
+ @Override
+ public void onItemRangeChanged(int start, int count) {
+ fail("onItemRangeChanged should not be called");
+ }
+
+ @Override
+ public void onItemRangeInserted(int start, int count) {
+ fail("onItemRangeInserted should not be called");
+ }
+
+ @Override
+ public void onItemRangeMoved(int from, int to, int count) {
+ assertEquals(expectedFrom, from);
+ assertEquals(expectedTo, to);
+ assertEquals(expectedCount, count);
+ mCallCount++;
+ }
+
+ @Override
+ public void onItemRangeRemoved(int start, int count) {
+ fail("onItemRangeRemoved should not be called");
+ }
+ };
+
+ mListChangeRegistry.add(listChangedListener);
+ assertEquals(0, mCallCount);
+ mListChangeRegistry.notifyMoved(null, expectedFrom, expectedTo, expectedCount);
+ assertEquals(1, mCallCount);
+ }
+
+ public void testNotifyRemoved() {
+ final int expectedStart = 10;
+ final int expectedCount = 3;
+
+ OnListChangedListener listChangedListener = new OnListChangedListener() {
+ @Override
+ public void onChanged() {
+ fail("onChanged should not be called");
+ }
+
+ @Override
+ public void onItemRangeChanged(int start, int count) {
+ fail("onItemRangeChanged should not be called");
+ }
+
+ @Override
+ public void onItemRangeInserted(int start, int count) {
+ fail("onItemRangeInserted should not be called");
+ }
+
+ @Override
+ public void onItemRangeMoved(int from, int to, int count) {
+ fail("onItemRangeMoved should not be called");
+ }
+
+ @Override
+ public void onItemRangeRemoved(int start, int count) {
+ assertEquals(expectedStart, start);
+ assertEquals(expectedCount, count);
+ mCallCount++;
+ }
+ };
+
+ mListChangeRegistry.add(listChangedListener);
+ assertEquals(0, mCallCount);
+ mListChangeRegistry.notifyRemoved(null, expectedStart, expectedCount);
+ assertEquals(1, mCallCount);
+ }
+}
diff --git a/tools/data-binding/TestApp/src/androidTest/java/com/android/databinding/testapp/MapChangeRegistryTest.java b/tools/data-binding/TestApp/src/androidTest/java/com/android/databinding/testapp/MapChangeRegistryTest.java
new file mode 100644
index 0000000..1db9f51
--- /dev/null
+++ b/tools/data-binding/TestApp/src/androidTest/java/com/android/databinding/testapp/MapChangeRegistryTest.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2015 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.databinding.testapp;
+
+import com.android.databinding.library.MapChangeRegistry;
+import com.android.databinding.library.ObservableArrayMap;
+import com.android.databinding.testapp.generated.BasicBindingBinder;
+
+import android.binding.ObservableMap;
+import android.binding.OnMapChangedListener;
+
+public class MapChangeRegistryTest extends BaseDataBinderTest<BasicBindingBinder> {
+
+ private int notificationCount = 0;
+
+ public MapChangeRegistryTest() {
+ super(BasicBindingBinder.class, R.layout.basic_binding);
+ }
+
+ public void testNotifyAllChanged() {
+ MapChangeRegistry mapChangeRegistry = new MapChangeRegistry();
+
+ final ObservableMap<String, Integer> observableObj = new ObservableArrayMap<>();
+
+ final String expectedKey = "key";
+ OnMapChangedListener listener = new OnMapChangedListener<ObservableMap<String, Integer>, String>() {
+ @Override
+ public void onMapChanged(ObservableMap sender, String key) {
+ notificationCount++;
+ assertEquals(observableObj, sender);
+ assertEquals(key, expectedKey);
+ }
+ };
+ mapChangeRegistry.add(listener);
+
+ assertEquals(0, notificationCount);
+ mapChangeRegistry.notifyChange(observableObj, expectedKey);
+ assertEquals(1, notificationCount);
+ }
+}
diff --git a/tools/data-binding/TestApp/src/androidTest/java/com/android/databinding/testapp/PropertyChangeRegistryTest.java b/tools/data-binding/TestApp/src/androidTest/java/com/android/databinding/testapp/PropertyChangeRegistryTest.java
new file mode 100644
index 0000000..7b6197c
--- /dev/null
+++ b/tools/data-binding/TestApp/src/androidTest/java/com/android/databinding/testapp/PropertyChangeRegistryTest.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2015 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.databinding.testapp;
+
+import com.android.databinding.library.PropertyChangeRegistry;
+import com.android.databinding.testapp.generated.BasicBindingBinder;
+
+import android.binding.Observable;
+import android.binding.OnPropertyChangedListener;
+
+public class PropertyChangeRegistryTest extends BaseDataBinderTest<BasicBindingBinder> {
+
+ private int notificationCount = 0;
+
+ public PropertyChangeRegistryTest() {
+ super(BasicBindingBinder.class, R.layout.basic_binding);
+ }
+
+ public void testNotifyChanged() {
+ PropertyChangeRegistry propertyChangeRegistry = new PropertyChangeRegistry();
+
+ final Observable observableObj = new Observable() {
+ @Override
+ public void addOnPropertyChangedListener(
+ OnPropertyChangedListener onPropertyChangedListener) {
+ }
+
+ @Override
+ public void removeOnPropertyChangedListener(
+ OnPropertyChangedListener onPropertyChangedListener) {
+ }
+ };
+
+ final int expectedId = 100;
+ OnPropertyChangedListener listener = new OnPropertyChangedListener() {
+ @Override
+ public void onPropertyChanged(Observable observable, int id) {
+ notificationCount++;
+ assertEquals(expectedId, id);
+ assertEquals(observableObj, observable);
+ }
+ };
+ propertyChangeRegistry.add(listener);
+
+ assertEquals(0, notificationCount);
+ propertyChangeRegistry.notifyChange(observableObj, expectedId);
+ assertEquals(1, notificationCount);
+ }
+}
diff --git a/tools/data-binding/baseLibrary/build.gradle b/tools/data-binding/baseLibrary/build.gradle
index 73c8970..e32fabf 100644
--- a/tools/data-binding/baseLibrary/build.gradle
+++ b/tools/data-binding/baseLibrary/build.gradle
@@ -16,6 +16,10 @@
apply plugin: 'java'
apply plugin: 'maven'
+apply plugin: 'application'
+
+sourceCompatibility = 1.7
+mainClassName = "org.antlr.v4.Tool"
buildscript {
repositories {
@@ -34,6 +38,16 @@ sourceSets {
srcDir 'src/main/java'
}
}
+ test {
+ java {
+ srcDir 'src/test/java'
+ }
+ }
+}
+
+dependencies {
+ compile 'com.tunnelvisionlabs:antlr4:4.4'
+ testCompile 'junit:junit:4.11'
}
uploadArchives {
diff --git a/tools/data-binding/library/src/main/java/com/android/databinding/library/CallbackRegistry.java b/tools/data-binding/baseLibrary/src/main/java/android/binding/CallbackRegistry.java
index 7edb543..90c9c17 100644
--- a/tools/data-binding/library/src/main/java/com/android/databinding/library/CallbackRegistry.java
+++ b/tools/data-binding/baseLibrary/src/main/java/android/binding/CallbackRegistry.java
@@ -13,9 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.android.databinding.library;
-
-import android.util.Log;
+package android.binding;
import java.util.ArrayList;
import java.util.List;
@@ -27,7 +25,7 @@ import java.util.List;
* themselves. This class handles this behavior with constant memory under
* most circumstances.
*
- * <p>A subclass of {@link com.android.databinding.library.CallbackRegistry.NotifierCallback} must be passed to
+ * <p>A subclass of {@link CallbackRegistry.NotifierCallback} must be passed to
* the constructor to define how notifications should be called. That implementation
* does the actual notification on the listener.</p>
*
@@ -80,11 +78,11 @@ public class CallbackRegistry<C, T, A> implements Cloneable {
* Notify all callbacks.
*
* @param sender The originator. This is an opaque parameter passed to
- * {@link com.android.databinding.library.CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
+ * {@link CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
* @param arg An opaque parameter passed to
- * {@link com.android.databinding.library.CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
+ * {@link CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
* @param arg2 An opaque parameter passed to
- * {@link com.android.databinding.library.CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
+ * {@link CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
*/
public synchronized void notifyCallbacks(T sender, int arg, A arg2) {
mNotificationLevel++;
@@ -111,11 +109,11 @@ public class CallbackRegistry<C, T, A> implements Cloneable {
* Notify up to the first Long.SIZE callbacks that don't have a bit set in <code>removed</code>.
*
* @param sender The originator. This is an opaque parameter passed to
- * {@link com.android.databinding.library.CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
+ * {@link CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
* @param arg An opaque parameter passed to
- * {@link com.android.databinding.library.CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
+ * {@link CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
* @param arg2 An opaque parameter passed to
- * {@link com.android.databinding.library.CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
+ * {@link CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
*/
private void notifyFirst64(T sender, int arg, A arg2) {
final int maxNotified = Math.min(Long.SIZE, mCallbacks.size());
@@ -130,11 +128,11 @@ public class CallbackRegistry<C, T, A> implements Cloneable {
* <p>Recursion is used to avoid allocating temporary state on the heap.</p>
*
* @param sender The originator. This is an opaque parameter passed to
- * {@link com.android.databinding.library.CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
+ * {@link CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
* @param arg An opaque parameter passed to
- * {@link com.android.databinding.library.CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
+ * {@link CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
* @param arg2 An opaque parameter passed to
- * {@link com.android.databinding.library.CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
+ * {@link CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
*/
private void notifyRecurse(T sender, int arg, A arg2) {
final int callbackCount = mCallbacks.size();
@@ -157,11 +155,11 @@ public class CallbackRegistry<C, T, A> implements Cloneable {
* remainderIndex is -1, the first 64 will be notified instead.
*
* @param sender The originator. This is an opaque parameter passed to
- * {@link com.android.databinding.library.CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
+ * {@link CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
* @param arg An opaque parameter passed to
- * {@link com.android.databinding.library.CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
+ * {@link CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
* @param arg2 An opaque parameter passed to
- * {@link com.android.databinding.library.CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
+ * {@link CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
* @param remainderIndex The index into mRemainderRemoved that should be notified.
*/
private void notifyRemainder(T sender, int arg, A arg2, int remainderIndex) {
@@ -183,11 +181,11 @@ public class CallbackRegistry<C, T, A> implements Cloneable {
* endIndex should be notified.
*
* @param sender The originator. This is an opaque parameter passed to
- * {@link com.android.databinding.library.CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
+ * {@link CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
* @param arg An opaque parameter passed to
- * {@link com.android.databinding.library.CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
+ * {@link CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
* @param arg2 An opaque parameter passed to
- * {@link com.android.databinding.library.CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
+ * {@link CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
* @param startIndex The index into the mCallbacks to start notifying.
* @param endIndex One past the last index into mCallbacks to notify.
* @param bits A bit field indicating which callbacks have been removed and shouldn't
@@ -381,7 +379,7 @@ public class CallbackRegistry<C, T, A> implements Cloneable {
}
}
} catch (CloneNotSupportedException e) {
- Log.e(TAG, "Could not clone CallbackRegistry", e);
+ e.printStackTrace();
}
return clone;
}
@@ -401,8 +399,8 @@ public class CallbackRegistry<C, T, A> implements Cloneable {
* @param sender The opaque sender object.
* @param arg The opaque notification parameter.
* @param arg2 An opaque argument passed in
- * {@link com.android.databinding.library.CallbackRegistry#notifyCallbacks}
- * @see CallbackRegistry#CallbackRegistry(com.android.databinding.library.CallbackRegistry.NotifierCallback)
+ * {@link CallbackRegistry#notifyCallbacks}
+ * @see CallbackRegistry#CallbackRegistry(CallbackRegistry.NotifierCallback)
*/
public abstract void onNotifyCallback(C callback, T sender, int arg, A arg2);
}
diff --git a/tools/data-binding/library/src/main/java/com/android/databinding/library/Observable.java b/tools/data-binding/baseLibrary/src/main/java/android/binding/Observable.java
index 0c58a24..5bac9b1 100644
--- a/tools/data-binding/library/src/main/java/com/android/databinding/library/Observable.java
+++ b/tools/data-binding/baseLibrary/src/main/java/android/binding/Observable.java
@@ -14,9 +14,11 @@
* limitations under the License.
*/
-package com.android.databinding.library;
+package android.binding;
public interface Observable {
+
public void addOnPropertyChangedListener(OnPropertyChangedListener listener);
+
public void removeOnPropertyChangedListener(OnPropertyChangedListener listener);
}
diff --git a/tools/data-binding/library/src/main/java/com/android/databinding/library/ObservableList.java b/tools/data-binding/baseLibrary/src/main/java/android/binding/ObservableList.java
index a512efd..61e6663 100644
--- a/tools/data-binding/library/src/main/java/com/android/databinding/library/ObservableList.java
+++ b/tools/data-binding/baseLibrary/src/main/java/android/binding/ObservableList.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.android.databinding.library;
+package android.binding;
import java.util.List;
diff --git a/tools/data-binding/library/src/main/java/com/android/databinding/library/ObservableMap.java b/tools/data-binding/baseLibrary/src/main/java/android/binding/ObservableMap.java
index 55975e3..f0237aa 100644
--- a/tools/data-binding/library/src/main/java/com/android/databinding/library/ObservableMap.java
+++ b/tools/data-binding/baseLibrary/src/main/java/android/binding/ObservableMap.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.android.databinding.library;
+package android.binding;
import java.util.Map;
diff --git a/tools/data-binding/library/src/main/java/com/android/databinding/library/OnListChangedListener.java b/tools/data-binding/baseLibrary/src/main/java/android/binding/OnListChangedListener.java
index 01b8ed4..99a05fe 100644
--- a/tools/data-binding/library/src/main/java/com/android/databinding/library/OnListChangedListener.java
+++ b/tools/data-binding/baseLibrary/src/main/java/android/binding/OnListChangedListener.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.android.databinding.library;
+package android.binding;
public interface OnListChangedListener {
void onChanged();
diff --git a/tools/data-binding/library/src/main/java/com/android/databinding/library/OnMapChangedListener.java b/tools/data-binding/baseLibrary/src/main/java/android/binding/OnMapChangedListener.java
index 4fd3a7d..edde01b 100644
--- a/tools/data-binding/library/src/main/java/com/android/databinding/library/OnMapChangedListener.java
+++ b/tools/data-binding/baseLibrary/src/main/java/android/binding/OnMapChangedListener.java
@@ -13,8 +13,8 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.android.databinding.library;
+package android.binding;
-public interface OnMapChangedListener<T, K> {
+public interface OnMapChangedListener<T extends ObservableMap<K, ?>, K> {
void onMapChanged(T sender, K key);
}
diff --git a/tools/data-binding/library/src/main/java/com/android/databinding/library/OnPropertyChangedListener.java b/tools/data-binding/baseLibrary/src/main/java/android/binding/OnPropertyChangedListener.java
index 407af70..b328f9d 100644
--- a/tools/data-binding/library/src/main/java/com/android/databinding/library/OnPropertyChangedListener.java
+++ b/tools/data-binding/baseLibrary/src/main/java/android/binding/OnPropertyChangedListener.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.databinding.library;
+package android.binding;
public interface OnPropertyChangedListener {
public void onPropertyChanged(Observable sender, int fieldId);
diff --git a/tools/data-binding/library/src/test/java/com/android/databinding/library/CallbackRegistryTest.java b/tools/data-binding/baseLibrary/src/test/java/android/binding/CallbackRegistryTest.java
index 56f0599..d567f34 100644
--- a/tools/data-binding/library/src/test/java/com/android/databinding/library/CallbackRegistryTest.java
+++ b/tools/data-binding/baseLibrary/src/test/java/android/binding/CallbackRegistryTest.java
@@ -13,28 +13,27 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.android.databinding.library;
+package android.binding;
import org.junit.Test;
-import static org.junit.Assert.*;
-
import java.util.ArrayList;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
public class CallbackRegistryTest {
final Integer callback1 = 1;
final Integer callback2 = 2;
final Integer callback3 = 3;
-
CallbackRegistry<Integer, CallbackRegistryTest, Integer> registry;
-
int notify1;
int notify2;
int notify3;
-
int[] deepNotifyCount = new int[300];
-
Integer argValue;
private void addNotifyCount(Integer callback) {
diff --git a/tools/data-binding/compiler/src/main/java/com/android/databinding/ClassAnalyzer.java b/tools/data-binding/compiler/src/main/java/com/android/databinding/ClassAnalyzer.java
index 87dd392..24d6191 100644
--- a/tools/data-binding/compiler/src/main/java/com/android/databinding/ClassAnalyzer.java
+++ b/tools/data-binding/compiler/src/main/java/com/android/databinding/ClassAnalyzer.java
@@ -33,9 +33,9 @@ import java.util.Map;
public class ClassAnalyzer {
- private static final String OBSERVABLE_CLASS_NAME = "com.android.databinding.library.Observable";
- private static final String OBSERVABLE_LIST_CLASS_NAME = "com.android.databinding.library.ObservableList";
- private static final String OBSERVABLE_MAP_CLASS_NAME = "com.android.databinding.library.ObservableMap";
+ private static final String OBSERVABLE_CLASS_NAME = "android.binding.Observable";
+ private static final String OBSERVABLE_LIST_CLASS_NAME = "android.binding.ObservableList";
+ private static final String OBSERVABLE_MAP_CLASS_NAME = "android.binding.ObservableMap";
private static final String BINDABLE_ANNOTATION_NAME = "android.binding.Bindable";
private static Map<String, String> sTestClassNameMapping = ImmutableMap.of(
diff --git a/tools/data-binding/compiler/src/main/kotlin/com/android/databinding/writer/LayoutBinderWriter.kt b/tools/data-binding/compiler/src/main/kotlin/com/android/databinding/writer/LayoutBinderWriter.kt
index 2e3aae5..9d77e53 100644
--- a/tools/data-binding/compiler/src/main/kotlin/com/android/databinding/writer/LayoutBinderWriter.kt
+++ b/tools/data-binding/compiler/src/main/kotlin/com/android/databinding/writer/LayoutBinderWriter.kt
@@ -509,7 +509,7 @@ class LayoutBinderWriter(val layoutBinder : LayoutBinder) {
tab("${tmpDirtyFlags.type} ${tmpDirtyFlags.localValue(i)} = ${mDirtyFlags.localValue(i)};")
tab("${mDirtyFlags.localValue(i)} = 0;")
}
- tab("""log("dirty flags", mDirtyFlags);""")
+ //tab("""log("dirty flags", mDirtyFlags);""")
model.getPendingExpressions().filterNot {it.isVariable()}.forEach {
tab("${it.getResolvedType().toJavaCode()} ${it.localName} = ${it.getDefaultValue()};")
}
@@ -573,12 +573,12 @@ class LayoutBinderWriter(val layoutBinder : LayoutBinder) {
if (!expr.isEqualityCheck() && nullables.isNotEmpty()) {
tab ("if ( ${nullables.map { "${it.localName} != null" }.joinToString(" && ")}) {") {
tab("${expr.localName}").app(" = ", expr.toCode(true)).app(";")
- tab("""log("${expr}" + ${expr.localName},0);""")
+ //tab("""log("${expr}" + ${expr.localName},0);""")
}
tab("}")
} else {
tab("${expr.localName}").app(" = ", expr.toCode(true)).app(";")
- tab("""log("${expr}" + ${expr.localName},0);""")
+ //tab("""log("${expr}" + ${expr.localName},0);""")
}
if (expr.getResolvedType().isObservable()) {
tab("updateRegistration(${expr.getId()}, ${expr.localName});")
diff --git a/tools/data-binding/grammarBuilder/build.gradle b/tools/data-binding/grammarBuilder/build.gradle
index 7c86f45..cd82724 100644
--- a/tools/data-binding/grammarBuilder/build.gradle
+++ b/tools/data-binding/grammarBuilder/build.gradle
@@ -15,7 +15,7 @@
*/
apply plugin: 'java'
-apply plugin:'application'
+apply plugin: 'application'
apply plugin: 'maven'
sourceCompatibility = 1.7
diff --git a/tools/data-binding/grammarBuilder/src/test/java/com/android/databinding/BindingExpressionParserTest.java b/tools/data-binding/grammarBuilder/src/test/java/com/android/databinding/BindingExpressionParserTest.java
index 2c79a06..af527cb 100644
--- a/tools/data-binding/grammarBuilder/src/test/java/com/android/databinding/BindingExpressionParserTest.java
+++ b/tools/data-binding/grammarBuilder/src/test/java/com/android/databinding/BindingExpressionParserTest.java
@@ -1,17 +1,40 @@
package com.android.databinding;
-import com.android.databinding.BindingExpressionParser.*;
-
-import junit.framework.TestCase;
+import com.android.databinding.BindingExpressionParser.AndOrOpContext;
+import com.android.databinding.BindingExpressionParser.BinaryOpContext;
+import com.android.databinding.BindingExpressionParser.BindingSyntaxContext;
+import com.android.databinding.BindingExpressionParser.BitShiftOpContext;
+import com.android.databinding.BindingExpressionParser.ComparisonOpContext;
+import com.android.databinding.BindingExpressionParser.DefaultsContext;
+import com.android.databinding.BindingExpressionParser.DotOpContext;
+import com.android.databinding.BindingExpressionParser.ExpressionContext;
+import com.android.databinding.BindingExpressionParser.GroupingContext;
+import com.android.databinding.BindingExpressionParser.LiteralContext;
+import com.android.databinding.BindingExpressionParser.MathOpContext;
+import com.android.databinding.BindingExpressionParser.PrimaryContext;
+import com.android.databinding.BindingExpressionParser.PrimitiveTypeContext;
+import com.android.databinding.BindingExpressionParser.QuestionQuestionOpContext;
+import com.android.databinding.BindingExpressionParser.ResourceContext;
+import com.android.databinding.BindingExpressionParser.StringLiteralContext;
+import com.android.databinding.BindingExpressionParser.TernaryOpContext;
+import com.android.databinding.BindingExpressionParser.UnaryOpContext;
import org.antlr.v4.runtime.ANTLRInputStream;
import org.antlr.v4.runtime.CommonTokenStream;
import org.antlr.v4.runtime.Token;
import org.antlr.v4.runtime.tree.TerminalNode;
+import org.junit.Test;
import java.io.StringReader;
-public class BindingExpressionParserTest extends TestCase {
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+public class BindingExpressionParserTest {
+
+ @Test
public void testSingleQuoteStringLiteral() throws Exception {
String expr = "`test`";
LiteralContext literal = parseLiteral(expr);
@@ -23,6 +46,7 @@ public class BindingExpressionParserTest extends TestCase {
assertEquals("`test`", token.getText());
}
+ @Test
public void testDoubleQuoteStringLiteral() throws Exception {
String expr = "\"test\"";
@@ -33,6 +57,7 @@ public class BindingExpressionParserTest extends TestCase {
assertEquals("\"test\"", token.getText());
}
+ @Test
public void testSingleQuoteEscapeStringLiteral() throws Exception {
String expr = "`\"t\\`est\"`";
LiteralContext literal = parseLiteral(expr);
@@ -42,6 +67,7 @@ public class BindingExpressionParserTest extends TestCase {
assertEquals("`\"t\\`est\"`", token.getText());
}
+ @Test
public void testCharLiteral() throws Exception {
LiteralContext literal = parseLiteral("'c'");
assertEquals("'c'", literal.getText());
@@ -51,6 +77,7 @@ public class BindingExpressionParserTest extends TestCase {
assertEquals("'\\''", literal.getText());
}
+ @Test
public void testIntLiterals() throws Exception {
compareIntLiteral("123");
compareIntLiteral("123l");
@@ -72,6 +99,7 @@ public class BindingExpressionParserTest extends TestCase {
compareIntLiteral("0B0101_0101l");
}
+ @Test
public void testFloatLiterals() throws Exception {
compareFloatLiteral("0.12345");
compareFloatLiteral("0.12345f");
@@ -82,17 +110,20 @@ public class BindingExpressionParserTest extends TestCase {
compareFloatLiteral("132450.4e123");
}
+ @Test
public void testBoolLiterals() throws Exception {
compareBoolLiteral("true");
compareBoolLiteral("false");
}
+ @Test
public void testNullLiteral() throws Exception {
LiteralContext literal = parseLiteral("null");
String token = literal.getText();
assertEquals("null", token);
}
+ @Test
public void testVoidExtraction() throws Exception {
PrimaryContext primary = parsePrimary("void.class");
assertNotNull(primary.classExtraction());
@@ -100,17 +131,20 @@ public class BindingExpressionParserTest extends TestCase {
assertEquals("void", primary.classExtraction().getChild(0).getText());
}
+ @Test
public void testPrimitiveClassExtraction() throws Exception {
PrimaryContext primary = parsePrimary("int.class");
PrimitiveTypeContext type = primary.classExtraction().type().primitiveType();
assertEquals("int", type.getText());
}
+ @Test
public void testIdentifier() throws Exception {
PrimaryContext primary = parsePrimary("abcdEfg");
assertEquals("abcdEfg", primary.identifier().getText());
}
+ @Test
public void testUnaryOperators() throws Exception {
compareUnaryOperators("+");
compareUnaryOperators("-");
@@ -118,6 +152,7 @@ public class BindingExpressionParserTest extends TestCase {
compareUnaryOperators("~");
}
+ @Test
public void testMathOperators() throws Exception {
compareMathOperators("+");
compareMathOperators("-");
@@ -126,12 +161,14 @@ public class BindingExpressionParserTest extends TestCase {
compareMathOperators("%");
}
+ @Test
public void testBitShiftOperators() throws Exception {
compareBitShiftOperators(">>>");
compareBitShiftOperators("<<");
compareBitShiftOperators(">>");
}
+ @Test
public void testComparisonShiftOperators() throws Exception {
compareComparisonOperators("<");
compareComparisonOperators(">");
@@ -141,17 +178,20 @@ public class BindingExpressionParserTest extends TestCase {
compareComparisonOperators("!=");
}
+ @Test
public void testAndOrOperators() throws Exception {
compareAndOrOperators("&&");
compareAndOrOperators("||");
}
+ @Test
public void testBinaryOperators() throws Exception {
compareBinaryOperators("&");
compareBinaryOperators("|");
compareBinaryOperators("^");
}
+ @Test
public void testTernaryOperator() throws Exception {
TernaryOpContext expression = parseExpression("true ? 1 : 0");
assertEquals(5, expression.getChildCount());
@@ -161,9 +201,10 @@ public class BindingExpressionParserTest extends TestCase {
assertEquals("1",
((PrimaryContext) expression.iftrue).literal().javaLiteral().getText());
assertEquals(":", expression.getChild(3).getText());
- assertEquals("0", ((PrimaryContext)expression.iffalse).literal().javaLiteral().getText());
+ assertEquals("0", ((PrimaryContext) expression.iffalse).literal().javaLiteral().getText());
}
+ @Test
public void testDot() throws Exception {
DotOpContext expression = parseExpression("one.two.three");
assertEquals(3, expression.getChildCount());
@@ -175,14 +216,16 @@ public class BindingExpressionParserTest extends TestCase {
assertEquals("one", ((PrimaryContext) left.expression()).identifier().getText());
}
+ @Test
public void testQuestionQuestion() throws Exception {
QuestionQuestionOpContext expression = parseExpression("one ?? two");
assertEquals(3, expression.getChildCount());
- assertEquals("one", ((PrimaryContext)expression.left).identifier().getText());
- assertEquals("two", ((PrimaryContext)expression.right).identifier().getText());
+ assertEquals("one", ((PrimaryContext) expression.left).identifier().getText());
+ assertEquals("two", ((PrimaryContext) expression.right).identifier().getText());
assertEquals("??", expression.op.getText());
}
+ @Test
public void testResourceReference() throws Exception {
compareResource("@id/foo_bar");
compareResource("@transition/foo_bar");
@@ -192,12 +235,14 @@ public class BindingExpressionParserTest extends TestCase {
compareResource("@app:id/foo_bar");
}
+ @Test
public void testDefaults() throws Exception {
BindingSyntaxContext syntax = parseExpressionString("foo.bar, default = @id/foo_bar");
DefaultsContext defaults = syntax.defaults();
assertEquals("@id/foo_bar", defaults.constantValue().ResourceReference().getText());
}
+ @Test
public void testParentheses() throws Exception {
GroupingContext grouping = parseExpression("(1234)");
assertEquals("1234", grouping.expression().getText());
@@ -223,11 +268,11 @@ public class BindingExpressionParserTest extends TestCase {
BinaryOpContext expression = parseExpression("1 " + op + " 2");
assertEquals(3, expression.getChildCount());
assertTrue(expression.left instanceof ExpressionContext);
- String one = ((PrimaryContext)expression.left).literal().javaLiteral().getText();
+ String one = ((PrimaryContext) expression.left).literal().javaLiteral().getText();
assertEquals("1", one);
assertEquals(op, expression.op.getText());
assertTrue(expression.right instanceof ExpressionContext);
- String two = ((PrimaryContext)expression.right).literal().javaLiteral().getText();
+ String two = ((PrimaryContext) expression.right).literal().javaLiteral().getText();
assertEquals("2", two);
}
@@ -235,11 +280,11 @@ public class BindingExpressionParserTest extends TestCase {
MathOpContext expression = parseExpression("1 " + op + " 2");
assertEquals(3, expression.getChildCount());
assertTrue(expression.left instanceof ExpressionContext);
- String one = ((PrimaryContext)expression.left).literal().javaLiteral().getText();
+ String one = ((PrimaryContext) expression.left).literal().javaLiteral().getText();
assertEquals("1", one);
assertEquals(op, expression.op.getText());
assertTrue(expression.right instanceof ExpressionContext);
- String two = ((PrimaryContext)expression.right).literal().javaLiteral().getText();
+ String two = ((PrimaryContext) expression.right).literal().javaLiteral().getText();
assertEquals("2", two);
}
@@ -247,11 +292,11 @@ public class BindingExpressionParserTest extends TestCase {
BitShiftOpContext expression = parseExpression("1 " + op + " 2");
assertEquals(3, expression.getChildCount());
assertTrue(expression.left instanceof ExpressionContext);
- String one = ((PrimaryContext)expression.left).literal().javaLiteral().getText();
+ String one = ((PrimaryContext) expression.left).literal().javaLiteral().getText();
assertEquals("1", one);
assertEquals(op, expression.op.getText());
assertTrue(expression.right instanceof ExpressionContext);
- String two = ((PrimaryContext)expression.right).literal().javaLiteral().getText();
+ String two = ((PrimaryContext) expression.right).literal().javaLiteral().getText();
assertEquals("2", two);
}
@@ -259,11 +304,11 @@ public class BindingExpressionParserTest extends TestCase {
ComparisonOpContext expression = parseExpression("1 " + op + " 2");
assertEquals(3, expression.getChildCount());
assertTrue(expression.left instanceof ExpressionContext);
- String one = ((PrimaryContext)expression.left).literal().javaLiteral().getText();
+ String one = ((PrimaryContext) expression.left).literal().javaLiteral().getText();
assertEquals("1", one);
assertEquals(op, expression.op.getText());
assertTrue(expression.right instanceof ExpressionContext);
- String two = ((PrimaryContext)expression.right).literal().javaLiteral().getText();
+ String two = ((PrimaryContext) expression.right).literal().javaLiteral().getText();
assertEquals("2", two);
}
@@ -271,11 +316,11 @@ public class BindingExpressionParserTest extends TestCase {
AndOrOpContext expression = parseExpression("1 " + op + " 2");
assertEquals(3, expression.getChildCount());
assertTrue(expression.left instanceof ExpressionContext);
- String one = ((PrimaryContext)expression.left).literal().javaLiteral().getText();
+ String one = ((PrimaryContext) expression.left).literal().javaLiteral().getText();
assertEquals("1", one);
assertEquals(op, expression.op.getText());
assertTrue(expression.right instanceof ExpressionContext);
- String two = ((PrimaryContext)expression.right).literal().javaLiteral().getText();
+ String two = ((PrimaryContext) expression.right).literal().javaLiteral().getText();
assertEquals("2", two);
}
diff --git a/tools/data-binding/library/build.gradle b/tools/data-binding/library/build.gradle
index f2dc745..b9ae040 100644
--- a/tools/data-binding/library/build.gradle
+++ b/tools/data-binding/library/build.gradle
@@ -53,13 +53,6 @@ android {
}
}
}
-sourceSets {
- test {
- java {
- srcDir 'src/test/java'
- }
- }
-}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(":baseLibrary")
diff --git a/tools/data-binding/library/src/main/java/com/android/databinding/library/BaseObservable.java b/tools/data-binding/library/src/main/java/com/android/databinding/library/BaseObservable.java
index 130b0d5..e6aed17 100644
--- a/tools/data-binding/library/src/main/java/com/android/databinding/library/BaseObservable.java
+++ b/tools/data-binding/library/src/main/java/com/android/databinding/library/BaseObservable.java
@@ -16,6 +16,9 @@
package com.android.databinding.library;
+import android.binding.Observable;
+import android.binding.OnPropertyChangedListener;
+
public class BaseObservable implements Observable {
private PropertyChangeRegistry mCallbacks;
diff --git a/tools/data-binding/library/src/main/java/com/android/databinding/library/ListChangeRegistry.java b/tools/data-binding/library/src/main/java/com/android/databinding/library/ListChangeRegistry.java
index 22c85e2..034c44a 100644
--- a/tools/data-binding/library/src/main/java/com/android/databinding/library/ListChangeRegistry.java
+++ b/tools/data-binding/library/src/main/java/com/android/databinding/library/ListChangeRegistry.java
@@ -15,10 +15,14 @@
*/
package com.android.databinding.library;
+import android.binding.CallbackRegistry;
+import android.binding.ObservableList;
+import android.binding.OnListChangedListener;
import android.support.v4.util.Pools;
public class ListChangeRegistry
- extends CallbackRegistry<OnListChangedListener, ObservableList, ListChangeRegistry.ListChanges> {
+ extends
+ CallbackRegistry<OnListChangedListener, ObservableList, ListChangeRegistry.ListChanges> {
private static final Pools.SynchronizedPool<ListChanges> sListChanges =
new Pools.SynchronizedPool<>(10);
diff --git a/tools/data-binding/library/src/main/java/com/android/databinding/library/MapChangeRegistry.java b/tools/data-binding/library/src/main/java/com/android/databinding/library/MapChangeRegistry.java
index bb11aad..0812a5c 100644
--- a/tools/data-binding/library/src/main/java/com/android/databinding/library/MapChangeRegistry.java
+++ b/tools/data-binding/library/src/main/java/com/android/databinding/library/MapChangeRegistry.java
@@ -15,6 +15,10 @@
*/
package com.android.databinding.library;
+import android.binding.CallbackRegistry;
+import android.binding.ObservableMap;
+import android.binding.OnMapChangedListener;
+
public class MapChangeRegistry
extends CallbackRegistry<OnMapChangedListener, ObservableMap, Object> {
@@ -30,4 +34,8 @@ public class MapChangeRegistry
public MapChangeRegistry() {
super(NOTIFIER_CALLBACK);
}
+
+ public void notifyChange(ObservableMap sender, Object key) {
+ notifyCallbacks(sender, 0, key);
+ }
}
diff --git a/tools/data-binding/library/src/main/java/com/android/databinding/library/ObservableArrayList.java b/tools/data-binding/library/src/main/java/com/android/databinding/library/ObservableArrayList.java
index f6a7525..7d43d08 100644
--- a/tools/data-binding/library/src/main/java/com/android/databinding/library/ObservableArrayList.java
+++ b/tools/data-binding/library/src/main/java/com/android/databinding/library/ObservableArrayList.java
@@ -15,6 +15,9 @@
*/
package com.android.databinding.library;
+import android.binding.ObservableList;
+import android.binding.OnListChangedListener;
+
import java.util.ArrayList;
import java.util.Collection;
diff --git a/tools/data-binding/library/src/main/java/com/android/databinding/library/ObservableArrayMap.java b/tools/data-binding/library/src/main/java/com/android/databinding/library/ObservableArrayMap.java
index 62defd1..e265cd1 100644
--- a/tools/data-binding/library/src/main/java/com/android/databinding/library/ObservableArrayMap.java
+++ b/tools/data-binding/library/src/main/java/com/android/databinding/library/ObservableArrayMap.java
@@ -15,6 +15,8 @@
*/
package com.android.databinding.library;
+import android.binding.ObservableMap;
+import android.binding.OnMapChangedListener;
import android.support.v4.util.ArrayMap;
import android.support.v4.util.SimpleArrayMap;
diff --git a/tools/data-binding/library/src/main/java/com/android/databinding/library/PropertyChangeRegistry.java b/tools/data-binding/library/src/main/java/com/android/databinding/library/PropertyChangeRegistry.java
index 468f120..5fe43bc 100644
--- a/tools/data-binding/library/src/main/java/com/android/databinding/library/PropertyChangeRegistry.java
+++ b/tools/data-binding/library/src/main/java/com/android/databinding/library/PropertyChangeRegistry.java
@@ -15,6 +15,10 @@
*/
package com.android.databinding.library;
+import android.binding.CallbackRegistry;
+import android.binding.Observable;
+import android.binding.OnPropertyChangedListener;
+
public class PropertyChangeRegistry extends
CallbackRegistry<OnPropertyChangedListener, Observable, Void> {
diff --git a/tools/data-binding/library/src/main/java/com/android/databinding/library/ViewDataBinder.java b/tools/data-binding/library/src/main/java/com/android/databinding/library/ViewDataBinder.java
index 81f4170..ca8a625 100644
--- a/tools/data-binding/library/src/main/java/com/android/databinding/library/ViewDataBinder.java
+++ b/tools/data-binding/library/src/main/java/com/android/databinding/library/ViewDataBinder.java
@@ -16,6 +16,12 @@
package com.android.databinding.library;
+import android.binding.Observable;
+import android.binding.ObservableList;
+import android.binding.ObservableMap;
+import android.binding.OnListChangedListener;
+import android.binding.OnMapChangedListener;
+import android.binding.OnPropertyChangedListener;
import android.view.View;
import java.lang.Override;
@@ -294,7 +300,7 @@ abstract public class ViewDataBinder {
}
@Override
- public void onMapChanged(Object sender, Object key) {
+ public void onMapChanged(ObservableMap sender, Object key) {
ViewDataBinder binder = getBinder();
if (binder == null || sender != getTarget()) {
return;
diff --git a/tools/data-binding/samples/BindingDemo/app/build.gradle b/tools/data-binding/samples/BindingDemo/app/build.gradle
index a2d1be0..89f635b 100644
--- a/tools/data-binding/samples/BindingDemo/app/build.gradle
+++ b/tools/data-binding/samples/BindingDemo/app/build.gradle
@@ -40,6 +40,9 @@ android {
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
+ packagingOptions {
+ exclude 'META-INF/services/javax.annotation.processing.Processor'
+ }
}
android.applicationVariants.all { variant ->
diff --git a/tools/data-binding/samples/BindingDemo/app/src/main/java/com/android/example/bindingdemo/MainActivity.java b/tools/data-binding/samples/BindingDemo/app/src/main/java/com/android/example/bindingdemo/MainActivity.java
index 07c96f6..dd06cdc 100644
--- a/tools/data-binding/samples/BindingDemo/app/src/main/java/com/android/example/bindingdemo/MainActivity.java
+++ b/tools/data-binding/samples/BindingDemo/app/src/main/java/com/android/example/bindingdemo/MainActivity.java
@@ -1,6 +1,8 @@
package com.android.example.bindingdemo;
import android.binding.Bindable;
+import android.binding.Observable;
+import android.binding.OnPropertyChangedListener;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
@@ -10,7 +12,6 @@ import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
-import com.android.databinding.library.OnPropertyChangedListener;
import android.binding.BR;
import com.android.databinding.library.PropertyChangeRegistry;
@@ -19,7 +20,6 @@ import com.android.example.bindingdemo.generated.MainActivityBinder;
import com.android.example.bindingdemo.vo.User;
import com.android.example.bindingdemo.vo.Users;
import com.android.databinding.library.DataBinder;
-import com.android.databinding.library.Observable;
import java.util.ArrayList;
import java.util.Arrays;
diff --git a/tools/data-binding/settings.gradle b/tools/data-binding/settings.gradle
index f3b2c33..a65f037 100644
--- a/tools/data-binding/settings.gradle
+++ b/tools/data-binding/settings.gradle
@@ -1,4 +1,4 @@
-include ':library', ':baseLibrary'
+include ':library'
include ':compiler'
include ':gradlePlugin'
include ':baseLibrary'