Query data nodes across all anchors under one dataspace
[cps.git] / cps-rest / src / main / java / org / onap / cps / rest / controller / QueryRestController.java
index 5f4283d..1fc13fc 100644 (file)
@@ -71,6 +71,25 @@ public class QueryRestController implements CpsQueryApi {
                 fetchDescendantsOption);
     }
 
+    @Override
+    public ResponseEntity<Object> getNodesByDataspaceAndCpsPath(final String dataspaceName,
+        final String cpsPath, final String fetchDescendantsOptionAsString) {
+        final FetchDescendantsOption fetchDescendantsOption =
+                FetchDescendantsOption.getFetchDescendantsOption(fetchDescendantsOptionAsString);
+        final Collection<DataNode> dataNodes =
+                cpsQueryService.queryDataNodesAcrossAnchors(dataspaceName, cpsPath, fetchDescendantsOption);
+        final List<Map<String, Object>> dataMaps = new ArrayList<>(dataNodes.size());
+        String prefix = null;
+        for (final DataNode dataNode : dataNodes) {
+            if (prefix == null) {
+                prefix = prefixResolver.getPrefix(dataspaceName, dataNode.getAnchorName(), dataNode.getXpath());
+            }
+            final Map<String, Object> dataMap = DataMapUtils.toDataMapWithIdentifierAndAnchor(dataNode, prefix);
+            dataMaps.add(dataMap);
+        }
+        return new ResponseEntity<>(jsonObjectMapper.asJsonString(dataMaps), HttpStatus.OK);
+    }
+
     private ResponseEntity<Object> executeNodesByDataspaceQueryAndCreateResponse(final String dataspaceName,
              final String anchorName, final String cpsPath, final FetchDescendantsOption fetchDescendantsOption) {
         final Collection<DataNode> dataNodes =