From: Niranjana Date: Thu, 12 Aug 2021 04:16:00 +0000 (+0000) Subject: Support edit query X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;h=433ba106cf99762039b7bd6a430eaf24b45d2271;p=cps%2Fcps-tbdmt.git Support edit query Issue-ID: CPS-511 Signed-off-by: Niranjana Change-Id: Icc22fb6143c01dcc388339ffa57818f41ed50cfd --- diff --git a/cps-tbdmt-rest/src/test/java/org/onap/cps/tbdmt/rest/ExecutionControllerTest.java b/cps-tbdmt-rest/src/test/java/org/onap/cps/tbdmt/rest/ExecutionControllerTest.java index 23165a6..0520ad5 100644 --- a/cps-tbdmt-rest/src/test/java/org/onap/cps/tbdmt/rest/ExecutionControllerTest.java +++ b/cps-tbdmt-rest/src/test/java/org/onap/cps/tbdmt/rest/ExecutionControllerTest.java @@ -68,8 +68,9 @@ public class ExecutionControllerTest { public void setup() throws Exception { executePath = "/execute/ran-network/getNbr"; final Map inputParameters = new HashMap<>(); + final Map payload = new HashMap<>(); inputParameters.put("coverageArea", "Zone 1"); - final ExecutionRequest executionRequest = new ExecutionRequest(inputParameters); + final ExecutionRequest executionRequest = new ExecutionRequest(inputParameters, payload); final ObjectMapper objectMapper = new ObjectMapper(); executionRequestJson = objectMapper.writeValueAsString(executionRequest); } diff --git a/cps-tbdmt-service/pom.xml b/cps-tbdmt-service/pom.xml index d9181c5..f136023 100644 --- a/cps-tbdmt-service/pom.xml +++ b/cps-tbdmt-service/pom.xml @@ -81,6 +81,10 @@ com.google.code.gson gson + + org.apache.httpcomponents + httpclient + com.openpojo @@ -98,4 +102,4 @@ test - \ No newline at end of file + diff --git a/cps-tbdmt-service/src/main/java/org/onap/cps/tbdmt/client/CpsRestClient.java b/cps-tbdmt-service/src/main/java/org/onap/cps/tbdmt/client/CpsRestClient.java index 0d356d8..e1301fb 100644 --- a/cps-tbdmt-service/src/main/java/org/onap/cps/tbdmt/client/CpsRestClient.java +++ b/cps-tbdmt-service/src/main/java/org/onap/cps/tbdmt/client/CpsRestClient.java @@ -21,6 +21,7 @@ package org.onap.cps.tbdmt.client; import java.util.Arrays; +import java.util.Map; import org.onap.cps.tbdmt.exception.CpsClientException; import org.onap.cps.tbdmt.model.AppConfiguration; import org.onap.cps.tbdmt.model.CpsConfiguration; @@ -30,6 +31,7 @@ import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; +import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; import org.springframework.stereotype.Component; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; @@ -43,6 +45,8 @@ public class CpsRestClient { private static final String QUERY_API_PATH = "/anchors/{anchor}/nodes/query"; + private static final String POST_API_PATH = "/anchors/{anchor}/nodes"; + @Autowired private RestTemplate restTemplate; @@ -91,6 +95,49 @@ public class CpsRestClient { } } + /** + * Post data to CPS using xpath. + * + * @param anchor anchor + * @param xpath xpath query + * @param requestType http request type + * @param payload request body + * @return result Response string from CPS + */ + public String addData(final String anchor, final String xpath, final String requestType, + final Map payload) throws CpsClientException { + + final MultiValueMap queryParams = new LinkedMultiValueMap<>(); + queryParams.add("xpath", xpath); + final CpsConfiguration cpsConfiguration = "cpsCore".equals(appConfiguration.getCpsClient()) + ? appConfiguration.getCpsCoreConfiguration() : appConfiguration.getNcmpConfiguration(); + + final HttpHeaders headers = new HttpHeaders(); + headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON)); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setBasicAuth(cpsConfiguration.getUsername(), cpsConfiguration.getPassword()); + final HttpEntity entity = new HttpEntity<>(new com.google.gson.Gson().toJson(payload), headers); + + String uri = buildCpsUrl(cpsConfiguration.getUrl(), POST_API_PATH, anchor, queryParams); + try { + if (requestType.equalsIgnoreCase("post")) { + uri = buildCpsUrl(cpsConfiguration.getUrl(), POST_API_PATH, anchor, new LinkedMultiValueMap<>()); + return restTemplate.postForEntity(uri, entity, String.class).getBody(); + } else if (requestType.equalsIgnoreCase("patch")) { + final HttpComponentsClientHttpRequestFactory requestFactory + = new HttpComponentsClientHttpRequestFactory(); + requestFactory.setConnectTimeout(10000); + requestFactory.setReadTimeout(10000); + restTemplate.setRequestFactory(requestFactory); + return restTemplate.patchForObject(uri, entity, String.class); + } else { + return restTemplate.exchange(uri, HttpMethod.PUT, entity, String.class).getBody(); + } + } catch (final Exception e) { + throw new CpsClientException(e.getLocalizedMessage()); + } + } + private String buildCpsUrl(final String baseUrl, final String path, final String anchor, final MultiValueMap queryParams) { diff --git a/cps-tbdmt-service/src/main/java/org/onap/cps/tbdmt/model/ExecutionRequest.java b/cps-tbdmt-service/src/main/java/org/onap/cps/tbdmt/model/ExecutionRequest.java index 322c6d4..8b6db17 100644 --- a/cps-tbdmt-service/src/main/java/org/onap/cps/tbdmt/model/ExecutionRequest.java +++ b/cps-tbdmt-service/src/main/java/org/onap/cps/tbdmt/model/ExecutionRequest.java @@ -33,4 +33,6 @@ import lombok.Setter; public class ExecutionRequest { private Map inputParameters; + + private Map payload; } diff --git a/cps-tbdmt-service/src/main/java/org/onap/cps/tbdmt/service/ExecutionBusinessLogic.java b/cps-tbdmt-service/src/main/java/org/onap/cps/tbdmt/service/ExecutionBusinessLogic.java index 05aed38..6032b05 100644 --- a/cps-tbdmt-service/src/main/java/org/onap/cps/tbdmt/service/ExecutionBusinessLogic.java +++ b/cps-tbdmt-service/src/main/java/org/onap/cps/tbdmt/service/ExecutionBusinessLogic.java @@ -72,17 +72,18 @@ public class ExecutionBusinessLogic { final Optional