Skip to content

Commit d020b67

Browse files
author
Nakul Sabharwal
committed
Hashmap deserialization edit and its tests
1 parent 599ac84 commit d020b67

File tree

2 files changed

+50
-3
lines changed

2 files changed

+50
-3
lines changed

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -134,9 +134,10 @@ private void setChildAdditionalData(IJsonBackedObject serializedObject, JsonObje
134134
// If the item is a valid Graph object, set its additional data
135135
if (child instanceof IJsonBackedObject) {
136136
AdditionalDataManager childAdditionalDataManager = ((IJsonBackedObject) child).additionalDataManager();
137-
if(rawJson != null && field != null && rawJson.get(field.getName()) != null && rawJson.get(field.getName()).isJsonObject()) {
138-
childAdditionalDataManager.setAdditionalData(rawJson.get(field.getName()).getAsJsonObject());
139-
setChildAdditionalData((IJsonBackedObject) child,rawJson.get(field.getName()).getAsJsonObject());
137+
if(rawJson != null && field != null && rawJson.get(field.getName()) != null && rawJson.get(field.getName()).isJsonObject()
138+
&& rawJson.get(field.getName()).getAsJsonObject().get(pair.getKey()).isJsonObject()) {
139+
childAdditionalDataManager.setAdditionalData(rawJson.get(field.getName()).getAsJsonObject().get(pair.getKey()).getAsJsonObject());
140+
setChildAdditionalData((IJsonBackedObject) child,rawJson.get(field.getName()).getAsJsonObject().get(pair.getKey()).getAsJsonObject());
140141
}
141142
}
142143
}

src/test/java/com/microsoft/graph/serializer/AdditionalDataTests.java

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,23 @@
11
package com.microsoft.graph.serializer;
22

33
import static org.junit.Assert.assertEquals;
4+
import static org.junit.Assert.assertNotNull;
5+
import static org.junit.Assert.assertNull;
46

57
import org.junit.Before;
68
import org.junit.Test;
79

10+
import com.google.gson.JsonElement;
11+
import com.google.gson.JsonObject;
12+
import com.google.gson.JsonParser;
813
import com.google.gson.JsonPrimitive;
914
import com.microsoft.graph.logger.DefaultLogger;
15+
import com.microsoft.graph.models.extensions.Drive;
1016
import com.microsoft.graph.models.extensions.Entity;
1117
import com.microsoft.graph.models.extensions.PlannerAssignment;
1218
import com.microsoft.graph.models.extensions.PlannerAssignments;
1319
import com.microsoft.graph.models.extensions.PlannerTask;
20+
import com.microsoft.graph.models.extensions.PlannerTaskDetails;
1421
import com.microsoft.graph.models.extensions.User;
1522

1623
public class AdditionalDataTests {
@@ -75,4 +82,43 @@ public void testHashMapChildAnnotationData() {
7582

7683
assertEquals("{\"assignments\":{\"id\":{\"@odata.type\":\"#microsoft.graph.plannerAssignment\",\"orderHint\":\"!\",\"additionalData\":\"additionalValue\"}},\"@odata.type\":\"#microsoft.graph.plannerTask\"}", serializedObject);
7784
}
85+
86+
@Test
87+
public void testHashMapChildAdditionalData() {
88+
String input = "{\"@odata.context\":\"https://graph.microsoft.com/v1.0/$metadata#planner/tasks('8kUva3lOqkKZ-4_u5tkIC8kAFv2c')/details/$entity\",\"@odata.etag\":\"W/\\\"JzEtVGFza0RldGFpbHMgQEBAQEBAQEBAQEBAQEBAYCc=\\\"\",\"description\":null,"
89+
+ "\"previewType\":\"automatic\",\"id\":\"8kUva3lOqkKZ-4_u5tkIC8kAFv2c\","
90+
+ "\"references\":{\"https%3A//testurl/\":{\"@odata.type\":\"#microsoft.graph.plannerExternalReference\",\"alias\":\"test_alias\",\"type\":null,\"previewPriority\":\"8586538193086391421\",\"lastModifiedDateTime\":"
91+
+ "\"2019-01-18T04:59:36.8384386Z\",\"lastModifiedBy\":{\"user\":{\"displayName\":null,\"id\":\"ec786dee-da15-4896-8e73-57141477bae7\"}}}},\"checklist\":{\"1234\":{\"@odata.type\":\"#microsoft.graph.plannerChecklistItem\","
92+
+ "\"isChecked\":false,\"title\":\"Test title\",\"orderHint\":\"8586538194441079237\",\"lastModifiedDateTime\":\"2019-01-18T04:57:21.369657Z\",\"lastModifiedBy\":{\"user\":{\"displayName\":null,\"id\":\"ec786dee-da15-4896-8e73-57141477bae7\"}}},"
93+
+ "\"66442\":{\"@odata.type\":\"#microsoft.graph.plannerChecklistItem\",\"isChecked\":false,\"title\":\"checklist item 3\",\"orderHint\":\"8586539618F3\",\"lastModifiedDateTime\":\"2019-01-16T13:24:11.4732273Z\",\"lastModifiedBy\":"
94+
+ "{\"user\":{\"displayName\":null,\"id\":\"ec786dee-da15-4896-8e73-57141477bae7\"}}},\"83642\":{\"@odata.type\":\"#microsoft.graph.plannerChecklistItem\",\"isChecked\":false,\"title\":\"checklist item 1\",\"orderHint\":\"8586539619030374725P_\","
95+
+ "\"lastModifiedDateTime\":\"2019-01-16T13:24:02.4557738Z\",\"lastModifiedBy\":{\"user\":{\"displayName\":null,\"id\":\"ec786dee-da15-4896-8e73-57141477bae7\"}}},\"84724\":{\"@odata.type\":\"#microsoft.graph.plannerChecklistItem\","
96+
+ "\"isChecked\":false,\"title\":\"checklist item 2\",\"orderHint\":\"8586539618YD\",\"lastModifiedDateTime\":\"2019-01-16T13:24:07.113845Z\",\"lastModifiedBy\":{\"user\":{\"displayName\":null,\"id\":"
97+
+ "\"ec786dee-da15-4896-8e73-57141477bae7\"}}}}}" ;
98+
99+
PlannerTaskDetails deserializedObject = serializer.deserializeObject(input, PlannerTaskDetails.class);
100+
101+
assertNull(deserializedObject.additionalDataManager().get("1234"));
102+
assertNull(deserializedObject.additionalDataManager().get("66442"));
103+
assertNull(deserializedObject.additionalDataManager().get("83642"));
104+
assertNull(deserializedObject.additionalDataManager().get("84724"));
105+
assertNull(deserializedObject.additionalDataManager().get("https%3A//testurl/"));
106+
107+
String serialized = serializer.serializeObject(deserializedObject);
108+
109+
JsonParser parser = new JsonParser();
110+
JsonObject jsonObject = parser.parse(serialized).getAsJsonObject();
111+
assertNotNull(jsonObject.get("checklist").getAsJsonObject().get("1234"));
112+
assertNull(jsonObject.get("checklist").getAsJsonObject().get("1234").getAsJsonObject().get("1234"));
113+
assertNull(jsonObject.get("checklist").getAsJsonObject().get("1234").getAsJsonObject().get("66442"));
114+
}
115+
116+
@Test
117+
public void testChildAdditionalDataDeserialization() {
118+
String source = "{\"@odata.context\":\"https://graph.microsoft.com/v1.0/$metadata#drives/$entity\",\"id\":\"8bf6ae90006c4a4c\",\"driveType\":\"personal\",\"owner\":{\"user\":{\"displayName\":\"Peter\",\"id\":\"8bf6ae90006c4a4c\",\"email\":\"[email protected]\"}},\"quota\":{\"deleted\":1485718314,\"remaining\":983887466461,\"state\":\"normal\",\"total\":1142461300736,\"used\":158573834275}}";
119+
Drive result = serializer.deserializeObject(source, Drive.class);
120+
JsonElement email = result.owner.user.additionalDataManager().get("email");
121+
122+
assertEquals("\"[email protected]\"",email.toString());
123+
}
78124
}

0 commit comments

Comments
 (0)