Skip to content

Commit 1d61249

Browse files
committed
Additional data populated for collections (e.g. drive items)
1 parent f457b63 commit 1d61249

File tree

1 file changed

+17
-1
lines changed

1 file changed

+17
-1
lines changed

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

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,13 @@
2525
import com.google.common.annotations.VisibleForTesting;
2626
import com.google.common.base.CaseFormat;
2727
import com.google.gson.Gson;
28+
import com.google.gson.JsonArray;
2829
import com.google.gson.JsonElement;
2930
import com.google.gson.JsonObject;
3031
import com.microsoft.graph.logger.ILogger;
31-
3232
import java.util.HashMap;
3333
import java.util.Iterator;
34+
import java.util.List;
3435
import java.util.Map;
3536
import java.util.Map.Entry;
3637

@@ -142,6 +143,21 @@ private void setChildAdditionalData(IJsonBackedObject serializedObject, JsonObje
142143
}
143144
}
144145
}
146+
// If the object is a list of Graph objects, iterate through elements
147+
else if (fieldObject instanceof List && rawJson != null) {
148+
final JsonElement collectionJson = rawJson.get(field.getName());
149+
final List fieldObjectList = (List) fieldObject;
150+
if (collectionJson.isJsonArray() && ((JsonArray)collectionJson).size() == fieldObjectList.size()) {
151+
final JsonArray rawJsonArray = (JsonArray) collectionJson;
152+
for (int i = 0; i < fieldObjectList.size(); i++) {
153+
final Object element = fieldObjectList.get(i);
154+
if (element instanceof IJsonBackedObject) {
155+
final JsonElement elementRawJson = rawJsonArray.get(i);
156+
setChildAdditionalData((IJsonBackedObject) element, elementRawJson.getAsJsonObject());
157+
}
158+
}
159+
}
160+
}
145161
// If the object is a valid Graph object, set its additional data
146162
else if (fieldObject != null && fieldObject instanceof IJsonBackedObject) {
147163
IJsonBackedObject serializedChild = (IJsonBackedObject) fieldObject;

0 commit comments

Comments
 (0)