Changing resource identifier to a query param 73/124573/4
authorniamhcore <niamh.core@est.tech>
Wed, 29 Sep 2021 14:32:32 +0000 (15:32 +0100)
committerniamhcore <niamh.core@est.tech>
Thu, 30 Sep 2021 16:45:44 +0000 (17:45 +0100)
* Updating yaml
* Update jib-maven-plugin version

Issue-ID: CPS-679
Signed-off-by: niamhcore <niamh.core@est.tech>
Change-Id: Ie2f49bd8e22723ca4dcd2c20ed39722f22c281c1

docs/openapi/components.yml
docs/openapi/openapi.yml
pom.xml
src/main/java/org/onap/cps/ncmp/dmi/rest/controller/DmiRestController.java
src/test/groovy/org/onap/cps/ncmp/dmi/rest/controller/DmiRestControllerSpec.groovy

index 9cce52d..736639d 100644 (file)
@@ -157,11 +157,12 @@ components:
       schema:
         type: string
 
-    resourceIdentifierInPath:
+    resourceIdentifierInQuery:
       name: resourceIdentifier
-      in: path
+      in: query
       description: Resource identifier to get/set the resource data
       required: true
+      allowReserved: true
       schema:
         type: string
 
index f66897a..1e7b38c 100644 (file)
@@ -128,7 +128,7 @@ paths:
         '403':
           $ref: 'components.yml#/components/responses/Forbidden'
 
-  /v1/ch/{cmHandle}/data/ds/ncmp-datastore:passthrough-operational/{resourceIdentifier}:
+  /v1/ch/{cmHandle}/data/ds/ncmp-datastore:passthrough-operational:
     put:
       tags:
         - dmi-plugin
@@ -137,7 +137,7 @@ paths:
       operationId: getResourceDataOperationalForCmHandle
       parameters:
         - $ref: 'components.yml#/components/parameters/cmHandleInPath'
-        - $ref: 'components.yml#/components/parameters/resourceIdentifierInPath'
+        - $ref: 'components.yml#/components/parameters/resourceIdentifierInQuery'
         - $ref: 'components.yml#/components/parameters/acceptParamInHeader'
         - $ref: 'components.yml#/components/parameters/fieldsParamInQuery'
         - $ref: 'components.yml#/components/parameters/depthParamInQuery'
@@ -157,7 +157,7 @@ paths:
         '403':
           $ref: 'components.yml#/components/responses/Forbidden'
 
-  /v1/ch/{cmHandle}/data/ds/ncmp-datastore:passthrough-running/{resourceIdentifier}:
+  /v1/ch/{cmHandle}/data/ds/ncmp-datastore:passthrough-running:
     put:
       tags:
         - dmi-plugin
@@ -166,7 +166,7 @@ paths:
       operationId: getResourceDataPassthroughRunningForCmHandle
       parameters:
         - $ref: 'components.yml#/components/parameters/cmHandleInPath'
-        - $ref: 'components.yml#/components/parameters/resourceIdentifierInPath'
+        - $ref: 'components.yml#/components/parameters/resourceIdentifierInQuery'
         - $ref: 'components.yml#/components/parameters/acceptParamInHeader'
         - $ref: 'components.yml#/components/parameters/fieldsParamInQuery'
         - $ref: 'components.yml#/components/parameters/depthParamInQuery'
@@ -194,7 +194,7 @@ paths:
       operationId: writeDataByPassthroughRunningForCmHandle
       parameters:
         - $ref: 'components.yml#/components/parameters/cmHandleInPath'
-        - $ref: 'components.yml#/components/parameters/resourceIdentifierInPath'
+        - $ref: 'components.yml#/components/parameters/resourceIdentifierInQuery'
       requestBody:
         required: true
         content:
diff --git a/pom.xml b/pom.xml
index 2eca0b2..7e8172b 100644 (file)
--- a/pom.xml
+++ b/pom.xml
                 <plugin>
                     <groupId>com.google.cloud.tools</groupId>
                     <artifactId>jib-maven-plugin</artifactId>
-                    <version>2.8.0</version>
+                    <version>3.1.4</version>
                     <configuration>
                         <container>
                             <mainClass>${app}</mainClass>
