summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorToine Siebelink <toine.siebelink@est.tech>2021-10-04 16:13:48 +0000
committerGerrit Code Review <gerrit@onap.org>2021-10-04 16:13:48 +0000
commitb95f49172c6909a6b0dddc31ac99dd22d5189de0 (patch)
tree89a78d9cbb37c73e8aa20c8a16e301342daa15d3
parent3c849ba983dd02a252e94b87eafdfaaeda8eab9b (diff)
parent2fb3f66a3da8f7daa8dba9023de56b2227c59e7a (diff)
Merge "Changing resource identifier to a query param"
-rw-r--r--docs/openapi/components.yml5
-rw-r--r--docs/openapi/openapi.yml10
-rw-r--r--pom.xml2
-rw-r--r--src/main/java/org/onap/cps/ncmp/dmi/rest/controller/DmiRestController.java16
-rw-r--r--src/test/groovy/org/onap/cps/ncmp/dmi/rest/controller/DmiRestControllerSpec.groovy23
5 files changed, 33 insertions, 23 deletions
diff --git a/docs/openapi/components.yml b/docs/openapi/components.yml
index 9cce52de..736639d8 100644
--- a/docs/openapi/components.yml
+++ b/docs/openapi/components.yml
@@ -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
diff --git a/docs/openapi/openapi.yml b/docs/openapi/openapi.yml
index f66897a2..1e7b38c9 100644
--- a/docs/openapi/openapi.yml
+++ b/docs/openapi/openapi.yml
@@ -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 e86190d1..e535d08d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -494,7 +494,7 @@
<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>
diff --git a/src/main/java/org/onap/cps/ncmp/dmi/rest/controller/DmiRestController.java b/src/main/java/org/onap/cps/ncmp/dmi/rest/controller/DmiRestController.java
index ff3cefcd..72e81709 100644
--- a/src/main/java/org/onap/cps/ncmp/dmi/rest/controller/DmiRestController.java
+++ b/src/main/java/org/onap/cps/ncmp/dmi/rest/controller/DmiRestController.java
@@ -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,
diff --git a/src/test/groovy/org/onap/cps/ncmp/dmi/rest/controller/DmiRestControllerSpec.groovy b/src/test/groovy/org/onap/cps/ncmp/dmi/rest/controller/DmiRestControllerSpec.groovy
index 9c27dc1b..c818eccb 100644
--- a/src/test/groovy/org/onap/cps/ncmp/dmi/rest/controller/DmiRestControllerSpec.groovy
+++ b/src/test/groovy/org/onap/cps/ncmp/dmi/rest/controller/DmiRestControllerSpec.groovy
@@ -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