diff options
author | George Mount <mount@google.com> | 2015-01-27 15:23:47 -0800 |
---|---|---|
committer | George Mount <mount@google.com> | 2015-01-27 15:47:05 -0800 |
commit | 662d87aa0b5b045ed3fc06532f06f3bd278562c1 (patch) | |
tree | 577930320018e3987336afb2ee838b26822b36ab /tools | |
parent | 607fb140679970b683102200aecbc06880a529e7 (diff) | |
download | frameworks_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')
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' |