Modify DmiDataOperationRequest to make it identical as DataOperationRequest 14/135714/3
authorsourabh_sourabh <sourabh.sourabh@est.tech>
Tue, 8 Aug 2023 18:30:41 +0000 (19:30 +0100)
committersourabh_sourabh <sourabh.sourabh@est.tech>
Wed, 9 Aug 2023 14:19:44 +0000 (15:19 +0100)
- Modified DmiDataOperationRequest attribute from operationType to
  operation.
- Wrapped operation details to parent attribute operationd array.

Issue-ID: CPS-1833

Signed-off-by: sourabh_sourabh <sourabh.sourabh@est.tech>
Change-Id: I79aa943e10e1c32c3252a6eb4375c14496476f8b
Signed-off-by: sourabh_sourabh <sourabh.sourabh@est.tech>
cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/operations/DmiDataOperation.java
cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/operations/DmiDataOperationRequest.java [new file with mode: 0644]
cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/operations/DmiDataOperations.java
cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/operations/DmiDataOperationsSpec.groovy
dmi-plugin-demo-and-csit-stub/dmi-plugin-demo-and-csit-stub-service/src/main/java/org/onap/cps/ncmp/dmi/rest/stub/controller/DmiRestStubController.java
dmi-plugin-demo-and-csit-stub/dmi-plugin-demo-and-csit-stub-service/src/main/java/org/onap/cps/ncmp/dmi/rest/stub/model/data/operational/DataOperationRequest.java
dmi-plugin-demo-and-csit-stub/dmi-plugin-demo-and-csit-stub-service/src/main/java/org/onap/cps/ncmp/dmi/rest/stub/model/data/operational/DmiDataOperationRequest.java [moved from dmi-plugin-demo-and-csit-stub/dmi-plugin-demo-and-csit-stub-service/src/main/java/org/onap/cps/ncmp/dmi/rest/stub/model/data/operational/ResourceDataOperationRequests.java with 84% similarity]

index 6346379..2e66ac0 100644 (file)
@@ -21,7 +21,6 @@
 package org.onap.cps.ncmp.api.impl.operations;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonPropertyOrder;
 import java.util.ArrayList;
 import java.util.List;
