X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=cps-ncmp-service%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fcps%2Fncmp%2Fapi%2Fimpl%2Foperations%2FDmiModelOperations.java;h=f74616ab30cb46868065a7c9fa8bcaf552a3e7fc;hb=82ebf531110deba98086f8f7cb9c745519bbc4f4;hp=c582584667fb85fe7adc76d81041177ca3f09454;hpb=4207fab422760b17187d37776ebc1867b995bba1;p=cps.git diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/operations/DmiModelOperations.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/operations/DmiModelOperations.java index c58258466..f74616ab3 100644 --- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/operations/DmiModelOperations.java +++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/operations/DmiModelOperations.java @@ -25,10 +25,14 @@ import static org.onap.cps.ncmp.api.impl.operations.RequiredDmiService.MODEL; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.gson.JsonArray; import com.google.gson.JsonObject; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import org.onap.cps.ncmp.api.impl.client.DmiRestClient; import org.onap.cps.ncmp.api.impl.config.NcmpConfiguration; import org.onap.cps.ncmp.api.models.PersistenceCmHandle; +import org.onap.cps.ncmp.api.models.YangResource; import org.onap.cps.spi.model.ModuleReference; import org.springframework.http.HttpHeaders; import org.springframework.http.ResponseEntity; @@ -55,12 +59,14 @@ public class DmiModelOperations extends DmiOperations { * @param persistenceCmHandle the persistence cm handle * @return module references */ - public ResponseEntity getModuleReferences(final PersistenceCmHandle persistenceCmHandle) { + public List getModuleReferences(final PersistenceCmHandle persistenceCmHandle) { final DmiRequestBody dmiRequestBody = DmiRequestBody.builder() .build(); dmiRequestBody.asCmHandleProperties(persistenceCmHandle.getAdditionalProperties()); - return getResourceFromDmiWithJsonData(persistenceCmHandle.resolveDmiServiceName(MODEL), + final ResponseEntity dmiFetchModulesResponseEntity = getResourceFromDmiWithJsonData( + persistenceCmHandle.resolveDmiServiceName(MODEL), getDmiRequestBodyAsString(dmiRequestBody), persistenceCmHandle.getId(), "modules"); + return toModuleReferences((Map) dmiFetchModulesResponseEntity.getBody()); } /** @@ -68,17 +74,18 @@ public class DmiModelOperations extends DmiOperations { * * @param persistenceCmHandle the persistenceCmHandle * @param unknownModuleReferences the unknown module references - * @return yang resources + * @return yang resources as map of module name to yang(re)source */ - public ResponseEntity getNewYangResourcesFromDmi(final PersistenceCmHandle persistenceCmHandle, - final List unknownModuleReferences) { + public Map getNewYangResourcesFromDmi(final PersistenceCmHandle persistenceCmHandle, + final List unknownModuleReferences) { final String jsonDataWithDataAndCmHandleProperties = getRequestBodyToFetchYangResources( unknownModuleReferences, persistenceCmHandle.getAdditionalProperties()); - return getResourceFromDmiWithJsonData( + final ResponseEntity responseEntity = getResourceFromDmiWithJsonData( persistenceCmHandle.resolveDmiServiceName(MODEL), jsonDataWithDataAndCmHandleProperties, persistenceCmHandle.getId(), "moduleResources"); + return asModuleNameToYangResourceMap(responseEntity); } /** @@ -90,7 +97,7 @@ public class DmiModelOperations extends DmiOperations { * @param resourceName name of the resource(s) * @return {@code ResponseEntity} response entity */ - private ResponseEntity getResourceFromDmiWithJsonData(final String dmiServiceName, + private ResponseEntity getResourceFromDmiWithJsonData(final String dmiServiceName, final String jsonData, final String cmHandle, final String resourceName) { @@ -122,7 +129,6 @@ public class DmiModelOperations extends DmiOperations { } private static JsonObject toJsonObject(final List cmHandleProperties) { - //TODO Toine/Joe Double check format with existing test data final JsonObject asJsonObject = new JsonObject(); for (final PersistenceCmHandle.AdditionalProperty additionalProperty : cmHandleProperties) { asJsonObject.addProperty(additionalProperty.getName(), additionalProperty.getValue()); @@ -130,4 +136,34 @@ public class DmiModelOperations extends DmiOperations { return asJsonObject; } + private List toModuleReferences(final Map dmiFetchModulesResponseAsMap) { + final List moduleReferences = new ArrayList<>(); + + if (dmiFetchModulesResponseAsMap != null) { + final List moduleReferencesAsList = (List) dmiFetchModulesResponseAsMap.get("schemas"); + if (moduleReferencesAsList != null) { + moduleReferencesAsList.forEach(moduleReferenceAsMap -> { + final ModuleReference moduleReference = + objectMapper.convertValue(moduleReferenceAsMap, ModuleReference.class); + moduleReferences.add(moduleReference); + }); + } + } + return moduleReferences; + } + + private Map asModuleNameToYangResourceMap(final ResponseEntity responseEntity) { + final Map yangResourcesModuleNameToContentMap = new HashMap<>(); + final List> yangResourcesAsList = (List) responseEntity.getBody(); + + if (yangResourcesAsList != null) { + yangResourcesAsList.forEach(yangResourceAsMap -> { + final YangResource yangResource = + objectMapper.convertValue(yangResourceAsMap, YangResource.class); + yangResourcesModuleNameToContentMap.put(yangResource.getModuleName(), + yangResource.getYangSource()); + }); + } + return yangResourcesModuleNameToContentMap; + } }