diff options
Diffstat (limited to 'cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImpl.java')
-rwxr-xr-x | cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImpl.java | 261 |
1 files changed, 147 insertions, 114 deletions
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 b5a591401..11477abe0 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 @@ -53,7 +53,6 @@ import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; - @Slf4j @Service public class NetworkCmProxyDataServiceImpl implements NetworkCmProxyDataService { @@ -66,6 +65,8 @@ public class NetworkCmProxyDataServiceImpl implements NetworkCmProxyDataService private static final OffsetDateTime NO_TIMESTAMP = null; + private static final String NCMP_DMI_SERVICE_NAME = "dmi-service-name"; + private CpsDataService cpsDataService; private ObjectMapper objectMapper; @@ -76,14 +77,13 @@ public class NetworkCmProxyDataServiceImpl implements NetworkCmProxyDataService /** * Constructor Injection for Dependencies. - * - * @param dmiOperations dmi operation - * @param cpsDataService Data Service Interface + * @param dmiOperations DMI operation + * @param cpsDataService Data Service Interface * @param cpsQueryService Query Service Interface - * @param objectMapper Object Mapper + * @param objectMapper Object Mapper */ public NetworkCmProxyDataServiceImpl(final DmiOperations dmiOperations, final CpsDataService cpsDataService, - final CpsQueryService cpsQueryService, final ObjectMapper objectMapper) { + final CpsQueryService cpsQueryService, final ObjectMapper objectMapper) { this.dmiOperations = dmiOperations; this.cpsDataService = cpsDataService; this.cpsQueryService = cpsQueryService; @@ -96,13 +96,13 @@ public class NetworkCmProxyDataServiceImpl implements NetworkCmProxyDataService @Override public DataNode getDataNode(final String cmHandle, final String xpath, - final FetchDescendantsOption fetchDescendantsOption) { + final FetchDescendantsOption fetchDescendantsOption) { return cpsDataService.getDataNode(getDataspaceName(), cmHandle, xpath, fetchDescendantsOption); } @Override public Collection<DataNode> queryDataNodes(final String cmHandle, final String cpsPath, - final FetchDescendantsOption fetchDescendantsOption) { + final FetchDescendantsOption fetchDescendantsOption) { return cpsQueryService.queryDataNodes(getDataspaceName(), cmHandle, cpsPath, fetchDescendantsOption); } @@ -143,149 +143,132 @@ public class NetworkCmProxyDataServiceImpl implements NetworkCmProxyDataService } } - private void parseAndCreateCmHandlesInDmiRegistration(final DmiPluginRegistration dmiPluginRegistration) { - try { - final List<PersistenceCmHandle> createdPersistenceCmHandles = - new LinkedList<>(); - for (final CmHandle cmHandle : dmiPluginRegistration.getCreatedCmHandles()) { - createdPersistenceCmHandles.add(toPersistenceCmHandle(dmiPluginRegistration, cmHandle)); - } - final PersistenceCmHandlesList persistenceCmHandlesList = new PersistenceCmHandlesList(); - persistenceCmHandlesList.setCmHandles(createdPersistenceCmHandles); - final String cmHandleJsonData = objectMapper.writeValueAsString(persistenceCmHandlesList); - cpsDataService.saveListNodeData(NCMP_DATASPACE_NAME, NCMP_DMI_REGISTRY_ANCHOR, "/dmi-registry", - cmHandleJsonData, NO_TIMESTAMP); - } catch (final JsonProcessingException e) { - log.error("Parsing error occurred while converting Object to JSON for Dmi Registry."); - throw new DataValidationException( - "Parsing error occurred while processing DMI Plugin Registration" + dmiPluginRegistration, e - .getMessage(), e); - } - } - - private void parseAndUpdateCmHandlesInDmiRegistration(final DmiPluginRegistration dmiPluginRegistration) { - try { - final List<PersistenceCmHandle> updatedPersistenceCmHandles = - new LinkedList<>(); - for (final CmHandle cmHandle : dmiPluginRegistration.getUpdatedCmHandles()) { - updatedPersistenceCmHandles.add(toPersistenceCmHandle(dmiPluginRegistration, cmHandle)); - } - final PersistenceCmHandlesList persistenceCmHandlesList = new PersistenceCmHandlesList(); - persistenceCmHandlesList.setCmHandles(updatedPersistenceCmHandles); - final String cmHandlesJsonData = objectMapper.writeValueAsString(persistenceCmHandlesList); - cpsDataService.updateNodeLeavesAndExistingDescendantLeaves(NCMP_DATASPACE_NAME, NCMP_DMI_REGISTRY_ANCHOR, - "/dmi-registry", cmHandlesJsonData, NO_TIMESTAMP); - } catch (final JsonProcessingException e) { - log.error("Parsing error occurred while converting Object to JSON Dmi Registry."); - throw new DataValidationException( - "Parsing error occurred while processing DMI Plugin Registration" + dmiPluginRegistration, e - .getMessage(), e); - } - } - - private void parseAndRemoveCmHandlesInDmiRegistration(final DmiPluginRegistration dmiPluginRegistration) { - for (final String cmHandle: dmiPluginRegistration.getRemovedCmHandles()) { - try { - cpsDataService.deleteListNodeData(NCMP_DATASPACE_NAME, NCMP_DMI_REGISTRY_ANCHOR, - "/dmi-registry/cm-handles[@id='" + cmHandle + "']", NO_TIMESTAMP); - } catch (final DataNodeNotFoundException e) { - log.warn("Datanode {} not deleted message {}", cmHandle, e.getMessage()); - } - } - } - @Override public Object getResourceDataOperationalForCmHandle(final @NotNull String cmHandle, - final @NotNull String resourceIdentifier, - final String acceptParam, - final String fieldsQueryParam, - final Integer depthQueryParam) { - - final var dataNode = fetchDataNodeFromDmiRegistryForCmHandle(cmHandle); - final var dmiServiceName = String.valueOf(dataNode.getLeaves().get("dmi-service-name")); - final Collection<DataNode> additionalPropsList = dataNode.getChildDataNodes(); - final var jsonBody = prepareOperationBody(GenericRequestBody.OperationEnum.READ, additionalPropsList); - final ResponseEntity<Object> response = dmiOperations.getResouceDataOperationalFromDmi(dmiServiceName, - cmHandle, - resourceIdentifier, - fieldsQueryParam, - depthQueryParam, - acceptParam, - jsonBody); + final @NotNull String resourceIdentifier, + final String acceptParam, + final String fieldsQueryParam, + final Integer depthQueryParam) { + + final var cmHandleDataNode = fetchDataNodeFromDmiRegistryForCmHandle(cmHandle); + final var dmiServiceName = String.valueOf(cmHandleDataNode.getLeaves().get(NCMP_DMI_SERVICE_NAME)); + final String dmiRequestBody = getGenericRequestBody(cmHandleDataNode); + final ResponseEntity<Object> response = dmiOperations.getResourceDataOperationalFromDmi(dmiServiceName, + cmHandle, + resourceIdentifier, + fieldsQueryParam, + depthQueryParam, + acceptParam, + dmiRequestBody); return handleResponse(response); } @Override public Object getResourceDataPassThroughRunningForCmHandle(final @NotNull String cmHandle, - final @NotNull String resourceIdentifier, - final String accept, - final String fields, - final Integer depth) { + final @NotNull String resourceIdentifier, + final String acceptParam, + 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); + final var dmiServiceName = String.valueOf(cmHandleDataNode.getLeaves().get(NCMP_DMI_SERVICE_NAME)); + final String dmiRequestBody = getGenericRequestBody(cmHandleDataNode); + final ResponseEntity<Object> response = dmiOperations.getResourceDataPassThroughRunningFromDmi(dmiServiceName, + cmHandle, + resourceIdentifier, + fields, + depth, + acceptParam, + dmiRequestBody); return handleResponse(response); } + @Override + public void createResourceDataPassThroughRunningForCmHandle(final @NotNull String cmHandle, + final @NotNull String resourceIdentifier, + final @NotNull Object requestBody, + final String contentType) { + final var cmHandleDataNode = fetchDataNodeFromDmiRegistryForCmHandle(cmHandle); + final var dmiServiceName = String.valueOf(cmHandleDataNode.getLeaves().get(NCMP_DMI_SERVICE_NAME)); + final Collection<DataNode> cmHandlePropertiesList = cmHandleDataNode.getChildDataNodes(); + final Map<String, String> cmHandlePropertiesMap = getCmHandlePropertiesAsMap(cmHandlePropertiesList); + final var dmiRequestBodyObject = GenericRequestBody.builder() + .operation(GenericRequestBody.OperationEnum.CREATE) + .dataType(contentType) + .data(requestBody) + .cmHandleProperties(cmHandlePropertiesMap) + .build(); + final var dmiRequestBody = prepareOperationBody(dmiRequestBodyObject); + final ResponseEntity<Void> responseEntity = dmiOperations + .createResourceDataPassThroughRunningFromDmi(dmiServiceName, + cmHandle, + resourceIdentifier, + dmiRequestBody); + handleResponseForPost(responseEntity); + } + 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); + 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); + private String prepareOperationBody(final GenericRequestBody requestBodyObject) { try { - final var requestJson = objectMapper.writeValueAsString(requestBody); - return requestJson; + return objectMapper.writeValueAsString(requestBodyObject); } 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()); + je.getMessage()); } } - private Map<String, String> getAdditionalPropertiesMap(final Collection<DataNode> additionalPropertyList) { - if (additionalPropertyList == null || additionalPropertyList.size() == 0) { + private Map<String, String> getCmHandlePropertiesAsMap(final Collection<DataNode> cmHandlePropertiesList) { + if (cmHandlePropertiesList == null || cmHandlePropertiesList.size() == 0) { return null; } - final Map<String, String> additionalPropertyMap = new LinkedHashMap<>(); - for (final var node : additionalPropertyList) { - additionalPropertyMap.put(String.valueOf(node.getLeaves().get("name")), - String.valueOf(node.getLeaves().get("value"))); + final Map<String, String> cmHandlePropertiesMap = new LinkedHashMap<>(); + for (final var node: cmHandlePropertiesList) { + cmHandlePropertiesMap.put(String.valueOf(node.getLeaves().get("name")), + String.valueOf(node.getLeaves().get("value"))); } - return additionalPropertyMap; + return cmHandlePropertiesMap; } - private Object handleResponse(final ResponseEntity<Object> responseEntity) { + private Object handleResponse(final @NotNull ResponseEntity<Object> responseEntity) { if (responseEntity.getStatusCode() == HttpStatus.OK) { return responseEntity.getBody(); } else { throw new NcmpException("Not able to get resource data.", - "DMI status code: " + responseEntity.getStatusCodeValue() - + ", DMI response body: " + responseEntity.getBody()); + "DMI status code: " + responseEntity.getStatusCodeValue() + + ", DMI response body: " + responseEntity.getBody()); + } + } + + private void handleResponseForPost(final @NotNull ResponseEntity<Void> responseEntity) { + if (responseEntity.getStatusCode() != HttpStatus.CREATED) { + throw new NcmpException("Not able to create resource data.", + "DMI status code: " + responseEntity.getStatusCodeValue() + + ", DMI response body: " + responseEntity.getBody()); } } - private PersistenceCmHandle toPersistenceCmHandle(final DmiPluginRegistration dmiPluginRegistration, - final CmHandle cmHandle) { + private String getGenericRequestBody(final DataNode cmHandleDataNode) { + final Collection<DataNode> cmHandlePropertiesList = cmHandleDataNode.getChildDataNodes(); + final Map<String, String> cmHandlePropertiesMap = getCmHandlePropertiesAsMap(cmHandlePropertiesList); + final var requetBodyObject = GenericRequestBody.builder() + .operation(GenericRequestBody.OperationEnum.READ) + .cmHandleProperties(cmHandlePropertiesMap) + .build(); + return prepareOperationBody(requetBodyObject); + } + + private PersistenceCmHandle toPersistenceCmHandle(final String dmiPluginService, + final CmHandle cmHandle) { final PersistenceCmHandle persistenceCmHandle = new PersistenceCmHandle(); - persistenceCmHandle.setDmiServiceName(dmiPluginRegistration.getDmiPlugin()); + persistenceCmHandle.setDmiServiceName(dmiPluginService); persistenceCmHandle.setId(cmHandle.getCmHandleID()); if (cmHandle.getCmHandleProperties() == null) { persistenceCmHandle.setAdditionalProperties(Collections.EMPTY_MAP); @@ -295,4 +278,54 @@ public class NetworkCmProxyDataServiceImpl implements NetworkCmProxyDataService return persistenceCmHandle; } + private void parseAndCreateCmHandlesInDmiRegistration(final DmiPluginRegistration dmiPluginRegistration) { + try { + final List<PersistenceCmHandle> createdPersistenceCmHandles = + new LinkedList<>(); + for (final CmHandle cmHandle: dmiPluginRegistration.getCreatedCmHandles()) { + createdPersistenceCmHandles.add(toPersistenceCmHandle(dmiPluginRegistration.getDmiPlugin(), cmHandle)); + } + final PersistenceCmHandlesList persistenceCmHandlesList = new PersistenceCmHandlesList(); + persistenceCmHandlesList.setCmHandles(createdPersistenceCmHandles); + final String cmHandleJsonData = objectMapper.writeValueAsString(persistenceCmHandlesList); + cpsDataService.saveListNodeData(NCMP_DATASPACE_NAME, NCMP_DMI_REGISTRY_ANCHOR, "/dmi-registry", + cmHandleJsonData, NO_TIMESTAMP); + } catch (final JsonProcessingException e) { + log.error("Parsing error occurred while converting Object to JSON for DMI Registry."); + throw new DataValidationException( + "Parsing error occurred while processing DMI Plugin Registration" + dmiPluginRegistration, e + .getMessage(), e); + } + } + + private void parseAndUpdateCmHandlesInDmiRegistration(final DmiPluginRegistration dmiPluginRegistration) { + try { + final List<PersistenceCmHandle> updatedPersistenceCmHandles = + new LinkedList<>(); + for (final CmHandle cmHandle: dmiPluginRegistration.getUpdatedCmHandles()) { + updatedPersistenceCmHandles.add(toPersistenceCmHandle(dmiPluginRegistration.getDmiPlugin(), cmHandle)); + } + final PersistenceCmHandlesList persistenceCmHandlesList = new PersistenceCmHandlesList(); + persistenceCmHandlesList.setCmHandles(updatedPersistenceCmHandles); + final String cmHandlesJsonData = objectMapper.writeValueAsString(persistenceCmHandlesList); + cpsDataService.updateNodeLeavesAndExistingDescendantLeaves(NCMP_DATASPACE_NAME, NCMP_DMI_REGISTRY_ANCHOR, + "/dmi-registry", cmHandlesJsonData, NO_TIMESTAMP); + } catch (final JsonProcessingException e) { + log.error("Parsing error occurred while converting Object to JSON DMI Registry."); + throw new DataValidationException( + "Parsing error occurred while processing DMI Plugin Registration" + dmiPluginRegistration, e + .getMessage(), e); + } + } + + private void parseAndRemoveCmHandlesInDmiRegistration(final DmiPluginRegistration dmiPluginRegistration) { + for (final String cmHandle: dmiPluginRegistration.getRemovedCmHandles()) { + try { + cpsDataService.deleteListNodeData(NCMP_DATASPACE_NAME, NCMP_DMI_REGISTRY_ANCHOR, + "/dmi-registry/cm-handles[@id='" + cmHandle + "']", NO_TIMESTAMP); + } catch (final DataNodeNotFoundException e) { + log.warn("Datanode {} not deleted message {}", cmHandle, e.getMessage()); + } + } + } } |