From a26b6df623b9582265d449407482216da82e871e Mon Sep 17 00:00:00 2001 From: Salakar Date: Fri, 6 Oct 2017 21:45:54 +0100 Subject: [PATCH] [android][firestore] changes in type detection, as suggested by @mirkonasato --- .../firebase/firestore/FirestoreSerialize.java | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/android/src/main/java/io/invertase/firebase/firestore/FirestoreSerialize.java b/android/src/main/java/io/invertase/firebase/firestore/FirestoreSerialize.java index 6a0ef635..9df68623 100644 --- a/android/src/main/java/io/invertase/firebase/firestore/FirestoreSerialize.java +++ b/android/src/main/java/io/invertase/firebase/firestore/FirestoreSerialize.java @@ -8,7 +8,6 @@ import com.google.firebase.firestore.DocumentSnapshot; import com.google.firebase.firestore.QuerySnapshot; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.Map; @@ -155,11 +154,9 @@ public class FirestoreSerialize { writableArray.pushDouble(((Float) item).doubleValue()); } else if (itemClass == String.class) { writableArray.pushString(item.toString()); - } else if (itemClass == Map.class) { + } else if (Map.class.isAssignableFrom(itemClass)) { writableArray.pushMap((objectMapToWritable((Map) item))); - } else if (itemClass == Arrays.class) { - writableArray.pushArray(objectArrayToWritable((Object[]) item)); - } else if (itemClass == List.class || itemClass == ArrayList.class) { + } else if (List.class.isAssignableFrom(itemClass)) { List list = (List) item; Object[] listAsArray = list.toArray(new Object[list.size()]); writableArray.pushArray(objectArrayToWritable(listAsArray)); @@ -194,11 +191,9 @@ public class FirestoreSerialize { map.putDouble(key, ((Float) value).doubleValue()); } else if (valueClass == String.class) { map.putString(key, value.toString()); - } else if (valueClass == Map.class) { + } else if (Map.class.isAssignableFrom(valueClass)) { map.putMap(key, (objectMapToWritable((Map) value))); - } else if (valueClass == Arrays.class) { - map.putArray(key, objectArrayToWritable((Object[]) value)); - } else if (valueClass == List.class || valueClass == ArrayList.class) { + } else if (List.class.isAssignableFrom(valueClass)) { List list = (List) value; Object[] array = list.toArray(new Object[list.size()]); map.putArray(key, objectArrayToWritable(array));