aboutsummaryrefslogtreecommitdiffstats
path: root/cps-service/src/main
diff options
context:
space:
mode:
authordanielhanrahan <daniel.hanrahan@est.tech>2023-09-28 11:13:36 +0100
committerdanielhanrahan <daniel.hanrahan@est.tech>2023-09-28 11:13:36 +0100
commitd8620d2bceab3001543d795b3d44925377d00cf1 (patch)
treeebfa0b1cb14a365488098fd96bb0ba1674b99f97 /cps-service/src/main
parentb4939f3dc286b23edd6f7950e74952208f983eb4 (diff)
JSON list support when updating multiple datanodes
updateDataNodesAndDescendants if supplied with a JSON list such as {"branch": [{"name":"Name1"}, {"name":"Name2"}]} would only replace the first node /test-tree/branch[@name='Name1'], and ignore any remaining list items. This is caused by the use of a legacy buildDataNode, which returns only a single DataNode from JSON, even if the JSON contained a list. Issue-ID: CPS-1889 Signed-off-by: danielhanrahan <daniel.hanrahan@est.tech> Change-Id: I257491b6bc3f047a64eb241eaac70fd457b24347
Diffstat (limited to 'cps-service/src/main')
-rwxr-xr-xcps-service/src/main/java/org/onap/cps/api/impl/CpsDataServiceImpl.java27
1 files changed, 6 insertions, 21 deletions
diff --git a/cps-service/src/main/java/org/onap/cps/api/impl/CpsDataServiceImpl.java b/cps-service/src/main/java/org/onap/cps/api/impl/CpsDataServiceImpl.java
index 7db87e87ea..1d68450f8a 100755
--- a/cps-service/src/main/java/org/onap/cps/api/impl/CpsDataServiceImpl.java
+++ b/cps-service/src/main/java/org/onap/cps/api/impl/CpsDataServiceImpl.java
@@ -31,6 +31,7 @@ import static org.onap.cps.notification.Operation.UPDATE;
import io.micrometer.core.annotation.Timed;
import java.io.Serializable;
import java.time.OffsetDateTime;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Map;
@@ -321,28 +322,12 @@ public class CpsDataServiceImpl implements CpsDataService {
processDataUpdatedEventAsync(anchor, listNodeXpath, DELETE, observedTimestamp);
}
- private DataNode buildDataNode(final Anchor anchor, final String parentNodeXpath, final String nodeData,
- final ContentType contentType) {
- final SchemaContext schemaContext = getSchemaContext(anchor);
-
- if (ROOT_NODE_XPATH.equals(parentNodeXpath)) {
- final ContainerNode containerNode = timedYangParser.parseData(contentType, nodeData, schemaContext);
- return new DataNodeBuilder().withContainerNode(containerNode).build();
- }
-
- final ContainerNode containerNode =
- timedYangParser.parseData(contentType, nodeData, schemaContext, parentNodeXpath);
-
- return new DataNodeBuilder()
- .withParentNodeXpath(parentNodeXpath)
- .withContainerNode(containerNode)
- .build();
- }
-
private Collection<DataNode> buildDataNodes(final Anchor anchor, final Map<String, String> nodesJsonData) {
- return nodesJsonData.entrySet().stream().map(nodeJsonData ->
- buildDataNode(anchor, nodeJsonData.getKey(),
- nodeJsonData.getValue(), ContentType.JSON)).collect(Collectors.toList());
+ final Collection<DataNode> dataNodes = new ArrayList<>();
+ for (final Map.Entry<String, String> nodeJsonData : nodesJsonData.entrySet()) {
+ dataNodes.addAll(buildDataNodes(anchor, nodeJsonData.getKey(), nodeJsonData.getValue(), ContentType.JSON));
+ }
+ return dataNodes;
}
private Collection<DataNode> buildDataNodes(final Anchor anchor, final String parentNodeXpath,