-
Notifications
You must be signed in to change notification settings - Fork 106
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fixed the Array_type_property_fix_in_attestation_flow #319
Fixed the Array_type_property_fix_in_attestation_flow #319
Conversation
@@ -346,6 +348,12 @@ private ArrayNode expandChildObject(ObjectNode entityNode, List<String> processe | |||
if (ovalue != null) { | |||
resultArr.add(ovalue); | |||
} else { | |||
if (node.isObject()) { | |||
Map<String, Object> deletedNodeRef = JSONUtil.convertJsonNodeToMap(node); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
what are these 4 lines for? these looks similar to JsonNode refactorNode = JsonNodeFactory.instance.objectNode().put(uuidPropertyName, uuidPropertyValue);
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is the current logic :
step 1: we map all the uuids which are not deleted - uuidReferenceMap (uuid ---> referenceNode)
Note: ( this excludes the nodes which are deleted or status as false )
Step 2: we recursively traverse from the root node and keep expanding the children based on the depth.
While expanding the children we always have the reference node as an object in the form ---> {osid : value }. Weather you are trying to expand an array or object. The reference is always an objectNode (cause we are using an arrayNode table where we store the internal array mappings).
And when all the child nodes are deleted the logic returns the reference node itself while fetching. To avoid this we have to either return [null, null ] or [ {osid : deltedNode}, {osid, deletedNode}] to resolve this issue. The above four lines return the deleted referenceNode in the array.
deletedNodeRef.put(uuidPropertyName , osidVal); | ||
JsonNode refactorNode = new ObjectMapper().convertValue(deletedNodeRef , JsonNode.class); | ||
resultArr.add(refactorNode); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Adding the deleted object is not expected, we should we able to return empty array instead.
...
"educations": [
{
"osid": "1-df55d012-cbfe-4548-ad1c-b7fc114d1161"
}
],
...
Also it is returning unexpected response after attested
...
"educations": [
{
"osid": "1-"
}
],
...
#337 - This issue is fixed here. |
No description provided.