Fixing CompositeState mapping 09/129409/5
authormpriyank <priyank.maheshwari@est.tech>
Thu, 26 May 2022 19:25:40 +0000 (20:25 +0100)
committermpriyank <priyank.maheshwari@est.tech>
Wed, 1 Jun 2022 09:25:44 +0000 (10:25 +0100)
- Mapper null check
- NcmpServiceCmHandle mapping for the new composite state
- Added global parameter for jackson to include only NON_NULL attributes
  in the response

Issue-ID: CPS-1066
Change-Id: I1924fef45345c77873f9c788baa701311e72bea7
Signed-off-by: mpriyank <priyank.maheshwari@est.tech>
cps-application/src/main/resources/application.yml
cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/mapper/RestOutputCmHandleStateMapper.java
cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImpl.java
cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImplSpec.groovy

index 692996c..af886a1 100644 (file)
@@ -79,6 +79,9 @@ spring:
                 spring.deserializer.value.delegate.class: org.springframework.kafka.support.serializer.JsonDeserializer\r
                 spring.json.value.default.type: org.onap.cps.ncmp.event.model.DmiAsyncRequestResponseEvent\r
                 spring.json.use.type.headers: false\r
+\r
+    jackson:\r
+      default-property-inclusion: NON_NULL\r
 app:\r
     ncmp:\r
         async-m2m:\r
index 89015cc..ce32068 100644 (file)
@@ -23,13 +23,16 @@ package org.onap.cps.ncmp.rest.mapper;
 import org.mapstruct.Mapper;
 import org.mapstruct.Mapping;
 import org.mapstruct.Named;
+import org.mapstruct.NullValueCheckStrategy;
+import org.mapstruct.NullValuePropertyMappingStrategy;
 import org.onap.cps.ncmp.api.inventory.CmHandleState;
 import org.onap.cps.ncmp.api.inventory.CompositeState;
 import org.onap.cps.ncmp.rest.model.DataStores;
 import org.onap.cps.ncmp.rest.model.RestOutputCmHandleState;
 import org.onap.cps.ncmp.rest.model.SyncState;
 
-@Mapper(componentModel = "spring")
+@Mapper(componentModel = "spring", nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS,
+        nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.SET_TO_DEFAULT)
 public interface RestOutputCmHandleStateMapper {
 
     @Mapping(target = "dataSyncState", source = "dataStores", qualifiedByName = "dataStoreToDataSyncState")
@@ -45,6 +48,10 @@ public interface RestOutputCmHandleStateMapper {
     @Named("dataStoreToDataSyncState")
     static DataStores toDataStores(CompositeState.DataStores compositeStateDataStore) {
 
+        if (compositeStateDataStore == null) {
+            return null;
+        }
+
         final DataStores dataStores = new DataStores();
 
         if (compositeStateDataStore.getRunningDataStore() != null) {
@@ -68,6 +75,7 @@ public interface RestOutputCmHandleStateMapper {
 
     /**
      * Converts cmHandleState enum value to equivalent string.
+     *
      * @param cmHandleState cm handle state enum
      * @return cm handle state as string
      */
index 240e3c5..64942e4 100755 (executable)
@@ -193,6 +193,7 @@ public class NetworkCmProxyDataServiceImpl implements NetworkCmProxyDataService
         final List<YangModelCmHandle.Property> dmiProperties = yangModelCmHandle.getDmiProperties();
         final List<YangModelCmHandle.Property> publicProperties = yangModelCmHandle.getPublicProperties();
         ncmpServiceCmHandle.setCmHandleId(yangModelCmHandle.getId());
+        ncmpServiceCmHandle.setCompositeState(yangModelCmHandle.getCompositeState());
         setDmiProperties(dmiProperties, ncmpServiceCmHandle);
         setPublicProperties(publicProperties, ncmpServiceCmHandle);
         return ncmpServiceCmHandle;
index 161cf98..be13344 100644 (file)
@@ -24,6 +24,8 @@ package org.onap.cps.ncmp.api.impl
 
 import org.onap.cps.ncmp.api.impl.operations.YangModelCmHandleRetriever
 import org.onap.cps.ncmp.api.impl.yangmodels.YangModelCmHandle
+import org.onap.cps.ncmp.api.inventory.CmHandleState
+import org.onap.cps.ncmp.api.inventory.CompositeState
 import org.onap.cps.ncmp.api.models.DmiPluginRegistration
 import org.onap.cps.ncmp.api.models.NcmpServiceCmHandle
 import org.onap.cps.spi.exceptions.DataValidationException
@@ -167,16 +169,19 @@ class NetworkCmProxyDataServiceImplSpec extends Specification {
     def 'Get a cm handle.'() {
         given: 'the system returns a yang modelled cm handle'
             def dmiServiceName = 'some service name'
-            def dmiProperties = [new YangModelCmHandle.Property('aDmiProperty', 'a dmi value')]
-            def publicProperties = [new YangModelCmHandle.Property('aPublicProperty', 'a public value')]
-            def yangModelCmHandle = new YangModelCmHandle(id:'some-cm-handle', dmiServiceName: dmiServiceName, dmiProperties: dmiProperties, publicProperties: publicProperties)
+            def dmiProperties = [new YangModelCmHandle.Property('Book', 'Romance Novel')]
+            def publicProperties = [new YangModelCmHandle.Property('Public Book', 'Public Romance Novel')]
+            def compositeState = new CompositeState(cmhandleState: 'ADVISED')
+            def yangModelCmHandle = new YangModelCmHandle(id: 'some-cm-handle', dmiServiceName: dmiServiceName,
+                dmiProperties: dmiProperties, publicProperties: publicProperties, compositeState: compositeState)
             1 * mockYangModelCmHandleRetriever.getYangModelCmHandle('some-cm-handle') >> yangModelCmHandle
         when: 'getting cm handle details for a given cm handle id from ncmp service'
             def result = objectUnderTest.getNcmpServiceCmHandle('some-cm-handle')
         then: 'the result returns the correct data'
             result.cmHandleId == 'some-cm-handle'
-            result.dmiProperties ==[ aDmiProperty:'a dmi value' ]
-            result.publicProperties == [ aPublicProperty:'a public value' ]
+            result.dmiProperties ==[ Book:'Romance Novel' ]
+            result.publicProperties == [ "Public Book":'Public Romance Novel' ]
+            result.compositeState.cmhandleState == CmHandleState.ADVISED
     }
 
     def 'Get a cm handle with an invalid id.'() {