- protected void createAnchorAndSyncModel(final PersistenceCmHandle cmHandle) {
- final var modulesForCmHandle =
- dmiOperations.getResourceFromDmi(cmHandle.getDmiServiceName(), cmHandle.getId(), "modules");
- final List<ModuleReference> moduleReferencesFromDmiForCmHandle =
- getModuleReferences(modulesForCmHandle);
- final var knownModuleReferencesInCps =
- cpsModuleService.getYangResourceModuleReferences(NF_PROXY_DATASPACE_NAME);
- final List<ModuleReference> existingModuleReferences = new ArrayList<>();
-
- final List<ModuleReference> unknownModuleReferences = new ArrayList<>();
- for (final ModuleReference moduleReferenceFromDmiForCmHandle : moduleReferencesFromDmiForCmHandle) {
- if (knownModuleReferencesInCps.contains(moduleReferenceFromDmiForCmHandle)) {
- existingModuleReferences.add(moduleReferenceFromDmiForCmHandle);
- } else {
- unknownModuleReferences.add(moduleReferenceFromDmiForCmHandle);
- }
- }
-
- final JsonObject requestBodyAsJson = getRequestBodyAsJson(unknownModuleReferences);
-
- final Map<String, String> newYangResourcesModuleNameToContentMap =
- getNewYangResources(cmHandle, requestBodyAsJson.toString());
-
- cpsModuleService.createSchemaSetFromModules(NCMP_DATASPACE_NAME, cmHandle.getId(),
- newYangResourcesModuleNameToContentMap, existingModuleReferences);
-
- cpsAdminService.createAnchor(NCMP_DATASPACE_NAME, cmHandle.getId(), cmHandle.getId());
- }
-
- private JsonObject getRequestBodyAsJson(final List<ModuleReference> unknownModuleReferences) {
-
- final JsonObject requestBodyAsJson = new JsonObject();
- requestBodyAsJson.addProperty("operation", "read");
-
- final JsonArray moduleReferencesAsJson = getModuleReferencesAsJson(unknownModuleReferences);
-
- final JsonObject data = new JsonObject();
- data.add("modules", moduleReferencesAsJson);
- requestBodyAsJson.add("data", data);
-
- return requestBodyAsJson;
- }
-
- private JsonArray getModuleReferencesAsJson(final List<ModuleReference> unknownModuleReferences) {
- final JsonArray moduleReferences = new JsonArray();
-
- for (final ModuleReference moduleReference : unknownModuleReferences) {
- final JsonObject moduleReferenceAsJson = new JsonObject();
- moduleReferenceAsJson.addProperty("name", moduleReference.getModuleName());
- moduleReferenceAsJson.addProperty("revision", moduleReference.getRevision());
- moduleReferences.add(moduleReferenceAsJson);
- }
- return moduleReferences;
- }
-
- private Map<String, String> getNewYangResources(final PersistenceCmHandle cmHandle, final String jsonData) {
- final var moduleResourcesAsJsonString = dmiOperations.getResourceFromDmiWithJsonData(
- cmHandle.getDmiServiceName(), jsonData, cmHandle.getId(), "moduleResources");
-
- final JsonArray moduleResources = new Gson().fromJson(moduleResourcesAsJsonString.getBody(),
- JsonArray.class);
- final Map<String, String> newYangResourcesModuleNameToContentMap = new HashMap<>();
-
- for (final JsonElement moduleResource : moduleResources) {
- final YangResource yangResource = toYangResource((JsonObject) moduleResource);
- newYangResourcesModuleNameToContentMap.put(yangResource.getModuleName(), yangResource.getYangSource());