- @Override
- public Object getResourceDataPassThroughRunningForCmHandle(final @NotNull String cmHandle,
- final @NotNull String resourceIdentifier,
- final String accept,
- final String fields,
- final Integer depth) {
- final var cmHandleDataNode = fetchDataNodeFromDmiRegistryForCmHandle(cmHandle);
- final var dmiServiceName = String.valueOf(cmHandleDataNode.getLeaves().get("dmi-service-name"));
- final Collection<DataNode> additionalPropsList = cmHandleDataNode.getChildDataNodes();
- final var dmiRequesBody = prepareOperationBody(GenericRequestBody.OperationEnum.READ, additionalPropsList);
- final ResponseEntity<Object> response = dmiOperations.getResouceDataPassThroughRunningFromDmi(dmiServiceName,
- cmHandle,
- resourceIdentifier,
- fields,
- depth,
- accept,
- dmiRequesBody);
- return handleResponse(response);
- }
-
- private DataNode fetchDataNodeFromDmiRegistryForCmHandle(final String cmHandle) {
- final String xpathForDmiRegistryToFetchCmHandle = "/dmi-registry/cm-handles[@id='" + cmHandle + "']";
- final var dataNode = cpsDataService.getDataNode(NCMP_DATASPACE_NAME,
- NCMP_DMI_REGISTRY_ANCHOR,
- xpathForDmiRegistryToFetchCmHandle,
- FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS);
- return dataNode;
- }
-
- private String prepareOperationBody(final GenericRequestBody.OperationEnum operation,
- final Collection<DataNode> additionalPropertyList) {
- final var requestBody = new GenericRequestBody();
- final Map<String, String> additionalPropertyMap = getAdditionalPropertiesMap(additionalPropertyList);
- requestBody.setOperation(GenericRequestBody.OperationEnum.READ);
- requestBody.setCmHandleProperties(additionalPropertyMap);
- try {
- final var requestJson = objectMapper.writeValueAsString(requestBody);
- return requestJson;
- } catch (final JsonProcessingException je) {
- log.error("Parsing error occurred while converting Object to JSON.");
- throw new NcmpException("Parsing error occurred while converting given object to JSON.",
- je.getMessage());
+ private PersistenceCmHandlesList getUpdatedPersistenceCmHandlesList(
+ final DmiPluginRegistration dmiPluginRegistration,
+ final List<CmHandle> updatedCmHandles) {
+ return PersistenceCmHandlesList.toPersistenceCmHandlesList(
+ dmiPluginRegistration.getDmiPlugin(),
+ dmiPluginRegistration.getDmiDataPlugin(),
+ dmiPluginRegistration.getDmiModelPlugin(),
+ updatedCmHandles);
+ }
+
+ private static void handleJsonProcessingException(final DmiPluginRegistration dmiPluginRegistration,
+ final JsonProcessingException e) {
+ final String message = "Parsing error occurred while processing DMI Plugin Registration"
+ + dmiPluginRegistration;
+ log.error(message);
+ throw new DataValidationException(message, e.getMessage(), e);
+ }
+
+ private void registerAndSyncNewCmHandles(final PersistenceCmHandlesList persistenceCmHandlesList) {
+ final String cmHandleJsonData = jsonObjectMapper.asJsonString(persistenceCmHandlesList);
+ cpsDataService.saveListElements(NCMP_DATASPACE_NAME, NCMP_DMI_REGISTRY_ANCHOR, "/dmi-registry",
+ cmHandleJsonData, NO_TIMESTAMP);
+
+ for (final PersistenceCmHandle persistenceCmHandle : persistenceCmHandlesList.getPersistenceCmHandles()) {
+ syncModulesAndCreateAnchor(persistenceCmHandle);