|
25 | 25 | import com.google.common.annotations.VisibleForTesting; |
26 | 26 | import com.google.common.base.CaseFormat; |
27 | 27 | import com.google.gson.Gson; |
| 28 | +import com.google.gson.JsonArray; |
28 | 29 | import com.google.gson.JsonElement; |
29 | 30 | import com.google.gson.JsonObject; |
30 | 31 | import com.microsoft.graph.logger.ILogger; |
31 | | - |
32 | 32 | import java.util.HashMap; |
33 | 33 | import java.util.Iterator; |
| 34 | +import java.util.List; |
34 | 35 | import java.util.Map; |
35 | 36 | import java.util.Map.Entry; |
36 | 37 |
|
@@ -142,6 +143,21 @@ private void setChildAdditionalData(IJsonBackedObject serializedObject, JsonObje |
142 | 143 | } |
143 | 144 | } |
144 | 145 | } |
| 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 | + } |
145 | 161 | // If the object is a valid Graph object, set its additional data |
146 | 162 | else if (fieldObject != null && fieldObject instanceof IJsonBackedObject) { |
147 | 163 | IJsonBackedObject serializedChild = (IJsonBackedObject) fieldObject; |
|
0 commit comments