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%2FNetworkCmProxyDataServiceImpl.java;h=7ded95fa067da1493d19a5207a4ff88a1a3fe40a;hb=b7485757b6fd56c2b32cd90c5ad1d0b5bd7b3a6a;hp=363dbc21125c81d7fcabdc399c19ca34e478db2e;hpb=60feed1cac9ffdd011d10e4fce65367af6520fc8;p=cps.git 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 363dbc211..7ded95fa0 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 @@ -24,13 +24,10 @@ package org.onap.cps.ncmp.api.impl; import static org.onap.cps.ncmp.api.impl.operations.DmiRequestBody.OperationEnum; +import static org.onap.cps.spi.CascadeDeleteAllowed.CASCADE_DELETE_ALLOWED; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; -import com.google.gson.Gson; -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; import java.time.OffsetDateTime; import java.util.ArrayList; import java.util.Collection; @@ -51,7 +48,6 @@ import org.onap.cps.ncmp.api.models.CmHandle; import org.onap.cps.ncmp.api.models.DmiPluginRegistration; import org.onap.cps.ncmp.api.models.PersistenceCmHandle; import org.onap.cps.ncmp.api.models.PersistenceCmHandlesList; -import org.onap.cps.ncmp.api.models.YangResource; import org.onap.cps.spi.FetchDescendantsOption; import org.onap.cps.spi.exceptions.DataNodeNotFoundException; import org.onap.cps.spi.exceptions.DataValidationException; @@ -289,13 +285,14 @@ public class NetworkCmProxyDataServiceImpl implements NetworkCmProxyDataService } protected void syncModulesAndCreateAnchor(final PersistenceCmHandle persistenceCmHandle) { - fetchAndSyncModules(persistenceCmHandle); + syncAndCreateSchemaSet(persistenceCmHandle); createAnchor(persistenceCmHandle); } private void parseAndRemoveCmHandlesInDmiRegistration(final DmiPluginRegistration dmiPluginRegistration) { for (final String cmHandle : dmiPluginRegistration.getRemovedCmHandles()) { try { + attemptToDeleteSchemaSetWithCascade(cmHandle); cpsDataService.deleteListOrListElement(NCMP_DATASPACE_NAME, NCMP_DMI_REGISTRY_ANCHOR, "/dmi-registry/cm-handles[@id='" + cmHandle + "']", NO_TIMESTAMP); } catch (final DataNodeNotFoundException e) { @@ -304,10 +301,18 @@ public class NetworkCmProxyDataServiceImpl implements NetworkCmProxyDataService } } - private void fetchAndSyncModules(final PersistenceCmHandle persistenceCmHandle) { + private void attemptToDeleteSchemaSetWithCascade(final String schemaSetName) { + try { + cpsModuleService.deleteSchemaSet(NFP_OPERATIONAL_DATASTORE_DATASPACE_NAME, schemaSetName, + CASCADE_DELETE_ALLOWED); + } catch (final Exception e) { + log.warn("Schema set {} delete failed, reason {}", schemaSetName, e.getMessage()); + } + } + private void syncAndCreateSchemaSet(final PersistenceCmHandle persistenceCmHandle) { final List moduleReferencesFromCmHandle = - toModuleReferences(dmiModelOperations.getModuleReferences(persistenceCmHandle)); + dmiModelOperations.getModuleReferences(persistenceCmHandle); final List existingModuleReferences = new ArrayList<>(); final List unknownModuleReferences = new ArrayList<>(); prepareModuleSubsets(moduleReferencesFromCmHandle, existingModuleReferences, unknownModuleReferences); @@ -316,7 +321,7 @@ public class NetworkCmProxyDataServiceImpl implements NetworkCmProxyDataService if (unknownModuleReferences.isEmpty()) { newYangResourcesModuleNameToContentMap = new HashMap<>(); } else { - newYangResourcesModuleNameToContentMap = getNewYangResourcesFromDmi(persistenceCmHandle, + newYangResourcesModuleNameToContentMap = dmiModelOperations.getNewYangResourcesFromDmi(persistenceCmHandle, unknownModuleReferences); } cpsModuleService @@ -345,47 +350,6 @@ public class NetworkCmProxyDataServiceImpl implements NetworkCmProxyDataService persistenceCmHandle.getId()); } - private Map getNewYangResourcesFromDmi(final PersistenceCmHandle persistenceCmHandle, - final List unknownModuleReferences) { - final ResponseEntity responseEntity = - dmiModelOperations.getNewYangResourcesFromDmi(persistenceCmHandle, unknownModuleReferences); - - final JsonArray moduleResources = new Gson().fromJson(responseEntity.getBody(), - JsonArray.class); - final Map newYangResourcesModuleNameToContentMap = new HashMap<>(); - - for (final JsonElement moduleResource : moduleResources) { - final YangResource yangResource = toYangResource((JsonObject) moduleResource); - newYangResourcesModuleNameToContentMap.put(yangResource.getModuleName(), yangResource.getYangSource()); - } - return newYangResourcesModuleNameToContentMap; - } - - private static YangResource toYangResource(final JsonObject yangResourceAsJson) { - final YangResource yangResource = new YangResource(); - yangResource.setModuleName(yangResourceAsJson.get("moduleName").getAsString()); - yangResource.setRevision(yangResourceAsJson.get("revision").getAsString()); - yangResource.setYangSource(yangResourceAsJson.get("yangSource").getAsString()); - return yangResource; - } - private static List toModuleReferences( - final ResponseEntity dmiFetchModulesResponseEntity) { - final List moduleReferences = new ArrayList<>(); - final JsonObject bodyAsJsonObject = new Gson().fromJson(dmiFetchModulesResponseEntity.getBody(), - JsonObject.class); - final JsonArray moduleReferencesAsJson = bodyAsJsonObject.getAsJsonArray("schemas"); - for (final JsonElement moduleReferenceAsJson : moduleReferencesAsJson) { - final ModuleReference moduleReference = toModuleReference((JsonObject) moduleReferenceAsJson); - moduleReferences.add(moduleReference); - } - return moduleReferences; - } - private static ModuleReference toModuleReference(final JsonObject moduleReferenceAsJson) { - final ModuleReference moduleReference = new ModuleReference(); - moduleReference.setModuleName(moduleReferenceAsJson.get("moduleName").getAsString()); - moduleReference.setRevision(moduleReferenceAsJson.get("revision").getAsString()); - return moduleReference; - } }