diff options
author | mpriyank <priyank.maheshwari@est.tech> | 2022-05-26 20:25:40 +0100 |
---|---|---|
committer | mpriyank <priyank.maheshwari@est.tech> | 2022-06-01 10:25:44 +0100 |
commit | 5d3ed6ff2fe76e2510867379fdf58d4e99b2cc9f (patch) | |
tree | 31317f6742d694342f3188c1e2ac662e4b87666e | |
parent | e7ba1dee7d0431d00a67e078434778b559019e98 (diff) |
Fixing CompositeState mapping
- 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>
4 files changed, 23 insertions, 6 deletions
diff --git a/cps-application/src/main/resources/application.yml b/cps-application/src/main/resources/application.yml index 692996c985..af886a1421 100644 --- a/cps-application/src/main/resources/application.yml +++ b/cps-application/src/main/resources/application.yml @@ -79,6 +79,9 @@ spring: spring.deserializer.value.delegate.class: org.springframework.kafka.support.serializer.JsonDeserializer
spring.json.value.default.type: org.onap.cps.ncmp.event.model.DmiAsyncRequestResponseEvent
spring.json.use.type.headers: false
+
+ jackson:
+ default-property-inclusion: NON_NULL
app:
ncmp:
async-m2m:
diff --git a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/mapper/RestOutputCmHandleStateMapper.java b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/mapper/RestOutputCmHandleStateMapper.java index 89015cca9d..ce32068299 100644 --- a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/mapper/RestOutputCmHandleStateMapper.java +++ b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/mapper/RestOutputCmHandleStateMapper.java @@ -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 */ diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImpl.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImpl.java index 240e3c57d1..64942e4bbb 100755 --- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImpl.java +++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImpl.java @@ -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; diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImplSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImplSpec.groovy index 161cf9892f..be13344cf2 100644 --- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImplSpec.groovy +++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImplSpec.groovy @@ -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.'() { |