Skip to content

Commit 2a37cb2

Browse files
Review
1 parent 6410ea5 commit 2a37cb2

File tree

7 files changed

+57
-93
lines changed

7 files changed

+57
-93
lines changed

firebase-database/src/androidTest/java/com/google/firebase/database/DataTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2749,13 +2749,13 @@ public void onComplete(DatabaseError error, boolean committed, DataSnapshot curr
27492749
@Test
27502750
public void testServerIncrementOverwritesExistingDataOnline()
27512751
throws DatabaseException, TimeoutException, InterruptedException {
2752-
serverIncrementOverwritesExistingData(true);
2752+
serverIncrementOverwritesExistingData(/* online= */ true);
27532753
}
27542754

27552755
@Test
27562756
public void testServerIncrementOverwritesExistingDataOffline()
27572757
throws DatabaseException, TimeoutException, InterruptedException {
2758-
serverIncrementOverwritesExistingData(false);
2758+
serverIncrementOverwritesExistingData(/* online= */ false);
27592759
}
27602760

27612761
public void serverIncrementOverwritesExistingData(boolean online)
@@ -2830,13 +2830,13 @@ public void onCancelled(DatabaseError error) {}
28302830
@Test
28312831
public void testServerIncrementPriorityOnline()
28322832
throws DatabaseException, TimeoutException, InterruptedException {
2833-
serverIncrementPriority(true);
2833+
serverIncrementPriority(/* online= */ true);
28342834
}
28352835

28362836
@Test
28372837
public void testServerIncrementPriorityOffline()
28382838
throws DatabaseException, TimeoutException, InterruptedException {
2839-
serverIncrementPriority(false);
2839+
serverIncrementPriority(/* online= */ false);
28402840
}
28412841

28422842
public void serverIncrementPriority(boolean online)

firebase-database/src/main/java/com/google/firebase/database/core/DeferredValueProvider.java

Lines changed: 0 additions & 42 deletions
This file was deleted.

firebase-database/src/main/java/com/google/firebase/database/core/ExistingValueProvider.java

Lines changed: 0 additions & 40 deletions
This file was deleted.

firebase-database/src/main/java/com/google/firebase/database/core/ServerValues.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414

1515
package com.google.firebase.database.core;
1616

17+
import com.google.firebase.database.core.ValueProvider.DeferredValueProvider;
18+
import com.google.firebase.database.core.ValueProvider.ExistingValueProvider;
1719
import com.google.firebase.database.core.utilities.Clock;
1820
import com.google.firebase.database.core.utilities.Utilities;
1921
import com.google.firebase.database.snapshot.ChildKey;

firebase-database/src/main/java/com/google/firebase/database/core/SyncTree.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -242,9 +242,6 @@ public List<? extends Event> call() {
242242
boolean needToReevaluate = pendingWriteTree.removeWrite(writeId);
243243
if (write.isVisible()) {
244244
if (!revert) {
245-
ArrayList<Long> excludeThis = new ArrayList<>();
246-
excludeThis.add(write.getWriteId());
247-
Node existing = calcCompleteEventCache(write.getPath(), excludeThis);
248245
Map<String, Object> serverValues = ServerValues.generateServerValues(serverClock);
249246
if (write.isOverwrite()) {
250247
Node resolvedNode =

firebase-database/src/main/java/com/google/firebase/database/core/ValueProvider.java

Lines changed: 50 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
import com.google.firebase.database.snapshot.ChildKey;
1818
import com.google.firebase.database.snapshot.Node;
19+
import java.util.ArrayList;
1920

2021
/**
2122
* A ValueProvider defers the calculation of a Node's value until needed.
@@ -25,8 +26,54 @@
2526
* value resolution, we ned a wrapper class that will let us share code {@see
2627
* https://github.com/firebase/firebase-js-sdk/issues/2487}.
2728
*/
28-
public interface ValueProvider {
29-
ValueProvider getImmediateChild(ChildKey childKey);
29+
abstract class ValueProvider {
30+
public abstract ValueProvider getImmediateChild(ChildKey childKey);
3031

31-
Node node();
32+
public abstract Node node();
33+
34+
/**
35+
* An ExistingValueProvider implements the ValueProvider interface for a Node whose value is
36+
* known.
37+
*/
38+
public static class ExistingValueProvider extends ValueProvider {
39+
private final Node node;
40+
41+
ExistingValueProvider(Node node) {
42+
this.node = node;
43+
}
44+
45+
@Override
46+
public ValueProvider getImmediateChild(ChildKey childKey) {
47+
Node child = node.getImmediateChild(childKey);
48+
return new ExistingValueProvider(child);
49+
}
50+
51+
@Override
52+
public Node node() {
53+
return node;
54+
}
55+
}
56+
57+
/** A DeferredValueProvider computes the value of a Node only when {@link #node()} is invoked. */
58+
public static class DeferredValueProvider extends ValueProvider {
59+
60+
private final SyncTree syncTree;
61+
private final Path path;
62+
63+
DeferredValueProvider(SyncTree syncTree, Path path) {
64+
this.syncTree = syncTree;
65+
this.path = path;
66+
}
67+
68+
@Override
69+
public ValueProvider getImmediateChild(ChildKey childKey) {
70+
Path child = path.child(childKey);
71+
return new DeferredValueProvider(syncTree, child);
72+
}
73+
74+
@Override
75+
public Node node() {
76+
return syncTree.calcCompleteEventCache(path, new ArrayList<>());
77+
}
78+
}
3279
}

firebase-database/src/main/java/com/google/firebase/database/core/utilities/Utilities.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ public void onComplete(DatabaseError error, DatabaseReference ref) {
257257
}
258258
}
259259

260-
/** A nullable-aware equals method . */
260+
/** A nullable-aware equals method. */
261261
public static boolean equals(@Nullable Object left, @Nullable Object right) {
262262
if (left == right) {
263263
return true;

0 commit comments

Comments
 (0)