Skip to content
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

Closed

Conversation

Sreejit-K
Copy link
Contributor

No description provided.

@@ -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);
Copy link
Contributor

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);

Copy link
Contributor Author

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);
}
Copy link
Contributor

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-"
        }
    ],
    ...

@Sreejit-K
Copy link
Contributor Author

#337 - This issue is fixed here.

@Sreejit-K Sreejit-K closed this Jul 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants