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=b033af87cd186c77dfac3235bdf48da338774e3b;hb=d69742c1f02585ae5d82f49542581698367e9cde;hp=f74616ab30cb46868065a7c9fa8bcaf552a3e7fc;hpb=82ebf531110deba98086f8f7cb9c745519bbc4f4;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 f74616ab3..b033af87c 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 @@ -1,6 +1,7 @@ /* * ============LICENSE_START======================================================= - * Copyright (C) 2021 Nordix Foundation + * Copyright (C) 2021-2022 Nordix Foundation + * Modifications Copyright (C) 2022 Bell Canada * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,22 +23,26 @@ package org.onap.cps.ncmp.api.impl.operations; 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.Collection; 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.impl.utils.DmiServiceUrlBuilder; +import org.onap.cps.ncmp.api.impl.yangmodels.YangModelCmHandle; import org.onap.cps.ncmp.api.models.YangResource; import org.onap.cps.spi.model.ModuleReference; -import org.springframework.http.HttpHeaders; +import org.onap.cps.utils.JsonObjectMapper; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; +/** + * Operations class for DMI Model. + */ @Component public class DmiModelOperations extends DmiOperations { @@ -46,44 +51,44 @@ public class DmiModelOperations extends DmiOperations { * * @param dmiRestClient {@code DmiRestClient} */ - public DmiModelOperations(final PersistenceCmHandleRetriever cmHandlePropertiesRetriever, - final ObjectMapper objectMapper, + public DmiModelOperations(final YangModelCmHandleRetriever dmiPropertiesRetriever, + final JsonObjectMapper jsonObjectMapper, final NcmpConfiguration.DmiProperties dmiProperties, - final DmiRestClient dmiRestClient) { - super(cmHandlePropertiesRetriever, objectMapper, dmiProperties, dmiRestClient); + final DmiRestClient dmiRestClient, final DmiServiceUrlBuilder dmiServiceUrlBuilder) { + super(dmiPropertiesRetriever, jsonObjectMapper, dmiProperties, dmiRestClient, dmiServiceUrlBuilder); } /** * Retrieves module references. * - * @param persistenceCmHandle the persistence cm handle + * @param yangModelCmHandle the yang model cm handle * @return module references */ - public List getModuleReferences(final PersistenceCmHandle persistenceCmHandle) { + public List getModuleReferences(final YangModelCmHandle yangModelCmHandle) { final DmiRequestBody dmiRequestBody = DmiRequestBody.builder() .build(); - dmiRequestBody.asCmHandleProperties(persistenceCmHandle.getAdditionalProperties()); + dmiRequestBody.asDmiProperties(yangModelCmHandle.getDmiProperties()); final ResponseEntity dmiFetchModulesResponseEntity = getResourceFromDmiWithJsonData( - persistenceCmHandle.resolveDmiServiceName(MODEL), - getDmiRequestBodyAsString(dmiRequestBody), persistenceCmHandle.getId(), "modules"); + yangModelCmHandle.resolveDmiServiceName(MODEL), + jsonObjectMapper.asJsonString(dmiRequestBody), yangModelCmHandle.getId(), "modules"); return toModuleReferences((Map) dmiFetchModulesResponseEntity.getBody()); } /** * Retrieve yang resources from dmi for any modules that CPS-NCMP hasn't cached before. * - * @param persistenceCmHandle the persistenceCmHandle - * @param unknownModuleReferences the unknown module references + * @param yangModelCmHandle the yangModelCmHandle + * @param newModuleReferences the unknown module references * @return yang resources as map of module name to yang(re)source */ - public Map getNewYangResourcesFromDmi(final PersistenceCmHandle persistenceCmHandle, - final List unknownModuleReferences) { - final String jsonDataWithDataAndCmHandleProperties = getRequestBodyToFetchYangResources( - unknownModuleReferences, persistenceCmHandle.getAdditionalProperties()); + public Map getNewYangResourcesFromDmi(final YangModelCmHandle yangModelCmHandle, + final Collection newModuleReferences) { + final String jsonWithDataAndDmiProperties = getRequestBodyToFetchYangResources( + newModuleReferences, yangModelCmHandle.getDmiProperties()); final ResponseEntity responseEntity = getResourceFromDmiWithJsonData( - persistenceCmHandle.resolveDmiServiceName(MODEL), - jsonDataWithDataAndCmHandleProperties, - persistenceCmHandle.getId(), + yangModelCmHandle.resolveDmiServiceName(MODEL), + jsonWithDataAndDmiProperties, + yangModelCmHandle.getId(), "moduleResources"); return asModuleNameToYangResourceMap(responseEntity); } @@ -102,21 +107,21 @@ public class DmiModelOperations extends DmiOperations { final String cmHandle, final String resourceName) { final String dmiResourceDataUrl = getDmiResourceUrl(dmiServiceName, cmHandle, resourceName); - return dmiRestClient.postOperationWithJsonData(dmiResourceDataUrl, jsonData, new HttpHeaders()); + return dmiRestClient.postOperationWithJsonData(dmiResourceDataUrl, jsonData); } - private static String getRequestBodyToFetchYangResources(final List unknownModuleReferences, - final List cmHandleProperties) { - final JsonArray moduleReferencesAsJson = getModuleReferencesAsJson(unknownModuleReferences); + private static String getRequestBodyToFetchYangResources(final Collection newModuleReferences, + final List dmiProperties) { + final JsonArray moduleReferencesAsJson = getModuleReferencesAsJson(newModuleReferences); final JsonObject data = new JsonObject(); data.add("modules", moduleReferencesAsJson); final JsonObject jsonRequestObject = new JsonObject(); jsonRequestObject.add("data", data); - jsonRequestObject.add("cmHandleProperties", toJsonObject(cmHandleProperties)); + jsonRequestObject.add("cmHandleProperties", toJsonObject(dmiProperties)); return jsonRequestObject.toString(); } - private static JsonArray getModuleReferencesAsJson(final List unknownModuleReferences) { + private static JsonArray getModuleReferencesAsJson(final Collection unknownModuleReferences) { final JsonArray moduleReferences = new JsonArray(); for (final ModuleReference moduleReference : unknownModuleReferences) { @@ -128,23 +133,24 @@ public class DmiModelOperations extends DmiOperations { return moduleReferences; } - private static JsonObject toJsonObject(final List cmHandleProperties) { + private static JsonObject toJsonObject(final List + dmiProperties) { final JsonObject asJsonObject = new JsonObject(); - for (final PersistenceCmHandle.AdditionalProperty additionalProperty : cmHandleProperties) { + for (final YangModelCmHandle.Property additionalProperty : dmiProperties) { asJsonObject.addProperty(additionalProperty.getName(), additionalProperty.getValue()); } return asJsonObject; } - private List toModuleReferences(final Map dmiFetchModulesResponseAsMap) { + private List toModuleReferences(final Map dmiFetchModulesResponseAsMap) { final List moduleReferences = new ArrayList<>(); if (dmiFetchModulesResponseAsMap != null) { - final List moduleReferencesAsList = (List) dmiFetchModulesResponseAsMap.get("schemas"); + final List moduleReferencesAsList = (List) dmiFetchModulesResponseAsMap.get("schemas"); if (moduleReferencesAsList != null) { moduleReferencesAsList.forEach(moduleReferenceAsMap -> { final ModuleReference moduleReference = - objectMapper.convertValue(moduleReferenceAsMap, ModuleReference.class); + jsonObjectMapper.convertToValueType(moduleReferenceAsMap, ModuleReference.class); moduleReferences.add(moduleReference); }); } @@ -159,7 +165,7 @@ public class DmiModelOperations extends DmiOperations { if (yangResourcesAsList != null) { yangResourcesAsList.forEach(yangResourceAsMap -> { final YangResource yangResource = - objectMapper.convertValue(yangResourceAsMap, YangResource.class); + jsonObjectMapper.convertToValueType(yangResourceAsMap, YangResource.class); yangResourcesModuleNameToContentMap.put(yangResource.getModuleName(), yangResource.getYangSource()); });