/*
* ============LICENSE_START=======================================================
* Copyright (C) 2021 Pantheon.tech
- * Modifications (C) 2021 Nordix Foundation
+ * Modifications (C) 2021-2022 Nordix Foundation
* Modification Copyright (C) 2021 highstreet technologies GmbH
* Modifications (C) 2021 Bell Canada
* ================================================================================
package org.onap.cps.ncmp.rest.controller;
import static org.onap.cps.ncmp.api.impl.operations.DmiRequestBody.OperationEnum.CREATE;
+import static org.onap.cps.ncmp.api.impl.operations.DmiRequestBody.OperationEnum.DELETE;
+import static org.onap.cps.ncmp.api.impl.operations.DmiRequestBody.OperationEnum.PATCH;
import static org.onap.cps.ncmp.api.impl.operations.DmiRequestBody.OperationEnum.UPDATE;
import com.google.gson.Gson;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import lombok.extern.slf4j.Slf4j;
+import org.modelmapper.ModelMapper;
import org.onap.cps.ncmp.api.NetworkCmProxyDataService;
import org.onap.cps.ncmp.rest.api.NetworkCmProxyApi;
import org.onap.cps.ncmp.rest.model.CmHandleProperties;
import org.onap.cps.ncmp.rest.model.Conditions;
import org.onap.cps.ncmp.rest.model.ModuleNameAsJsonObject;
import org.onap.cps.ncmp.rest.model.ModuleNamesAsJsonArray;
-import org.onap.cps.spi.FetchDescendantsOption;
-import org.onap.cps.spi.model.DataNode;
-import org.onap.cps.spi.model.ModuleReference;
-import org.onap.cps.utils.DataMapUtils;
+import org.onap.cps.ncmp.rest.model.ModuleReference;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
public class NetworkCmProxyController implements NetworkCmProxyApi {
private static final Gson GSON = new GsonBuilder().create();
+ private static final String NO_BODY = null;
+ private final ModelMapper modelMapper = new ModelMapper();
private final NetworkCmProxyDataService networkCmProxyDataService;
/**
this.networkCmProxyDataService = networkCmProxyDataService;
}
- /**
- * Create Node.
- * @deprecated This Method is no longer used as part of NCMP.
- */
- @Override
- @Deprecated(forRemoval = false)
- public ResponseEntity<Void> createNode(final String cmHandle, @Valid final String jsonData,
- @Valid final String parentNodeXpath) {
- networkCmProxyDataService.createDataNode(cmHandle, parentNodeXpath, jsonData);
- return new ResponseEntity<>(HttpStatus.CREATED);
- }
-
- /**
- * Add List-node Child Element.
- * @deprecated This Method is no longer used as part of NCMP.
- */
- @Override
- @Deprecated(forRemoval = false)
- public ResponseEntity<Void> addListNodeElements(@NotNull @Valid final String parentNodeXpath,
- final String cmHandle, @Valid final String jsonData) {
- networkCmProxyDataService.addListNodeElements(cmHandle, parentNodeXpath, jsonData);
- return new ResponseEntity<>(HttpStatus.CREATED);
- }
-
- /**
- * Get Node By CM Handle and X-Path.
- * @deprecated This Method is no longer used as part of NCMP.
- */
- @Override
- @Deprecated(forRemoval = false)
- public ResponseEntity<Object> getNodeByCmHandleAndXpath(final String cmHandle, @Valid final String xpath,
- @Valid final Boolean includeDescendants) {
- final FetchDescendantsOption fetchDescendantsOption = Boolean.TRUE.equals(includeDescendants)
- ? FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS : FetchDescendantsOption.OMIT_DESCENDANTS;
- final var dataNode = networkCmProxyDataService.getDataNode(cmHandle, xpath, fetchDescendantsOption);
- return new ResponseEntity<>(DataMapUtils.toDataMap(dataNode), HttpStatus.OK);
- }
-
- /**
- * Query Data Nodes.
- * @deprecated This Method is no longer used as part of NCMP.
- */
- @Override
- @Deprecated(forRemoval = false)
- public ResponseEntity<Object> queryNodesByCmHandleAndCpsPath(final String cmHandle, @Valid final String cpsPath,
- @Valid final Boolean includeDescendants) {
- final FetchDescendantsOption fetchDescendantsOption = Boolean.TRUE.equals(includeDescendants)
- ? FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS : FetchDescendantsOption.OMIT_DESCENDANTS;
- final Collection<DataNode> dataNodes =
- networkCmProxyDataService.queryDataNodes(cmHandle, cpsPath, fetchDescendantsOption);
- return new ResponseEntity<>(GSON.toJson(dataNodes), HttpStatus.OK);
- }
-
- /**
- * Replace Node With Descendants.
- * @deprecated This Method is no longer used as part of NCMP.
- */
- @Override
- @Deprecated(forRemoval = false)
- public ResponseEntity<Object> replaceNode(final String cmHandle, @Valid final String jsonData,
- @Valid final String parentNodeXpath) {
- networkCmProxyDataService.replaceNodeTree(cmHandle, parentNodeXpath, jsonData);
- return new ResponseEntity<>(HttpStatus.OK);
- }
-
- /**
- * Update Node Leaves.
- * @deprecated This Method is no longer used as part of NCMP.
- */
- @Override
- @Deprecated(forRemoval = false)
- public ResponseEntity<Object> updateNodeLeaves(final String cmHandle, @Valid final String jsonData,
- @Valid final String parentNodeXpath) {
- networkCmProxyDataService.updateNodeLeaves(cmHandle, parentNodeXpath, jsonData);
- return new ResponseEntity<>(HttpStatus.OK);
- }
-
/**
* Get resource data from operational datastore.
*
return ResponseEntity.ok(responseObject);
}
+ @Override
+ public ResponseEntity<Object> patchResourceDataRunningForCmHandle(final String resourceIdentifier,
+ final String cmHandle,
+ final Object requestBody, final String contentType) {
+ final Object responseObject = networkCmProxyDataService.writeResourceDataPassThroughRunningForCmHandle(cmHandle,
+ resourceIdentifier, PATCH, GSON.toJson(requestBody), contentType);
+ return ResponseEntity.ok(responseObject);
+ }
+
/**
- * Create resource data in datastore pass through running for given cm-handle.
+ * Create resource data in datastore pass-through running for given cm-handle.
*
* @param resourceIdentifier resource identifier
* @param cmHandle cm handle identifier
*/
@Override
public ResponseEntity<Void> createResourceDataRunningForCmHandle(final String resourceIdentifier,
- final String cmHandle,
- final String requestBody,
- final String contentType) {
+ final String cmHandle, final Object requestBody, final String contentType) {
networkCmProxyDataService.writeResourceDataPassThroughRunningForCmHandle(cmHandle,
- resourceIdentifier, CREATE, requestBody, contentType);
+ resourceIdentifier, CREATE, GSON.toJson(requestBody), contentType);
return new ResponseEntity<>(HttpStatus.CREATED);
}
/**
- * Update resource data in datastore pass through running for given cm-handle.
+ * Update resource data in datastore pass-through running for given cm-handle.
*
* @param resourceIdentifier resource identifier
* @param cmHandle cm handle identifier
@Override
public ResponseEntity<Object> updateResourceDataRunningForCmHandle(final String resourceIdentifier,
final String cmHandle,
- final String requestBody,
+ final Object requestBody,
final String contentType) {
networkCmProxyDataService.writeResourceDataPassThroughRunningForCmHandle(cmHandle,
- resourceIdentifier, UPDATE, requestBody, contentType);
+ resourceIdentifier, UPDATE, GSON.toJson(requestBody), contentType);
return new ResponseEntity<>(HttpStatus.OK);
}
+
+ /**
+ * Delete resource data in datastore pass-through running for a given cm-handle.
+ *
+ * @param resourceIdentifier resource identifier
+ * @param cmHandle cm handle identifier
+ * @param contentType content type of the body
+ * @return response entity no content if request is successful
+ */
+ @Override
+ public ResponseEntity<Void> deleteResourceDataRunningForCmHandle(final String cmHandle,
+ final String resourceIdentifier,
+ final String contentType) {
+ networkCmProxyDataService.writeResourceDataPassThroughRunningForCmHandle(cmHandle,
+ resourceIdentifier, DELETE, NO_BODY, contentType);
+ return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+ }
+
/**
* Execute cm handle search.
*
* @param cmHandle the cm handle
* @return module references for cm handle
*/
- @Override
- public ResponseEntity<Object> getModuleReferencesByCmHandle(final String cmHandle) {
- final Collection<ModuleReference>
- moduleReferences = networkCmProxyDataService.getYangResourcesModuleReferences(cmHandle);
- return new ResponseEntity<>(new Gson().toJson(moduleReferences), HttpStatus.OK);
+ public ResponseEntity<List<ModuleReference>> getModuleReferencesByCmHandle(final String cmHandle) {
+ final List<ModuleReference> moduleReferences =
+ networkCmProxyDataService.getYangResourcesModuleReferences(cmHandle).stream()
+ .map(moduleReference -> modelMapper.map(moduleReference, ModuleReference.class))
+ .collect(Collectors.toList());
+ return new ResponseEntity<>(moduleReferences, HttpStatus.OK);
}
private Collection<String> processConditions(final List<ConditionProperties> conditionProperties) {