index ff3cefc..72e8170 100644 (file)
@@ -80,14 +80,14 @@ public class DmiRestController implements DmiPluginApi, DmiPluginInternalApi {
      * Write data using passthrough for the given cmHandle.
      *
      * @param dataAccessWriteRequest pass through request
-     * @param cmHandle               cmHandle
      * @param resourceIdentifier     resource identifier
+     * @param cmHandle               cmHandle
      * @return (@ code ResponseEntity) response entity
      */
     @Override
     public ResponseEntity<String> writeDataByPassthroughRunningForCmHandle(
         final DataAccessWriteRequest dataAccessWriteRequest,
-        final String cmHandle, final String resourceIdentifier) {
+        final String resourceIdentifier, final String cmHandle) {
         final String response = dmiService.writeResourceDataPassthroughForCmHandle(cmHandle,
             resourceIdentifier,
             MediaType.APPLICATION_JSON_VALUE,
@@ -114,8 +114,8 @@ public class DmiRestController implements DmiPluginApi, DmiPluginInternalApi {
      * This method fetches the resource for given cm handle using pass through operational. It filters the response on
      * the basis of depth and field query parameters and returns response.
      *
-     * @param cmHandle              cm handle identifier
      * @param resourceIdentifier    resource identifier to fetch data
+     * @param cmHandle              cm handle identifier
      * @param dataAccessReadRequest data Access Read Request
      * @param accept                accept header parameter
      * @param fields                fields to filter the response data
@@ -123,8 +123,8 @@ public class DmiRestController implements DmiPluginApi, DmiPluginInternalApi {
      * @return {@code ResponseEntity} response entity
      */
     @Override
-    public ResponseEntity<Object> getResourceDataOperationalForCmHandle(final String cmHandle,
-        final String resourceIdentifier,
+    public ResponseEntity<Object> getResourceDataOperationalForCmHandle(final String resourceIdentifier,
+        final String cmHandle,
         final @Valid DataAccessReadRequest dataAccessReadRequest,
         final String accept,
         final @Valid String fields,
@@ -142,8 +142,8 @@ public class DmiRestController implements DmiPluginApi, DmiPluginInternalApi {
      * This method fetches the resource for given cm handle using pass through running. It filters the response on the
      * basis of depth and field query parameters and returns response.
      *
-     * @param cmHandle              cm handle identifier
      * @param resourceIdentifier    resource identifier to fetch data
+     * @param cmHandle              cm handle identifier
      * @param dataAccessReadRequest data Access Read Request
      * @param accept                accept header parameter
      * @param fields                fields to filter the response data
@@ -151,8 +151,8 @@ public class DmiRestController implements DmiPluginApi, DmiPluginInternalApi {
      * @return {@code ResponseEntity} response entity
      */
     @Override
-    public ResponseEntity<Object> getResourceDataPassthroughRunningForCmHandle(final String cmHandle,
-        final String resourceIdentifier,
+    public ResponseEntity<Object> getResourceDataPassthroughRunningForCmHandle(final String resourceIdentifier,
+        final String cmHandle,
         final @Valid DataAccessReadRequest dataAccessReadRequest,
         final String accept,
         final @Valid String fields,
index 9c27dc1..c818ecc 100644 (file)
@@ -20,7 +20,6 @@
 
 package org.onap.cps.ncmp.dmi.rest.controller
 
-
 import com.fasterxml.jackson.databind.ObjectMapper
 import org.onap.cps.ncmp.dmi.TestUtils
 import org.onap.cps.ncmp.dmi.exception.DmiException
@@ -187,7 +186,7 @@ class DmiRestControllerSpec extends Specification {
     def 'Get resource data for pass-through operational from cm handle.'() {
         given: 'Get resource data url'
             def getResourceDataForCmHandleUrl = "${basePathV1}/ch/some-cmHandle/data/ds/ncmp-datastore:passthrough-operational" +
-                    "/resourceIdentifier?fields=myfields&depth=5"
+                    "?resourceIdentifier=abc/xyz&fields=myfields&depth=5"
             def json = '{"cmHandleProperties" : { "prop1" : "value1", "prop2" : "value2"}}'
         when: 'get resource data PUT api is invoked'
             def response = mvc.perform(
@@ -198,7 +197,7 @@ class DmiRestControllerSpec extends Specification {
             response.status == HttpStatus.OK.value()
         and: 'dmi service called with get resource data for cm handle'
             1 * mockDmiService.getResourceDataOperationalForCmHandle('some-cmHandle',
-                    'resourceIdentifier',
+                    'abc/xyz',
                     'application/json',
                     'myfields',
                     5,
@@ -207,7 +206,8 @@ class DmiRestControllerSpec extends Specification {
 
     def 'Write data using passthrough running for a cm handle using #scenario.'() {
         given: 'write data for cmHandle url and jsonData'
-            def writeDataforCmHandlePassthroughRunning = "${basePathV1}/ch/some-cmHandle/data/ds/ncmp-datastore:passthrough-running/some-resourceIdentifier"
+            def writeDataforCmHandlePassthroughRunning = "${basePathV1}/ch/some-cmHandle/data/ds/ncmp-datastore:passthrough-running" +
+                    "?resourceIdentifier=some-resourceIdentifier"
             def jsonData = TestUtils.getResourceFileContent(requestBodyFile)
         and: 'dmi service is called'
             mockDmiService.writeResourceDataPassthroughForCmHandle('some-cmHandle',
@@ -228,10 +228,10 @@ class DmiRestControllerSpec extends Specification {
             'data with special chars' | 'dataWithSpecialChar.json'|| 'data with quote \" and new line \n'
     }
 
-    def 'Get resource data for pass-through running from cm handle.'() {
+    def 'Get resource data for pass-through running from cm handle with #scenario value in resource identifier param.'() {
         given: 'Get resource data url'
             def getResourceDataForCmHandleUrl = "${basePathV1}/ch/some-cmHandle/data/ds/ncmp-datastore:passthrough-running" +
-                     "/testResourceIdentifier?fields=testFields&depth=5"
+                    "?resourceIdentifier="+resourceIdentifier+"&fields=testFields&depth=5"
             def json = '{"cmHandleProperties" : { "prop1" : "value1", "prop2" : "value2"}}'
         when: 'get resource data PUT api is invoked'
             def response = mvc.perform(
@@ -242,10 +242,19 @@ class DmiRestControllerSpec extends Specification {
             response.status == HttpStatus.OK.value()
         and: 'dmi service called with get resource data for cm handle'
             1 * mockDmiService.getResourceDataPassThroughRunningForCmHandle('some-cmHandle',
-                    'testResourceIdentifier',
+                    resourceIdentifier,
                     'application/json',
                     'testFields',
                     5,
                     ['prop1':'value1', 'prop2':'value2'])
+        where: 'tokens are used in the resource identifier parameter'
+            scenario                       | resourceIdentifier
+            '/'                            | 'id/with/slashes'
+            '?'                            | 'idWith?'
+            ','                            | 'idWith,'
+            '='                            | 'idWith='
+            '[]'                           | 'idWith[]'
+            '? needs to be encoded as %3F' | 'idWith%3F'
+
     }
 }
\ No newline at end of file