Skip to content

Commit 981f7ef

Browse files
committed
Add OSA to Firestore
Change-Id: Ib0b685558bf4b7c19c1a12fc2b2dd2863cf3fcc6
1 parent b8db413 commit 981f7ef

File tree

8 files changed

+48
-32
lines changed

8 files changed

+48
-32
lines changed

common/src/main/java/com/firebase/ui/common/BaseChangeEventListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.firebase.ui.common;
22

33
/**
4-
* TODO(samstern): Document
4+
* Event listener for changes in an {@link BaseObservableSnapshotArray}.
55
*/
66
public interface BaseChangeEventListener<S, E> {
77

common/src/main/java/com/firebase/ui/common/BaseObservableSnapshotArray.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,9 @@ protected void onDestroy() {
7676
}
7777

7878
/**
79-
* Attach a listener to this array.
79+
* Attach a {@link BaseChangeEventListener} to this array. The listener will receive one {@link
80+
* ChangeEventType#ADDED} event for each item that already exists in the array at
81+
* the time of attachment, and then receive all future child events.
8082
*/
8183
@CallSuper
8284
public L addChangeEventListener(@NonNull L listener) {

database/src/androidTest/java/com/firebase/ui/database/TestUtils.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,11 @@ private static FirebaseApp initializeApp(Context context) {
3535
.build(), APP_NAME);
3636
}
3737

38-
public static ChangeEventListener runAndWaitUntil(ObservableSnapshotArray array,
39-
Runnable task,
40-
Callable<Boolean> done) throws InterruptedException {
38+
public static ChangeEventListener runAndWaitUntil(
39+
ObservableSnapshotArray<?> array,
40+
Runnable task,
41+
Callable<Boolean> done) throws InterruptedException {
42+
4143
final Semaphore semaphore = new Semaphore(0);
4244
ChangeEventListener listener = array.addChangeEventListener(new ChangeEventListener() {
4345
@Override

database/src/main/java/com/firebase/ui/database/CachingObservableSnapshotArray.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
import com.google.firebase.database.DataSnapshot;
66

7+
import java.util.List;
8+
79
/**
810
* An extension of {@link ObservableSnapshotArray} that caches the result of {@link #getObject(int)}
911
* so that repeated calls for the same key are not expensive (unless the underlying snapshot has
@@ -35,6 +37,8 @@ public T getObject(int index) {
3537
return mCache.parseSnapshot(get(index));
3638
}
3739

40+
protected abstract List<DataSnapshot> getSnapshots();
41+
3842
@Override
3943
protected void onDestroy() {
4044
super.onDestroy();

database/src/main/java/com/firebase/ui/database/ObservableSnapshotArray.java

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
package com.firebase.ui.database;
22

3-
import android.support.annotation.CallSuper;
43
import android.support.annotation.NonNull;
54

65
import com.firebase.ui.common.BaseObservableSnapshotArray;
7-
import com.firebase.ui.common.ChangeEventType;
86
import com.google.firebase.database.DataSnapshot;
97
import com.google.firebase.database.DatabaseError;
108

@@ -46,19 +44,6 @@ public ObservableSnapshotArray(@NonNull SnapshotParser<E> parser) {
4644
super(parser);
4745
}
4846

49-
/**
50-
* Attach a {@link ChangeEventListener} to this array. The listener will receive one {@link
51-
* ChangeEventType#ADDED} event for each item that already exists in the array at
52-
* the time of attachment, and then receive all future child events.
53-
*/
54-
@CallSuper
55-
public ChangeEventListener addChangeEventListener(@NonNull ChangeEventListener listener) {
56-
return super.addChangeEventListener(listener);
57-
}
58-
59-
// TODO(samstern): Can I remove this?
60-
protected abstract List<DataSnapshot> getSnapshots();
61-
6247
protected void notifyListenersOnCancelled(DatabaseError error) {
6348
for (ChangeEventListener listener : getListeners()) {
6449
listener.onError(error);

firestore/src/main/java/com/firebase/ui/firestore/FirestoreArray.java

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import android.util.Log;
44

5-
import com.firebase.ui.common.BaseObservableSnapshotArray;
65
import com.firebase.ui.common.ChangeEventType;
76
import com.google.firebase.firestore.DocumentChange;
87
import com.google.firebase.firestore.DocumentSnapshot;
@@ -19,8 +18,7 @@
1918
/**
2019
* Exposes a Firestore query as an observable list of objects.
2120
*/
22-
public class FirestoreArray<T>
23-
extends BaseObservableSnapshotArray<DocumentSnapshot, ChangeEventListener, T>
21+
public class FirestoreArray<T> extends ObservableSnapshotArray<T>
2422
implements EventListener<QuerySnapshot> {
2523

2624
private static final String TAG = "FirestoreArray";
@@ -161,11 +159,4 @@ private void stopListening() {
161159

162160
mSnapshots.clear();
163161
}
164-
165-
// TODO: There should be a way to move this into the base class
166-
private void notifyOnError(FirebaseFirestoreException e) {
167-
for (ChangeEventListener listener : getListeners()) {
168-
listener.onError(e);
169-
}
170-
}
171162
}

firestore/src/main/java/com/firebase/ui/firestore/FirestoreRecyclerAdapter.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import android.support.v7.widget.RecyclerView;
44

5-
import com.firebase.ui.common.BaseObservableSnapshotArray;
65
import com.firebase.ui.common.ChangeEventType;
76
import com.google.firebase.firestore.DocumentSnapshot;
87
import com.google.firebase.firestore.FirebaseFirestoreException;
@@ -17,7 +16,7 @@
1716
public abstract class FirestoreRecyclerAdapter<T, VH extends RecyclerView.ViewHolder>
1817
extends RecyclerView.Adapter<VH> implements ChangeEventListener {
1918

20-
private BaseObservableSnapshotArray<DocumentSnapshot, ChangeEventListener, T> mArray;
19+
private ObservableSnapshotArray<T> mArray;
2120

2221
public FirestoreRecyclerAdapter(Query query, Class<T> modelClass) {
2322
mArray = new FirestoreArray<>(query, modelClass);
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.firebase.ui.firestore;
2+
3+
import android.support.annotation.NonNull;
4+
5+
import com.firebase.ui.common.BaseObservableSnapshotArray;
6+
import com.firebase.ui.common.BaseSnapshotParser;
7+
import com.google.firebase.firestore.DocumentSnapshot;
8+
import com.google.firebase.firestore.FirebaseFirestoreException;
9+
10+
/**
11+
* Subclass of {@link BaseObservableSnapshotArray} for Firestore data.
12+
*/
13+
public abstract class ObservableSnapshotArray<E>
14+
extends BaseObservableSnapshotArray<DocumentSnapshot, ChangeEventListener, E> {
15+
16+
public ObservableSnapshotArray() {
17+
super();
18+
}
19+
20+
/**
21+
* See {@link BaseObservableSnapshotArray#BaseObservableSnapshotArray(BaseSnapshotParser)}
22+
*/
23+
public ObservableSnapshotArray(@NonNull SnapshotParser<E> parser) {
24+
super(parser);
25+
}
26+
27+
// TODO: There should be a way to move this into the base class
28+
protected void notifyOnError(FirebaseFirestoreException e) {
29+
for (ChangeEventListener listener : getListeners()) {
30+
listener.onError(e);
31+
}
32+
}
33+
}

0 commit comments

Comments
 (0)