- @Override
- public void updateResourceDataPassThroughRunningForCmHandle(final String cmHandle, final String resourceIdentifier,
- final String requestBody, final String contentType) {
- final DataNode cmHandleDataNode = fetchDataNodeFromDmiRegistryForCmHandle(cmHandle);
- final String dmiServiceName = String.valueOf(cmHandleDataNode.getLeaves().get(NCMP_DMI_SERVICE_NAME));
- final Collection<DataNode> cmHandlePropertiesAsDataNodes = cmHandleDataNode.getChildDataNodes();
- final Map<String, String> cmHandlePropertiesAsMap = getCmHandlePropertiesAsMap(cmHandlePropertiesAsDataNodes);
- final GenericRequestBody dmiRequestBodyObject = GenericRequestBody.builder()
- .operation(OperationEnum.UPDATE)
- .dataType(contentType)
- .data(requestBody)
- .cmHandleProperties(cmHandlePropertiesAsMap)
- .build();
- final String dmiRequestBody = prepareOperationBody(dmiRequestBodyObject);
- final ResponseEntity<String> responseEntity = dmiOperations
- .updateResourceDataPassThroughRunningFromDmi(dmiServiceName,
- cmHandle,
- resourceIdentifier,
- dmiRequestBody);
- handleResponseFromDmi(responseEntity, "Unable to replace resource data.");
- }
-
- private DataNode fetchDataNodeFromDmiRegistryForCmHandle(final String cmHandle) {
- final String xpathForDmiRegistryToFetchCmHandle = "/dmi-registry/cm-handles[@id='" + cmHandle + "']";
- return cpsDataService.getDataNode(NCMP_DATASPACE_NAME,
- NCMP_DMI_REGISTRY_ANCHOR,
- xpathForDmiRegistryToFetchCmHandle,
- FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS);
- }
-
- private String prepareOperationBody(final GenericRequestBody requestBodyObject) {
- try {
- return objectMapper.writeValueAsString(requestBodyObject);
- } catch (final JsonProcessingException e) {
- log.error("Parsing error occurred while converting Object to JSON.");
- throw new NcmpException("Parsing error occurred while converting given object to JSON.",
- e.getMessage());
- }
- }
-
- private static Map<String, String> getCmHandlePropertiesAsMap(
- final Collection<DataNode> cmHandlePropertiesAsDataNode) {
- if (cmHandlePropertiesAsDataNode.isEmpty()) {
- return Collections.emptyMap();
- }
- final Map<String, String> cmHandlePropertiesAsMap = new LinkedHashMap<>();
- for (final DataNode dataNode: cmHandlePropertiesAsDataNode) {
- cmHandlePropertiesAsMap.put(String.valueOf(dataNode.getLeaves().get("name")),
- String.valueOf(dataNode.getLeaves().get("value")));
- }
- return cmHandlePropertiesAsMap;
- }
-
- private static Map<String, String> getCmHandlePropertiesAsMap(
- final List<AdditionalProperty> cmHandlePropertiesAsList) {
- if (cmHandlePropertiesAsList == null || cmHandlePropertiesAsList.isEmpty()) {
- return Collections.emptyMap();
- }
- final Map<String, String> cmHandlePropertiesAsMap = new LinkedHashMap<>();
- for (final AdditionalProperty additionalProperty: cmHandlePropertiesAsList) {
- cmHandlePropertiesAsMap.put(additionalProperty.getName(),
- additionalProperty.getValue());
- }
- return cmHandlePropertiesAsMap;