Add exception handling to delete schema set when a registration is removed
[cps.git] / cps-ncmp-service / src / main / java / org / onap / cps / ncmp / api / impl / NetworkCmProxyDataServiceImpl.java
index fb929a2..62a0922 100755 (executable)
@@ -24,6 +24,7 @@
 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;
@@ -289,13 +290,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,7 +306,16 @@ 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<ModuleReference> moduleReferencesFromCmHandle =
             toModuleReferences(dmiModelOperations.getModuleReferences(persistenceCmHandle));
@@ -365,12 +376,7 @@ public class NetworkCmProxyDataServiceImpl implements NetworkCmProxyDataService
         final YangResource yangResource = new YangResource();
         yangResource.setModuleName(yangResourceAsJson.get("moduleName").getAsString());
         yangResource.setRevision(yangResourceAsJson.get("revision").getAsString());
-        final String yangSourceJson = yangResourceAsJson.get("yangSource").getAsString();
-
-        String yangSource = JsonUtils.removeWrappingTokens(yangSourceJson);
-        yangSource = JsonUtils.removeRedundantEscapeCharacters(yangSource);
-        yangResource.setYangSource(yangSource);
-
+        yangResource.setYangSource(yangResourceAsJson.get("yangSource").getAsString());
         return yangResource;
     }