Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,13 @@
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.CaseFormat;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.microsoft.graph.logger.ILogger;

import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

Expand Down Expand Up @@ -123,7 +124,6 @@ private void setChildAdditionalData(IJsonBackedObject serializedObject, JsonObje

// If the object is a HashMap, iterate through its children
if (fieldObject instanceof HashMap) {
@SuppressWarnings("unchecked")
HashMap<String, Object> serializableChildren = (HashMap<String, Object>) fieldObject;
Iterator<Entry<String, Object>> it = serializableChildren.entrySet().iterator();

Expand All @@ -142,6 +142,21 @@ private void setChildAdditionalData(IJsonBackedObject serializedObject, JsonObje
}
}
}
// If the object is a list of Graph objects, iterate through elements
else if (fieldObject instanceof List && rawJson != null) {
final JsonElement collectionJson = rawJson.get(field.getName());
final List<?> fieldObjectList = (List<?>) fieldObject;
if (collectionJson.isJsonArray() && ((JsonArray)collectionJson).size() == fieldObjectList.size()) {
final JsonArray rawJsonArray = (JsonArray) collectionJson;
for (int i = 0; i < fieldObjectList.size(); i++) {
final Object element = fieldObjectList.get(i);
if (element instanceof IJsonBackedObject) {
final JsonElement elementRawJson = rawJsonArray.get(i);
setChildAdditionalData((IJsonBackedObject) element, elementRawJson.getAsJsonObject());
}
}
}
}
// If the object is a valid Graph object, set its additional data
else if (fieldObject != null && fieldObject instanceof IJsonBackedObject) {
IJsonBackedObject serializedChild = (IJsonBackedObject) fieldObject;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;

import org.junit.Test;

import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.annotations.Expose;
Expand All @@ -15,9 +13,11 @@
import com.microsoft.graph.models.extensions.DateOnly;
import com.microsoft.graph.models.extensions.Drive;
import com.microsoft.graph.models.extensions.FileAttachment;
import com.microsoft.graph.models.extensions.User;
import com.microsoft.graph.models.extensions.RecurrenceRange;
import com.microsoft.graph.models.extensions.User;
import com.microsoft.graph.models.generated.RecurrenceRangeType;
import com.microsoft.graph.requests.extensions.DriveItemDeltaCollectionResponse;
import org.junit.Test;

public class DefaultSerializerTests {

Expand All @@ -26,7 +26,7 @@ public class DefaultSerializerTests {
*
* @throws Exception If there is an exception during the test
*/
@Test
@Test
public void testDriveDeserialization() throws Exception {
final DefaultSerializer serializer = new DefaultSerializer(new DefaultLogger());
String source = "{\"@odata.context\":\"https://graph.microsoft.com/v1.0/$metadata#drives/$entity\",\"id\":\"8bf6ae90006c4a4c\",\"driveType\":\"personal\",\"owner\":{\"user\":{\"displayName\":\"Peter\",\"id\":\"8bf6ae90006c4a4c\"}},\"quota\":{\"deleted\":1485718314,\"remaining\":983887466461,\"state\":\"normal\",\"total\":1142461300736,\"used\":158573834275}}";
Expand All @@ -38,6 +38,43 @@ public void testDriveDeserialization() throws Exception {

}

/**
* Make sure that deserializing a DriveItems also deserializes child additionalData
*
* @throws Exception If there is an exception during the test
*/
@Test
public void testDriveItemChildAdditionalDataDeserialization() throws Exception {
final DefaultSerializer serializer = new DefaultSerializer(new DefaultLogger());
String source = "{\n"
+ " \"@odata.context\": \"https://graph.microsoft.com/v1.0/$metadata#users('02008492-3fec-4ce4-bb54-980ad856856f')/drive/root/children\",\n"
+ " \"value\": [\n"
+ " {\n"
+ " \"createdBy\": {\n"
+ " \"user\": {\n"
+ " \"email\": \"the@email.com\",\n"
+ " \"id\": \"02008492-3fec-4ce4-bb54-980ad856856f\",\n"
+ " \"displayName\": \"John Doe\"\n"
+ " }\n"
+ " }\n"
+ " }\n"
+ " ]\n"
+ "}";

DriveItemDeltaCollectionResponse result = serializer
.deserializeObject(source, DriveItemDeltaCollectionResponse.class);
assertNotNull(result);
assertNotNull(result.value);
assertEquals(1, result.value.size());
assertNotNull(result.value.get(0));
assertNotNull(result.value.get(0).createdBy);
assertNotNull(result.value.get(0).createdBy.user);
assertNotNull(result.value.get(0).createdBy.user.additionalDataManager());
assertNotNull(result.value.get(0).createdBy.user.additionalDataManager().get("email"));
assertEquals("the@email.com",
result.value.get(0).createdBy.user.additionalDataManager().get("email").getAsString());
}

@Test
public void testRecurrenceRangeDeserialization() throws Exception {
final DefaultSerializer serializer = new DefaultSerializer(new DefaultLogger());
Expand Down
Morty Proxy This is a proxified and sanitized view of the page, visit original site.