@@ -35,8 +34,7 @@ import org.onap.cps.ncmp.api.models.DataOperationDefinition;
 @JsonPropertyOrder({"operation", "operationId", "datastore", "options", "resourceIdentifier", "cmHandles"})
 public class DmiDataOperation {
 
-    @JsonProperty("operation")
-    private OperationType operationType;
+    private OperationType operation;
     private String operationId;
     private String datastore;
     private String options;
@@ -54,7 +52,7 @@ public class DmiDataOperation {
             final DataOperationDefinition dataOperationDefinition) {
 
         return DmiDataOperation.builder()
-                .operationType(OperationType.fromOperationName(dataOperationDefinition.getOperation()))
+                .operation(OperationType.fromOperationName(dataOperationDefinition.getOperation()))
                 .operationId(dataOperationDefinition.getOperationId())
                 .datastore(DatastoreType.fromDatastoreName(dataOperationDefinition.getDatastore()).getDatastoreName())
                 .options(dataOperationDefinition.getOptions())
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/operations/DmiDataOperationRequest.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/operations/DmiDataOperationRequest.java
new file mode 100644 (file)
index 0000000..8ee1d90
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+ *  ============LICENSE_START=======================================================
+ *  Copyright (C) 2023 Nordix Foundation
+ *  ================================================================================
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ *  SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.cps.ncmp.api.impl.operations;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import java.util.List;
+import lombok.Builder;
+import lombok.Getter;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@Getter
+@Builder
+public class DmiDataOperationRequest {
+
+    private List<DmiDataOperation> operations;
+
+}
index 8f0975f..02de985 100644 (file)
@@ -241,10 +241,12 @@ public class DmiDataOperations extends DmiOperations {
 
     private void sendDataOperationRequestToDmiService(final String dataOperationResourceUrl,
                                                       final List<DmiDataOperation> dmiDataOperationRequestBodies) {
-        final String dataOperationRequestBodiesAsJsonString =
-                jsonObjectMapper.asJsonString(dmiDataOperationRequestBodies);
+        final DmiDataOperationRequest dmiDataOperationRequest = DmiDataOperationRequest.builder()
+                .operations(dmiDataOperationRequestBodies).build();
+        final String dmiDataOperationRequestAsJsonString =
+                jsonObjectMapper.asJsonString(dmiDataOperationRequest);
         TaskExecutor.executeTask(() -> dmiRestClient.postOperationWithJsonData(dataOperationResourceUrl,
-                                dataOperationRequestBodiesAsJsonString, READ),
+                                dmiDataOperationRequestAsJsonString, READ),
                         DEFAULT_ASYNC_TASK_EXECUTOR_TIMEOUT_IN_MILLISECONDS)
                 .whenCompleteAsync((response, throwable) -> handleTaskCompletionException(throwable,
                         dataOperationResourceUrl, dmiDataOperationRequestBodies));
index 3f40f43..b60f4e6 100644 (file)
@@ -103,7 +103,7 @@ class DmiDataOperationsSpec extends DmiOperationsBaseSpec {
         and: 'a positive response from DMI service when it is called with valid request parameters'
             def responseFromDmi = new ResponseEntity<Object>(HttpStatus.ACCEPTED)
             def expectedDmiBatchResourceDataUrl = "ncmp/v1/data/topic=my-topic-name"
-            def expectedBatchRequestAsJson = '[{"operation":"read","operationId":"operational-14","datastore":"ncmp-datastore:passthrough-operational","options":"some option","resourceIdentifier":"some resource identifier","cmHandles":[{"id":"some-cm-handle","cmHandleProperties":{"prop1":"val1"}}]}]'
+            def expectedBatchRequestAsJson = '{"operations":[{"operation":"read","operationId":"operational-14","datastore":"ncmp-datastore:passthrough-operational","options":"some option","resourceIdentifier":"some resource identifier","cmHandles":[{"id":"some-cm-handle","cmHandleProperties":{"prop1":"val1"}}]}]}'
             mockDmiRestClient.postOperationWithJsonData(expectedDmiBatchResourceDataUrl, _, READ.operationName) >> responseFromDmi
             dmiServiceUrlBuilder.getDataOperationRequestUrl(_, _) >> expectedDmiBatchResourceDataUrl
         when: 'get resource data for group of cm handles are invoked'
index b7e67d7..275331e 100644 (file)
@@ -37,7 +37,7 @@ import org.onap.cps.ncmp.api.NcmpEventResponseCode;
 import org.onap.cps.ncmp.api.impl.utils.EventDateTimeFormatter;
 import org.onap.cps.ncmp.dmi.rest.stub.model.data.operational.CmHandle;
 import org.onap.cps.ncmp.dmi.rest.stub.model.data.operational.DataOperationRequest;
-import org.onap.cps.ncmp.dmi.rest.stub.model.data.operational.ResourceDataOperationRequests;
+import org.onap.cps.ncmp.dmi.rest.stub.model.data.operational.DmiDataOperationRequest;
 import org.onap.cps.ncmp.dmi.rest.stub.utils.ResourceFileReaderUtil;
 import org.onap.cps.ncmp.events.async1_0_0.Data;
 import org.onap.cps.ncmp.events.async1_0_0.DataOperationEvent;
@@ -108,9 +108,9 @@ public class DmiRestStubController {
     /**
      * This method is not implemented for ONAP DMI plugin.
      *
-     * @param topic                         client given topic name
-     * @param requestId                     requestId generated by NCMP as an ack for client
-     * @param resourceDataOperationRequests list of operation details
+     * @param topic                   client given topic name
+     * @param requestId               requestId generated by NCMP as an ack for client
+     * @param dmiDataOperationRequest list of operation details
      * @return (@ code ResponseEntity) response entity
      */
     @PostMapping("/v1/data")
@@ -118,12 +118,17 @@ public class DmiRestStubController {
                                                                             final String topic,
                                                                         @RequestParam(value = "requestId")
                                                                         final String requestId,
-                                                                        @RequestBody final ResourceDataOperationRequests
-                                                                                resourceDataOperationRequests) {
-        log.info("Request received from the NCMP to DMI Plugin");
-        resourceDataOperationRequests.forEach(resourceDataOperationRequest -> {
-            final DataOperationEvent dataOperationEvent = getDataOperationEvent(resourceDataOperationRequest);
-            resourceDataOperationRequest.getCmHandles().forEach(cmHandle -> {
+                                                                        @RequestBody final DmiDataOperationRequest
+                                                                                    dmiDataOperationRequest) {
+        try {
+            log.info("Request received from the NCMP to DMI Plugin: {}",
+                    objectMapper.writeValueAsString(dmiDataOperationRequest));
+        } catch (final JsonProcessingException jsonProcessingException) {
+            log.info("Unable to process dmi data operation request to json string");
+        }
+        dmiDataOperationRequest.getOperations().forEach(dmiDataOperation -> {
+            final DataOperationEvent dataOperationEvent = getDataOperationEvent(dmiDataOperation);
+            dmiDataOperation.getCmHandles().forEach(cmHandle -> {
                 dataOperationEvent.getData().getResponses().get(0).setIds(List.of(cmHandle.getId()));
                 final CloudEvent cloudEvent = buildAndGetCloudEvent(topic, requestId, dataOperationEvent);
                 cloudEventKafkaTemplate.send(ncmpAsyncM2mTopic, UUID.randomUUID().toString(), cloudEvent);
 
 package org.onap.cps.ncmp.dmi.rest.stub.model.data.operational;
 
-import java.util.ArrayList;
+import java.util.List;
+import lombok.Getter;
+import lombok.Setter;
 
-public class ResourceDataOperationRequests extends ArrayList<DataOperationRequest> {
-    private static final long serialVersionUID = 3553323170854399881L;
+@Setter
+@Getter
+public class DmiDataOperationRequest {
+
+    private List<DataOperationRequest> operations;
 }