summaryrefslogtreecommitdiffstats
path: root/cps-ncmp-rest/src
diff options
context:
space:
mode:
authorputhuparambil.aditya <aditya.puthuparambil@bell.ca>2021-12-08 18:53:39 +0000
committerputhuparambil.aditya <aditya.puthuparambil@bell.ca>2021-12-13 11:34:08 +0000
commitd000733344658e79e8a384e724349bdb644d7c62 (patch)
tree7fa8beba0d72ad7453d4c64a7027e827904ef9e0 /cps-ncmp-rest/src
parent8c9b4a24b4841154a2d08f506e2f7beca4f6fc31 (diff)
Define response objects(schemas) in cps-ncmp
Issue-ID: CPS-559 Signed-off-by: puthuparambil.aditya <aditya.puthuparambil@bell.ca> Change-Id: Id181f2a1b9554118f5e7464c95e873f09fc908eb
Diffstat (limited to 'cps-ncmp-rest/src')
-rwxr-xr-xcps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java47
-rw-r--r--cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyControllerSpec.groovy59
2 files changed, 49 insertions, 57 deletions
diff --git a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java
index 3b44b80f6d..28bb28ce85 100755
--- a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java
+++ b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java
@@ -37,6 +37,7 @@ import java.util.stream.Collectors;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import lombok.extern.slf4j.Slf4j;
+import org.modelmapper.ModelMapper;
import org.onap.cps.ncmp.api.NetworkCmProxyDataService;
import org.onap.cps.ncmp.rest.api.NetworkCmProxyApi;
import org.onap.cps.ncmp.rest.model.CmHandleProperties;
@@ -46,9 +47,9 @@ import org.onap.cps.ncmp.rest.model.ConditionProperties;
import org.onap.cps.ncmp.rest.model.Conditions;
import org.onap.cps.ncmp.rest.model.ModuleNameAsJsonObject;
import org.onap.cps.ncmp.rest.model.ModuleNamesAsJsonArray;
+import org.onap.cps.ncmp.rest.model.ModuleReference;
import org.onap.cps.spi.FetchDescendantsOption;
import org.onap.cps.spi.model.DataNode;
-import org.onap.cps.spi.model.ModuleReference;
import org.onap.cps.utils.DataMapUtils;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
@@ -62,6 +63,7 @@ public class NetworkCmProxyController implements NetworkCmProxyApi {
private static final Gson GSON = new GsonBuilder().create();
+ private final ModelMapper modelMapper = new ModelMapper();
private final NetworkCmProxyDataService networkCmProxyDataService;
/**
@@ -78,9 +80,9 @@ public class NetworkCmProxyController implements NetworkCmProxyApi {
*/
@Override
@Deprecated(forRemoval = false)
- public ResponseEntity<Void> createNode(final String cmHandle, @Valid final String jsonData,
+ public ResponseEntity<Void> createNode(final String cmHandle, @Valid final Object jsonData,
@Valid final String parentNodeXpath) {
- networkCmProxyDataService.createDataNode(cmHandle, parentNodeXpath, jsonData);
+ networkCmProxyDataService.createDataNode(cmHandle, parentNodeXpath, GSON.toJson(jsonData));
return new ResponseEntity<>(HttpStatus.CREATED);
}
@@ -91,8 +93,8 @@ public class NetworkCmProxyController implements NetworkCmProxyApi {
@Override
@Deprecated(forRemoval = false)
public ResponseEntity<Void> addListNodeElements(@NotNull @Valid final String parentNodeXpath,
- final String cmHandle, @Valid final String jsonData) {
- networkCmProxyDataService.addListNodeElements(cmHandle, parentNodeXpath, jsonData);
+ final String cmHandle, @Valid final Object jsonData) {
+ networkCmProxyDataService.addListNodeElements(cmHandle, parentNodeXpath, GSON.toJson(jsonData));
return new ResponseEntity<>(HttpStatus.CREATED);
}
@@ -131,9 +133,9 @@ public class NetworkCmProxyController implements NetworkCmProxyApi {
*/
@Override
@Deprecated(forRemoval = false)
- public ResponseEntity<Object> replaceNode(final String cmHandle, @Valid final String jsonData,
+ public ResponseEntity<Object> replaceNode(final String cmHandle, @Valid final Object jsonData,
@Valid final String parentNodeXpath) {
- networkCmProxyDataService.replaceNodeTree(cmHandle, parentNodeXpath, jsonData);
+ networkCmProxyDataService.replaceNodeTree(cmHandle, parentNodeXpath, GSON.toJson(jsonData));
return new ResponseEntity<>(HttpStatus.OK);
}
@@ -143,9 +145,9 @@ public class NetworkCmProxyController implements NetworkCmProxyApi {
*/
@Override
@Deprecated(forRemoval = false)
- public ResponseEntity<Object> updateNodeLeaves(final String cmHandle, @Valid final String jsonData,
+ public ResponseEntity<Object> updateNodeLeaves(final String cmHandle, @Valid final Object jsonData,
@Valid final String parentNodeXpath) {
- networkCmProxyDataService.updateNodeLeaves(cmHandle, parentNodeXpath, jsonData);
+ networkCmProxyDataService.updateNodeLeaves(cmHandle, parentNodeXpath, GSON.toJson(jsonData));
return new ResponseEntity<>(HttpStatus.OK);
}
@@ -196,7 +198,7 @@ public class NetworkCmProxyController implements NetworkCmProxyApi {
final String cmHandle,
final Object requestBody, final String contentType) {
networkCmProxyDataService.writeResourceDataPassThroughRunningForCmHandle(cmHandle,
- resourceIdentifier, PATCH, requestBody.toString(), contentType);
+ resourceIdentifier, PATCH, GSON.toJson(requestBody), contentType);
return new ResponseEntity<>(HttpStatus.OK);
}
@@ -211,11 +213,9 @@ public class NetworkCmProxyController implements NetworkCmProxyApi {
*/
@Override
public ResponseEntity<Void> createResourceDataRunningForCmHandle(final String resourceIdentifier,
- final String cmHandle,
- final String requestBody,
- final String contentType) {
+ final String cmHandle, final Object requestBody, final String contentType) {
networkCmProxyDataService.writeResourceDataPassThroughRunningForCmHandle(cmHandle,
- resourceIdentifier, CREATE, requestBody, contentType);
+ resourceIdentifier, CREATE, GSON.toJson(requestBody), contentType);
return new ResponseEntity<>(HttpStatus.CREATED);
}
@@ -231,10 +231,10 @@ public class NetworkCmProxyController implements NetworkCmProxyApi {
@Override
public ResponseEntity<Object> updateResourceDataRunningForCmHandle(final String resourceIdentifier,
final String cmHandle,
- final String requestBody,
+ final Object requestBody,
final String contentType) {
networkCmProxyDataService.writeResourceDataPassThroughRunningForCmHandle(cmHandle,
- resourceIdentifier, UPDATE, requestBody, contentType);
+ resourceIdentifier, UPDATE, GSON.toJson(requestBody), contentType);
return new ResponseEntity<>(HttpStatus.OK);
}
@@ -251,11 +251,11 @@ public class NetworkCmProxyController implements NetworkCmProxyApi {
@Override
public ResponseEntity<Void> deleteResourceDataRunningForCmHandle(final String resourceIdentifier,
final String cmHandle,
- final String requestBody,
+ final Object requestBody,
final String contentType) {
networkCmProxyDataService.writeResourceDataPassThroughRunningForCmHandle(cmHandle,
- resourceIdentifier, DELETE, requestBody, contentType);
+ resourceIdentifier, DELETE, GSON.toJson(requestBody), contentType);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
@@ -280,11 +280,12 @@ public class NetworkCmProxyController implements NetworkCmProxyApi {
* @param cmHandle the cm handle
* @return module references for cm handle
*/
- @Override
- public ResponseEntity<Object> getModuleReferencesByCmHandle(final String cmHandle) {
- final Collection<ModuleReference>
- moduleReferences = networkCmProxyDataService.getYangResourcesModuleReferences(cmHandle);
- return new ResponseEntity<>(new Gson().toJson(moduleReferences), HttpStatus.OK);
+ public ResponseEntity<List<ModuleReference>> getModuleReferencesByCmHandle(final String cmHandle) {
+ final List<ModuleReference> moduleReferences =
+ networkCmProxyDataService.getYangResourcesModuleReferences(cmHandle).stream()
+ .map(moduleReference -> modelMapper.map(moduleReference, ModuleReference.class))
+ .collect(Collectors.toList());
+ return new ResponseEntity<>(moduleReferences, HttpStatus.OK);
}
private Collection<String> processConditions(final List<ConditionProperties> conditionProperties) {
diff --git a/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyControllerSpec.groovy b/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyControllerSpec.groovy
index 530ce4e3a1..c75418c78f 100644
--- a/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyControllerSpec.groovy
+++ b/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyControllerSpec.groovy
@@ -63,6 +63,7 @@ class NetworkCmProxyControllerSpec extends Specification {
def cmHandle = 'some handle'
def xpath = 'some xpath'
+ def jsonString = '{"some-key":"some-value"}'
def 'Query data node by cps path for the given cm handle with #scenario.'() {
given: 'service method returns a list containing a data node'
@@ -88,17 +89,15 @@ class NetworkCmProxyControllerSpec extends Specification {
}
def 'Create data node: #scenario.'() {
- given: 'json data'
- def jsonData = 'json data'
when: 'post request is performed'
def response = mvc.perform(
post("$ncmpBasePathV1/cm-handles/$cmHandle/nodes")
.contentType(MediaType.APPLICATION_JSON)
- .content(jsonData)
+ .content(jsonString)
.param('xpath', reqXpath)
).andReturn().response
then: 'the service method is invoked once with expected parameters'
- 1 * mockNetworkCmProxyDataService.createDataNode(cmHandle, usedXpath, jsonData)
+ 1 * mockNetworkCmProxyDataService.createDataNode(cmHandle, usedXpath, jsonString)
and: 'response status indicates success'
response.status == HttpStatus.CREATED.value()
where: 'following parameters were used'
@@ -109,54 +108,49 @@ class NetworkCmProxyControllerSpec extends Specification {
}
def 'Add list-node elements.'() {
- given: 'json data and parent node xpath'
- def jsonData = 'json data'
+ given: ' parent node xpath'
def parentNodeXpath = 'parent node xpath'
when: 'post request is performed'
def response = mvc.perform(
post("$ncmpBasePathV1/cm-handles/$cmHandle/list-node")
.contentType(MediaType.APPLICATION_JSON)
- .content(jsonData)
+ .content(jsonString)
.param('xpath', parentNodeXpath)
).andReturn().response
then: 'the service method is invoked once with expected parameters'
- 1 * mockNetworkCmProxyDataService.addListNodeElements(cmHandle, parentNodeXpath, jsonData)
+ 1 * mockNetworkCmProxyDataService.addListNodeElements(cmHandle, parentNodeXpath, jsonString)
and: 'response status indicates success'
response.status == HttpStatus.CREATED.value()
}
def 'Update data node leaves.'() {
- given: 'json data'
- def jsonData = 'json data'
- and: 'the query endpoint'
+ given: 'the query endpoint'
def endpoint = "$ncmpBasePathV1/cm-handles/$cmHandle/nodes"
when: 'patch request is performed'
def response = mvc.perform(
patch(endpoint)
.contentType(MediaType.APPLICATION_JSON)
- .content(jsonData)
+ .content(jsonString)
.param('xpath', xpath)
).andReturn().response
then: 'the service method is invoked once with expected parameters'
- 1 * mockNetworkCmProxyDataService.updateNodeLeaves(cmHandle, xpath, jsonData)
+ 1 * mockNetworkCmProxyDataService.updateNodeLeaves(cmHandle, xpath, jsonString)
and: 'response status indicates success'
response.status == HttpStatus.OK.value()
}
def 'Replace data node tree.'() {
- given: 'json data'
- def jsonData = 'json data'
- and: 'the query endpoint'
+ given: 'the query endpoint'
def endpoint = "$ncmpBasePathV1/cm-handles/$cmHandle/nodes"
when: 'put request is performed'
def response = mvc.perform(
put(endpoint)
.contentType(MediaType.APPLICATION_JSON)
- .content(jsonData)
+ .content(jsonString)
.param('xpath', xpath)
).andReturn().response
then: 'the service method is invoked once with expected parameters'
- 1 * mockNetworkCmProxyDataService.replaceNodeTree(cmHandle, xpath, jsonData)
+ 1 * mockNetworkCmProxyDataService.replaceNodeTree(cmHandle, xpath, jsonString)
and: 'response status indicates success'
response.status == HttpStatus.OK.value()
}
@@ -232,11 +226,11 @@ class NetworkCmProxyControllerSpec extends Specification {
def response = mvc.perform(
put(updateUrl)
.contentType(MediaType.APPLICATION_JSON_VALUE)
- .accept(MediaType.APPLICATION_JSON_VALUE).content('some-request-body')
+ .accept(MediaType.APPLICATION_JSON_VALUE).content(jsonString)
).andReturn().response
then: 'ncmp service method to update resource is called'
1 * mockNetworkCmProxyDataService.writeResourceDataPassThroughRunningForCmHandle('testCmHandle',
- 'parent/child', UPDATE,'some-request-body', 'application/json;charset=UTF-8')
+ 'parent/child', UPDATE, jsonString, 'application/json;charset=UTF-8')
and: 'the response status is OK'
response.status == HttpStatus.OK.value()
}
@@ -245,6 +239,7 @@ class NetworkCmProxyControllerSpec extends Specification {
given: 'resource data url'
def url = "$ncmpBasePathV1/ch/testCmHandle/data/ds/ncmp-datastore:passthrough-running" +
"?resourceIdentifier=parent/child"
+ def requestBody = '{"some-key":"some-value"}'
when: 'create resource request is performed'
def response = mvc.perform(
post(url)
@@ -256,10 +251,6 @@ class NetworkCmProxyControllerSpec extends Specification {
'parent/child', CREATE, requestBody, 'application/json;charset=UTF-8')
and: 'resource is created'
response.status == HttpStatus.CREATED.value()
- where: 'given request body'
- scenario | requestBody
- 'body contains " and new line' | 'body with " quote and \n new line'
- 'body contains normal string' | 'normal request body'
}
def 'Get module references for the given dataspace and cm handle.' () {
@@ -269,9 +260,9 @@ class NetworkCmProxyControllerSpec extends Specification {
def response =mvc.perform(get(getUrl)).andReturn().response
then: 'ncmp service method to get yang resource module references is called'
mockNetworkCmProxyDataService.getYangResourcesModuleReferences('some-cmhandle')
- >> [new ModuleReference(moduleName: 'some-name1',revision: 'some-revision1')]
+ >> [new ModuleReference(moduleName: 'some-name1',revision: '2021-10-03')]
and: 'response contains an array with the module name and revision'
- response.getContentAsString() == '[{"moduleName":"some-name1","revision":"some-revision1"}]'
+ response.getContentAsString() == '[{"moduleName":"some-name1","revision":"2021-10-03"}]'
and: 'response returns an OK http code'
response.status == HttpStatus.OK.value()
}
@@ -279,13 +270,13 @@ class NetworkCmProxyControllerSpec extends Specification {
def 'Retrieve cm handles.'() {
given: 'an endpoint and json data'
def searchesEndpoint = "$ncmpBasePathV1/ch/searches"
- String jsonData = TestUtils.getResourceFileContent('cmhandle-search.json')
+ String jsonString = TestUtils.getResourceFileContent('cmhandle-search.json')
and: 'the service method is invoked with module names and returns two cm handle ids'
mockNetworkCmProxyDataService.executeCmHandleHasAllModulesSearch(['module1', 'module2']) >> ['some-cmhandle-id1', 'some-cmhandle-id2']
when: 'the searches api is invoked'
def response = mvc.perform(post(searchesEndpoint)
.contentType(MediaType.APPLICATION_JSON)
- .content(jsonData)).andReturn().response
+ .content(jsonString)).andReturn().response
then: 'response status returns OK'
response.status == HttpStatus.OK.value()
and: 'the expected response content is returned'
@@ -295,11 +286,11 @@ class NetworkCmProxyControllerSpec extends Specification {
def 'Call execute cm handle searches with unrecognized condition name.'() {
given: 'an endpoint and json data'
def searchesEndpoint = "$ncmpBasePathV1/ch/searches"
- String jsonData = TestUtils.getResourceFileContent('invalid-cmhandle-search.json')
+ String jsonString = TestUtils.getResourceFileContent('invalid-cmhandle-search.json')
when: 'the searches api is invoked'
def response = mvc.perform(post(searchesEndpoint)
.contentType(MediaType.APPLICATION_JSON)
- .content(jsonData)).andReturn().response
+ .content(jsonString)).andReturn().response
then: 'an empty cm handle identifier is returned'
response.contentAsString == '{"cmHandles":[]}'
}
@@ -312,11 +303,11 @@ class NetworkCmProxyControllerSpec extends Specification {
def response = mvc.perform(
patch(url)
.contentType(MediaType.APPLICATION_JSON)
- .accept(MediaType.APPLICATION_JSON).content('{"some-key" : "some-value"}')
+ .accept(MediaType.APPLICATION_JSON).content(jsonString)
).andReturn().response
then: 'ncmp service method to update resource is called'
1 * mockNetworkCmProxyDataService.writeResourceDataPassThroughRunningForCmHandle('testCmHandle',
- 'parent/child', PATCH, '{some-key=some-value}', 'application/json;charset=UTF-8')
+ 'parent/child', PATCH, jsonString, 'application/json;charset=UTF-8')
and: 'the response status is OK'
response.status == HttpStatus.OK.value()
}
@@ -328,10 +319,10 @@ class NetworkCmProxyControllerSpec extends Specification {
when: 'delete data resource request is performed'
def response = mvc.perform(
delete(url).contentType(MediaType.APPLICATION_JSON).accept(MediaType.APPLICATION_JSON)
- .content('{"some-key" : "some-value"}')).andReturn().response
+ .content(jsonString)).andReturn().response
then: 'the ncmp service method to delete resource is called'
1 * mockNetworkCmProxyDataService.writeResourceDataPassThroughRunningForCmHandle('testCmHandle',
- 'parent/child', DELETE, '{"some-key" : "some-value"}', 'application/json;charset=UTF-8')
+ 'parent/child', DELETE, jsonString, 'application/json;charset=UTF-8')
and: 'the response is No Content'
response.status == HttpStatus.NO_CONTENT.value()
}