I have this error when attempting to write to Firestore Database and I am at a loss. This is happening because documentReference.getDocuments()
is empty but I expect it to be non-empty.
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.get(ArrayList.java:437)
at com.uni.strengthprogression.data.FirebaseManager$9.onSuccess(FirebaseManager.java:120)
at com.uni.strengthprogression.data.FirebaseManager$9.onSuccess(FirebaseManager.java:117)
Line 117:
.addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
Line 120:
String id = documentReference.getDocuments().get(0).getId();
Full method:
public static void addBenchSession(String userEmail, Session session, BackGroundTaskOperation backGroundTaskOperation) {
db.collection("users").whereEqualTo("email", userEmail).get()
.addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot documentReference) {
String id = documentReference.getDocuments().get(0).getId();
db.collection("users")
.document(id)
.update("bench_sessions", FieldValue.arrayUnion(session.toMap()))
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Log.d(TAG, "Successfully added document");
backGroundTaskOperation.onSuccess(null);
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.w(TAG, "Error adding document", e);
}
});
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.w(TAG, "Error adding document", e);
}
});
}