Update response query format 35/123235/2
authorniamhcore <niamh.core@est.tech>
Tue, 10 Aug 2021 15:39:53 +0000 (16:39 +0100)
committerniamhcore <niamh.core@est.tech>
Wed, 11 Aug 2021 09:31:45 +0000 (10:31 +0100)
Issue-ID: CPS-560
Change-Id: I1c71270a8cde7e940c5af80bc743d0f01ab6b9bb
Signed-off-by: niamhcore <niamh.core@est.tech>
cps-rest/src/main/java/org/onap/cps/rest/controller/QueryRestController.java
cps-rest/src/test/groovy/org/onap/cps/rest/controller/QueryRestControllerSpec.groovy

index b7fc9f7..8aa65a0 100644 (file)
 package org.onap.cps.rest.controller;
 
 import com.google.gson.Gson;
+import java.util.ArrayList;
 import java.util.Collection;
+import java.util.List;
+import java.util.Map;
 import javax.validation.Valid;
 import org.onap.cps.api.CpsQueryService;
 import org.onap.cps.rest.api.CpsQueryApi;
 import org.onap.cps.spi.FetchDescendantsOption;
 import org.onap.cps.spi.model.DataNode;
+import org.onap.cps.utils.DataMapUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
@@ -47,6 +51,10 @@ public class QueryRestController implements CpsQueryApi {
             ? FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS : FetchDescendantsOption.OMIT_DESCENDANTS;
         final Collection<DataNode> dataNodes =
             cpsQueryService.queryDataNodes(dataspaceName, anchorName, cpsPath, fetchDescendantsOption);
-        return new ResponseEntity<>(new Gson().toJson(dataNodes), HttpStatus.OK);
+        final List<Map<String, Object>> dataNodeList = new ArrayList<>();
+        for (final DataNode dataNode : dataNodes) {
+            dataNodeList.add(DataMapUtils.toDataMap(dataNode));
+        }
+        return new ResponseEntity<>(new Gson().toJson(dataNodeList), HttpStatus.OK);
     }
 }
index 6b6bdee..83c83f8 100644 (file)
@@ -22,6 +22,8 @@
 
 package org.onap.cps.rest.controller
 
+import org.onap.cps.spi.model.DataNode
+
 import static org.onap.cps.spi.FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS
 import static org.onap.cps.spi.FetchDescendantsOption.OMIT_DESCENDANTS
 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get
@@ -67,11 +69,12 @@ class QueryRestControllerSpec extends Specification {
 
     def 'Query data node by cps path for the given dataspace and anchor with #scenario.'() {
         given: 'service method returns a list containing a data node'
-            def dataNode = new DataNodeBuilder().withXpath('/xpath').build()
+             def dataNode1 = new DataNodeBuilder().withXpath('/xpath')
+                    .withLeaves([leaf: 'value', leafList: ['leaveListElement1', 'leaveListElement2']]).build()
             def dataspaceName = 'my_dataspace'
             def anchorName = 'my_anchor'
             def cpsPath = 'some cps-path'
-            mockCpsQueryService.queryDataNodes(dataspaceName, anchorName, cpsPath, expectedCpsDataServiceOption) >> [dataNode]
+            mockCpsQueryService.queryDataNodes(dataspaceName, anchorName, cpsPath, expectedCpsDataServiceOption) >> [dataNode1, dataNode1]
         and: 'the query endpoint'
             def dataNodeEndpoint = "$basePath/v1/dataspaces/$dataspaceName/anchors/$anchorName/nodes/query"
         when: 'query data nodes API is invoked'
@@ -83,7 +86,7 @@ class QueryRestControllerSpec extends Specification {
                             .andReturn().response
         then: 'the response contains the the datanode in json format'
             response.status == HttpStatus.OK.value()
-            response.getContentAsString().contains(new Gson().toJson(dataNode))
+            response.getContentAsString() == '[{"leaf":"value","leafList":["leaveListElement1","leaveListElement2"]},{"leaf":"value","leafList":["leaveListElement1","leaveListElement2"]}]'
         where: 'the following options for include descendants are provided in the request'
             scenario                    | includeDescendantsOption || expectedCpsDataServiceOption
             'no descendants by default' | ''                       || OMIT_DESCENDANTS