java/syncbase: Hide Root Watch Change and Fix Test
Note: We may eventually hide the userdata collection too. However,
efforts to do that are a separate issue.
See https://github.com/vanadium/issues/issues/1372 for that.
Closes https://github.com/vanadium/issues/issues/1373
Change-Id: I825ecc7b0797ec3b06a92521afa7f49da5913d95
diff --git a/syncbase/src/main/java/io/v/syncbase/Database.java b/syncbase/src/main/java/io/v/syncbase/Database.java
index 4837017..1fea773 100644
--- a/syncbase/src/main/java/io/v/syncbase/Database.java
+++ b/syncbase/src/main/java/io/v/syncbase/Database.java
@@ -413,7 +413,10 @@
@Override
public void onChange(io.v.syncbase.core.WatchChange coreWatchChange) {
// TODO(razvanm): Ignore changes to userdata collection.
- mBatch.add(new WatchChange(coreWatchChange));
+ if (coreWatchChange.entityType !=
+ io.v.syncbase.core.WatchChange.EntityType.ROOT) {
+ mBatch.add(new WatchChange(coreWatchChange));
+ }
if (!coreWatchChange.continued) {
final SettableFuture<Boolean> setFuture = SettableFuture.create();
if (!mGotFirstBatch) {
diff --git a/syncbase/src/main/java/io/v/syncbase/WatchChange.java b/syncbase/src/main/java/io/v/syncbase/WatchChange.java
index 46c236c..5160de1 100644
--- a/syncbase/src/main/java/io/v/syncbase/WatchChange.java
+++ b/syncbase/src/main/java/io/v/syncbase/WatchChange.java
@@ -13,7 +13,6 @@
*/
public class WatchChange {
public enum EntityType {
- ROOT,
COLLECTION,
ROW
}
@@ -33,9 +32,7 @@
private final boolean mContinued;
WatchChange(io.v.syncbase.core.WatchChange change) {
- if (change.entityType == io.v.syncbase.core.WatchChange.EntityType.ROOT) {
- mEntityType = EntityType.ROOT;
- } else if (change.entityType == io.v.syncbase.core.WatchChange.EntityType.COLLECTION) {
+ if (change.entityType == io.v.syncbase.core.WatchChange.EntityType.COLLECTION) {
mEntityType = EntityType.COLLECTION;
} else if (change.entityType == io.v.syncbase.core.WatchChange.EntityType.ROW) {
mEntityType = EntityType.ROW;
diff --git a/syncbase/src/test/java/io/v/syncbase/SyncbaseTest.java b/syncbase/src/test/java/io/v/syncbase/SyncbaseTest.java
index 311ce91..72a2431 100644
--- a/syncbase/src/test/java/io/v/syncbase/SyncbaseTest.java
+++ b/syncbase/src/test/java/io/v/syncbase/SyncbaseTest.java
@@ -188,18 +188,13 @@
@Override
public void onInitialState(Iterator<WatchChange> values) {
// TODO(razvanm): Check the entire contents of each change.
- // 1st change: the root entity.
+ // 1st change: the collection entity for the "c" collection.
assertTrue(values.hasNext());
- WatchChange watchChange = values.next();
- assertEquals(WatchChange.EntityType.ROOT, watchChange.getEntityType());
- assertEquals(WatchChange.ChangeType.PUT, watchChange.getChangeType());
- // 2nd change: the collection entity for the "c" collection.
- assertTrue(values.hasNext());
- watchChange = (WatchChange) values.next();
+ WatchChange watchChange = (WatchChange) values.next();
assertEquals(WatchChange.EntityType.COLLECTION, watchChange.getEntityType());
assertEquals(WatchChange.ChangeType.PUT, watchChange.getChangeType());
assertEquals("c", watchChange.getCollectionId().getName());
- // 3nd change: the row for the "foo" key.
+ // 2nd change: the row for the "foo" key.
assertTrue(values.hasNext());
watchChange = (WatchChange) values.next();
assertEquals(WatchChange.EntityType.ROW, watchChange.getEntityType());
@@ -208,12 +203,18 @@
assertEquals("foo", watchChange.getRowKey());
// TODO(razvanm): Uncomment after the POJO start working.
//assertEquals(1, watchChange.getValue());
- // 4nd change: the collection entity for the userdata collection.
+ // 3rd change: the collection entity for the userdata collection.
assertTrue(values.hasNext());
watchChange = (WatchChange) values.next();
assertEquals(WatchChange.EntityType.COLLECTION, watchChange.getEntityType());
assertEquals(WatchChange.ChangeType.PUT, watchChange.getChangeType());
- assertFalse(values.hasNext());
+ // 4th change: the userdata collection has a row for "c"'s syncgroup.
+ assertTrue(values.hasNext());
+ watchChange = (WatchChange) values.next();
+ assertEquals(WatchChange.EntityType.ROW, watchChange.getEntityType());
+ assertEquals(WatchChange.ChangeType.PUT, watchChange.getChangeType());
+ assertEquals("userdata__", watchChange.getCollectionId().getName());
+ assertTrue(watchChange.getRowKey().endsWith("c"));
waitOnInitialState.set(null);
}