CPS-1526 Fix response message for PATCH operation
[cps.git] / cps-service / src / main / java / org / onap / cps / api / impl / CpsDataServiceImpl.java
index cd14795..51e31f0 100755 (executable)
@@ -160,9 +160,15 @@ public class CpsDataServiceImpl implements CpsDataService {
         final String jsonData, final OffsetDateTime observedTimestamp) {
         cpsValidator.validateNameCharacters(dataspaceName, anchorName);
         final Anchor anchor = cpsAdminService.getAnchor(dataspaceName, anchorName);
-        final DataNode dataNode = buildDataNode(anchor, parentNodeXpath, jsonData, ContentType.JSON);
-        cpsDataPersistenceService.updateDataLeaves(dataspaceName, anchorName, dataNode.getXpath(),
-            dataNode.getLeaves());
+        final Collection<DataNode> dataNodesInPatch = buildDataNodes(anchor, parentNodeXpath, jsonData,
+                ContentType.JSON);
+        if (dataNodesInPatch.size() > 1) {
+            throw new DataValidationException("Operation is not supported for multiple data nodes",
+                    "Number of data nodes present: " + dataNodesInPatch.size());
+        }
+        cpsDataPersistenceService.updateDataLeaves(dataspaceName, anchorName,
+                dataNodesInPatch.iterator().next().getXpath(),
+            dataNodesInPatch.iterator().next().getLeaves());
         processDataUpdatedEventAsync(anchor, parentNodeXpath, UPDATE, observedTimestamp);
     }