Skip to content

Commit 06139de

Browse files
committed
- fixes an issue where passing a non array would make the deserializer fail
1 parent b8e551b commit 06139de

File tree

1 file changed

+13
-10
lines changed

1 file changed

+13
-10
lines changed

src/main/java/com/microsoft/graph/serializer/CollectionPageSerializer.java

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -105,12 +105,12 @@ public static <T1, T2 extends IRequestBuilder> JsonElement serialize(final BaseC
105105
*/
106106
@SuppressWarnings("unchecked")
107107
public static <T1, T2 extends IRequestBuilder> BaseCollectionPage<T1, T2> deserialize(final JsonElement json, Type typeOfT, final ILogger logger) throws JsonParseException {
108-
if (json == null) {
108+
if (json == null || !json.isJsonArray()) {
109109
return null;
110110
}
111111
serializer = new DefaultSerializer(logger);
112-
final JsonObject[] sourceArray = serializer.deserializeObject(json.toString(), JsonObject[].class);
113-
final ArrayList<T1> list = new ArrayList<T1>(sourceArray.length);
112+
final JsonArray sourceArray = json.getAsJsonArray();
113+
final ArrayList<T1> list = new ArrayList<T1>(sourceArray.size());
114114
/** eg: com.microsoft.graph.requests.extensions.AttachmentCollectionPage */
115115
final String collectionPageClassCanonicalName = typeOfT.getTypeName();
116116
/** eg: com.microsoft.graph.models.extensions.Attachment */
@@ -119,13 +119,16 @@ public static <T1, T2 extends IRequestBuilder> BaseCollectionPage<T1, T2> deseri
119119
.replace("requests", "models");
120120
try {
121121
final Class<?> baseEntityClass = Class.forName(baseEntityClassCanonicalName);
122-
for (JsonObject sourceObject : sourceArray) {
123-
Class<?> entityClass = serializer.getDerivedClass(sourceObject, baseEntityClass);
124-
if(entityClass == null)
125-
entityClass = baseEntityClass;
126-
final T1 targetObject = (T1)serializer.deserializeObject(sourceObject.toString(), entityClass);
127-
((IJsonBackedObject)targetObject).setRawObject(serializer, sourceObject);
128-
list.add(targetObject);
122+
for(JsonElement sourceElement : sourceArray) {
123+
if(sourceElement.isJsonObject()) {
124+
final JsonObject sourceObject = sourceElement.getAsJsonObject();
125+
Class<?> entityClass = serializer.getDerivedClass(sourceObject, baseEntityClass);
126+
if(entityClass == null)
127+
entityClass = baseEntityClass;
128+
final T1 targetObject = (T1)serializer.deserializeObject(sourceObject.toString(), entityClass);
129+
((IJsonBackedObject)targetObject).setRawObject(serializer, sourceObject);
130+
list.add(targetObject);
131+
}
129132
}
130133
/** eg: com.microsoft.graph.requests.extensions.AttachmentCollectionResponse */
131134
final String responseClassCanonicalName = collectionPageClassCanonicalName

0 commit comments

Comments
 (0)