Skip to content

Commit 51b05e6

Browse files
committed
Respond to review comments
1 parent a87a0d9 commit 51b05e6

File tree

10 files changed

+108
-29
lines changed

10 files changed

+108
-29
lines changed

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,14 @@ public boolean isBool() {
3232
}
3333

3434
public void setNumber(int number) {
35-
this.mNumber = number;
35+
mNumber = number;
3636
}
3737

3838
public void setText(String text) {
39-
this.mText = text;
39+
mText = text;
4040
}
4141

4242
public void setBool(boolean bool) {
43-
this.mBool = bool;
43+
mBool = bool;
4444
}
4545
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public void setUp() throws Exception {
4646
.getReference()
4747
.child("firebasearray")
4848
.child("objects");
49-
mArray = new FirebaseArray<>(mRef, new ClassSnapshotParser<>(Bean.class));
49+
mArray = new FirebaseArray<>(mRef, Bean.class);
5050
mRef.removeValue();
5151
mListener = runAndWaitUntil(mArray, new Runnable() {
5252
@Override

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public void setUp() throws Exception {
4646
mRef = databaseInstance.getReference().child("firebasearray").child("objects");
4747
mKeyRef = databaseInstance.getReference().child("firebaseindexarray").child("objects");
4848

49-
mArray = new FirebaseIndexArray<>(mKeyRef, mRef, new ClassSnapshotParser<>(Bean.class));
49+
mArray = new FirebaseIndexArray<>(mKeyRef, mRef, Bean.class);
5050
mRef.removeValue();
5151
mKeyRef.removeValue();
5252

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

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

3+
import android.support.annotation.NonNull;
4+
35
import com.google.firebase.database.DataSnapshot;
46

57
import java.util.HashMap;
@@ -14,11 +16,24 @@ public abstract class CachingObservableSnapshotArray<T> extends ObservableSnapsh
1416

1517
private Map<String, T> mObjectCache = new HashMap<>();
1618

19+
/**
20+
* See {@link ObservableSnapshotArray#ObservableSnapshotArray()}.
21+
*/
1722
public CachingObservableSnapshotArray() {
1823
super();
1924
}
2025

21-
public CachingObservableSnapshotArray(SnapshotParser<T> parser) {
26+
/**
27+
* See {@link ObservableSnapshotArray#ObservableSnapshotArray(Class)}.
28+
*/
29+
public CachingObservableSnapshotArray(@NonNull Class<T> tClass) {
30+
super(tClass);
31+
}
32+
33+
/**
34+
* See {@link ObservableSnapshotArray#ObservableSnapshotArray(SnapshotParser)}.
35+
*/
36+
public CachingObservableSnapshotArray(@NonNull SnapshotParser<T> parser) {
2237
super(parser);
2338
}
2439

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

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,31 +23,52 @@
2323
import com.google.firebase.database.ValueEventListener;
2424

2525
import java.util.ArrayList;
26-
import java.util.HashMap;
2726
import java.util.List;
28-
import java.util.Map;
2927

3028
/**
3129
* This class implements a collection on top of a Firebase location.
3230
*/
3331
public class FirebaseArray<T> extends CachingObservableSnapshotArray<T> implements ChildEventListener, ValueEventListener {
3432

35-
protected final Query mQuery;
33+
private Query mQuery;
3634
private List<DataSnapshot> mSnapshots = new ArrayList<>();
3735

38-
private Map<String, T> mObjectCache = new HashMap<>();
39-
4036
/**
37+
* Create a new FirebaseArray with no {@link SnapshotParser}. Calls to
38+
* {@link #getObject(int)} will fail.
39+
*
4140
* @param query The Firebase location to watch for data changes. Can also be a slice of a
4241
* location, using some combination of {@code limit()}, {@code startAt()}, and
4342
* {@code endAt()}.
4443
*/
4544
public FirebaseArray(Query query) {
46-
this(query, null);
45+
super();
46+
init(query);
47+
}
48+
49+
/**
50+
* Create a new FirebaseArray that parses snapshots as members of a given class.
51+
*
52+
* See {@link ObservableSnapshotArray#ObservableSnapshotArray(Class)}.
53+
* See {@link #FirebaseArray(Query)}.
54+
*/
55+
public FirebaseArray(Query query, Class<T> tClass) {
56+
super(tClass);
57+
init(query);
4758
}
4859

60+
/**
61+
* Create a new FirebaseArray with a custom {@link SnapshotParser}.
62+
*
63+
* See {@link ObservableSnapshotArray#ObservableSnapshotArray(SnapshotParser)}.
64+
* See {@link #FirebaseArray(Query)}.
65+
*/
4966
public FirebaseArray(Query query, SnapshotParser<T> parser) {
5067
super(parser);
68+
init(query);
69+
}
70+
71+
private void init(Query query) {
5172
mQuery = query;
5273
}
5374

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

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,22 +38,44 @@ public class FirebaseIndexArray<T> extends CachingObservableSnapshotArray<T> imp
3838
private FirebaseArray<String> mKeySnapshots;
3939
private List<DataSnapshot> mDataSnapshots = new ArrayList<>();
4040

41-
private Map<String, T> mObjectCache = new HashMap<>();
42-
4341
/**
42+
* Create a new FirebaseIndexArray without a {@link SnapshotParser}.
43+
* Calls to {@link #getObject(int)} will fail.
44+
*
4445
* @param keyQuery The Firebase location containing the list of keys to be found in {@code
4546
* dataRef}. Can also be a slice of a location, using some combination of {@code
4647
* limit()}, {@code startAt()}, and {@code endAt()}.
4748
* @param dataRef The Firebase location to watch for data changes. Each key key found at {@code
4849
* keyQuery}'s location represents a list item in the {@link RecyclerView}.
4950
*/
5051
public FirebaseIndexArray(Query keyQuery, DatabaseReference dataRef) {
51-
this(keyQuery, dataRef, null);
52+
super();
53+
init(keyQuery, dataRef);
54+
}
55+
56+
/**
57+
* Create a new FirebaseIndexArray that parses snapshots as members of a given class.
58+
*
59+
* See {@link ObservableSnapshotArray#ObservableSnapshotArray(Class)}.
60+
* See {@link #FirebaseIndexArray(Query, DatabaseReference)}.
61+
*/
62+
public FirebaseIndexArray(Query keyQuery, DatabaseReference dataRef, Class<T> tClass) {
63+
super(tClass);
64+
init(keyQuery, dataRef);
5265
}
5366

67+
/**
68+
* Create a new FirebaseIndexArray with a custom {@link SnapshotParser}.
69+
*
70+
* See {@link ObservableSnapshotArray#ObservableSnapshotArray(SnapshotParser)}.
71+
* See {@link #FirebaseIndexArray(Query, DatabaseReference)}.
72+
*/
5473
public FirebaseIndexArray(Query keyQuery, DatabaseReference dataRef, SnapshotParser<T> parser) {
5574
super(parser);
75+
init(keyQuery, dataRef);
76+
}
5677

78+
private void init(Query keyQuery, DatabaseReference dataRef) {
5779
mKeySnapshots = new FirebaseArray<>(keyQuery, new SnapshotParser<String>() {
5880
@Override
5981
public String parseSnapshot(DataSnapshot snapshot) {
@@ -193,7 +215,7 @@ public void onDataChange(DataSnapshot snapshot) {
193215
removeData(index);
194216
notifyChangeEventListeners(ChangeEventListener.EventType.REMOVED, snapshot, index);
195217
} else {
196-
// Data we never knew about has disappeared
218+
// Data does not exist
197219
Log.w(TAG, "Key not found at ref: " + snapshot.getRef());
198220
}
199221
}

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

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,8 @@ public FirebaseListAdapter(Activity activity,
4545
ObservableSnapshotArray<T> snapshots,
4646
Class<T> modelClass,
4747
@LayoutRes int modelLayout) {
48-
mSnapshots = snapshots;
49-
mActivity = activity;
50-
mModelClass = modelClass;
51-
mLayout = modelLayout;
5248

53-
startListening();
49+
init(activity, snapshots, modelClass, modelLayout);
5450
}
5551

5652
/**
@@ -63,8 +59,14 @@ public FirebaseListAdapter(Activity activity,
6359
Class<T> modelClass,
6460
@LayoutRes int modelLayout,
6561
Query query) {
66-
mSnapshots = new FirebaseArray<T>(query, this);
62+
63+
init(activity, new FirebaseArray<T>(query, this), modelClass, modelLayout);
64+
}
65+
66+
private void init(Activity activity, ObservableSnapshotArray<T> snapshots,
67+
Class<T> modelClass, @LayoutRes int modelLayout) {
6768
mActivity = activity;
69+
mSnapshots = snapshots;
6870
mModelClass = modelClass;
6971
mLayout = modelLayout;
7072

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

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,8 @@ public FirebaseRecyclerAdapter(ObservableSnapshotArray<T> snapshots,
5151
Class<T> modelClass,
5252
@LayoutRes int modelLayout,
5353
Class<VH> viewHolderClass) {
54-
mSnapshots = snapshots;
55-
mModelClass = modelClass;
56-
mViewHolderClass = viewHolderClass;
57-
mModelLayout = modelLayout;
5854

59-
startListening();
55+
init(snapshots, modelClass, modelLayout, viewHolderClass);
6056
}
6157

6258
/**
@@ -69,7 +65,13 @@ public FirebaseRecyclerAdapter(Class<T> modelClass,
6965
@LayoutRes int modelLayout,
7066
Class<VH> viewHolderClass,
7167
Query query) {
72-
mSnapshots = new FirebaseArray<T>(query, this);
68+
69+
init(new FirebaseArray<>(query, this), modelClass, modelLayout, viewHolderClass);
70+
}
71+
72+
private void init(ObservableSnapshotArray<T> snapshots, Class<T> modelClass,
73+
@LayoutRes int modelLayout, Class<VH> viewHolderClass) {
74+
mSnapshots = snapshots;
7375
mModelClass = modelClass;
7476
mViewHolderClass = viewHolderClass;
7577
mModelLayout = modelLayout;

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

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,28 @@ public abstract class ObservableSnapshotArray<T> extends ImmutableList<DataSnaps
2424
protected final List<ChangeEventListener> mListeners = new CopyOnWriteArrayList<>();
2525
protected final SnapshotParser<T> mParser;
2626

27+
/**
28+
* Create an ObservableSnapshotArray without a {@link SnapshotParser}. Calls to
29+
* {@link #getObject(int)} will fail.
30+
*/
2731
public ObservableSnapshotArray() {
2832
mParser = null;
2933
}
3034

31-
public ObservableSnapshotArray(SnapshotParser<T> parser) {
35+
/**
36+
* Create an ObservableSnapshotArray where snapshots are parsed as objects of a particular
37+
* class. See {@link ClassSnapshotParser}.
38+
* @param tClass the class as which DataSnapshots should be parsed.
39+
*/
40+
public ObservableSnapshotArray(@NonNull Class<T> tClass) {
41+
this(new ClassSnapshotParser<>(tClass));
42+
}
43+
44+
/**
45+
* Create an ObservableSnapshotArray with a custom {@link SnapshotParser}.
46+
* @param parser the {@link SnapshotParser to use}.
47+
*/
48+
public ObservableSnapshotArray(@NonNull SnapshotParser<T> parser) {
3249
mParser = parser;
3350
}
3451

0 commit comments

Comments
 (0)