From 74753d923b77d87b17e8221ecc86a084446648b7 Mon Sep 17 00:00:00 2001 From: niamhcore Date: Thu, 28 Jan 2021 16:11:52 +0000 Subject: Attach a (JSON) data instance for a container with children to a given Anchor Issue-ID: CPS-26 Signed-off-by: niamhcore Change-Id: I38fc1b1a6ccf84e64eff3218372b40c8fa2491ba --- cps-rest/docs/api/swagger/cpsData.yml | 43 +++++++++++----------- .../cps/rest/controller/DataRestController.java | 18 ++++----- .../rest/controller/AdminRestControllerSpec.groovy | 4 ++ .../exceptions/CpsRestExceptionHandlerSpec.groovy | 4 ++ 4 files changed, 39 insertions(+), 30 deletions(-) (limited to 'cps-rest') diff --git a/cps-rest/docs/api/swagger/cpsData.yml b/cps-rest/docs/api/swagger/cpsData.yml index c33cf168e..dcdb99adc 100644 --- a/cps-rest/docs/api/swagger/cpsData.yml +++ b/cps-rest/docs/api/swagger/cpsData.yml @@ -20,46 +20,47 @@ nodesByDataspaceAndAnchor: $ref: 'components.yaml#/components/responses/NotFound' x-codegen-request-body-name: xpath -nodesByDataspace: - get: + post: tags: - cps-data - summary: Get all nodes for a given dataspace using an xpath or schema node identifier - DRAFT - operationId: getNode + summary: Create a node for a given anchor for the given dataspace + operationId: createNode parameters: - $ref: 'components.yaml#/components/parameters/dataspaceNameInPath' + - $ref: 'components.yaml#/components/parameters/anchorNameInPath' + requestBody: + required: true + content: + application/json: + schema: + type: string responses: - 200: - $ref: 'components.yaml#/components/responses/Ok' + 201: + $ref: 'components.yaml#/components/responses/Created' 400: $ref: 'components.yaml#/components/responses/BadRequest' 401: $ref: 'components.yaml#/components/responses/Unauthorized' 403: $ref: 'components.yaml#/components/responses/Forbidden' - 404: - $ref: 'components.yaml#/components/responses/NotFound' - x-codegen-request-body-name: requestBody - post: +nodesByDataspace: + get: tags: - cps-data - summary: Create a node for a given anchor for the given dataspace - DRAFT - operationId: createNode + summary: Get all nodes for a given dataspace using an xpath or schema node identifier - DRAFT + operationId: getNode parameters: - $ref: 'components.yaml#/components/parameters/dataspaceNameInPath' - requestBody: - content: - multipart/form-data: - schema: - $ref: 'components.yaml#/components/schemas/MultipartFile' - required: true responses: - 201: - $ref: 'components.yaml#/components/responses/Created' + 200: + $ref: 'components.yaml#/components/responses/Ok' 400: $ref: 'components.yaml#/components/responses/BadRequest' 401: $ref: 'components.yaml#/components/responses/Unauthorized' 403: - $ref: 'components.yaml#/components/responses/Forbidden' \ No newline at end of file + $ref: 'components.yaml#/components/responses/Forbidden' + 404: + $ref: 'components.yaml#/components/responses/NotFound' + x-codegen-request-body-name: requestBody \ No newline at end of file diff --git a/cps-rest/src/main/java/org/onap/cps/rest/controller/DataRestController.java b/cps-rest/src/main/java/org/onap/cps/rest/controller/DataRestController.java index 2ecbd4f54..07f555383 100644 --- a/cps-rest/src/main/java/org/onap/cps/rest/controller/DataRestController.java +++ b/cps-rest/src/main/java/org/onap/cps/rest/controller/DataRestController.java @@ -20,28 +20,27 @@ package org.onap.cps.rest.controller; import javax.validation.Valid; -import org.modelmapper.ModelMapper; -import org.onap.cps.api.CpsAdminService; +import javax.validation.constraints.NotNull; +import org.onap.cps.api.CpsDataService; import org.onap.cps.rest.api.CpsDataApi; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.multipart.MultipartFile; @RestController @RequestMapping("${rest.api.base-path}") public class DataRestController implements CpsDataApi { @Autowired - private CpsAdminService cpsAdminService; - - @Autowired - private ModelMapper modelMapper; + private CpsDataService cpsDataService; @Override - public ResponseEntity createNode(@Valid final MultipartFile multipartFile, final String dataspaceName) { - return null; + public ResponseEntity createNode(@Valid final String jsonData, @NotNull final String dataspaceName, + @NotNull @Valid final String anchorName) { + cpsDataService.saveData(dataspaceName, anchorName, jsonData); + return new ResponseEntity<>(HttpStatus.CREATED); } @Override @@ -53,4 +52,5 @@ public class DataRestController implements CpsDataApi { public ResponseEntity getNodeByDataspaceAndAnchor(final String dataspaceName, final String anchorName) { return null; } + } diff --git a/cps-rest/src/test/groovy/org/onap/cps/rest/controller/AdminRestControllerSpec.groovy b/cps-rest/src/test/groovy/org/onap/cps/rest/controller/AdminRestControllerSpec.groovy index 540d6224a..c1c7c5dcd 100644 --- a/cps-rest/src/test/groovy/org/onap/cps/rest/controller/AdminRestControllerSpec.groovy +++ b/cps-rest/src/test/groovy/org/onap/cps/rest/controller/AdminRestControllerSpec.groovy @@ -22,6 +22,7 @@ package org.onap.cps.rest.controller import org.modelmapper.ModelMapper import org.onap.cps.api.CpsAdminService +import org.onap.cps.api.CpsDataService import org.onap.cps.api.CpsModuleService import org.onap.cps.spi.exceptions.DataspaceAlreadyDefinedException import org.onap.cps.spi.exceptions.SchemaSetInUseException @@ -55,6 +56,9 @@ class AdminRestControllerSpec extends Specification { @SpringBean CpsAdminService mockCpsAdminService = Mock() + @SpringBean + CpsDataService mockCpsDataService = Mock() + @SpringBean ModelMapper modelMapper = Mock() diff --git a/cps-rest/src/test/groovy/org/onap/cps/rest/exceptions/CpsRestExceptionHandlerSpec.groovy b/cps-rest/src/test/groovy/org/onap/cps/rest/exceptions/CpsRestExceptionHandlerSpec.groovy index edc484b14..7dbf6bc9a 100644 --- a/cps-rest/src/test/groovy/org/onap/cps/rest/exceptions/CpsRestExceptionHandlerSpec.groovy +++ b/cps-rest/src/test/groovy/org/onap/cps/rest/exceptions/CpsRestExceptionHandlerSpec.groovy @@ -22,6 +22,7 @@ package org.onap.cps.rest.exceptions import groovy.json.JsonSlurper import org.modelmapper.ModelMapper import org.onap.cps.api.CpsAdminService +import org.onap.cps.api.CpsDataService import org.onap.cps.api.CpsModuleService import org.onap.cps.spi.exceptions.AnchorAlreadyDefinedException import org.onap.cps.spi.exceptions.CpsException @@ -55,6 +56,9 @@ class CpsRestExceptionHandlerSpec extends Specification { @SpringBean CpsModuleService mockCpsModuleService = Mock() + @SpringBean + CpsDataService mockCpsDataService = Mock() + @SpringBean ModelMapper modelMapper = Mock() -- cgit 1.2.3-korg