diff options
author | Niranjana <niranjana.y60@wipro.com> | 2022-03-10 11:52:19 +0000 |
---|---|---|
committer | Niranjana <niranjana.y60@wipro.com> | 2022-03-14 13:52:55 +0000 |
commit | 26d2e7029f32260246e0bfc21dde0b17006b28bd (patch) | |
tree | 87b93d507a5d8d13c91e45444b77989b8b910a2e | |
parent | a9c4c58fdb558ddb4ef11581c001f44b3954ab4d (diff) |
Remove extra brackets in the result of output transformation
Issue-ID: CPS-920
Signed-off-by: Niranjana <niranjana.y60@wipro.com>
Change-Id: I130f80c687bb2a9ccdf0ed45c387d7cfc167face
4 files changed, 87 insertions, 42 deletions
diff --git a/cps-tbdmt-dependencies/pom.xml b/cps-tbdmt-dependencies/pom.xml index 3aa4b05..d9fc6b6 100644 --- a/cps-tbdmt-dependencies/pom.xml +++ b/cps-tbdmt-dependencies/pom.xml @@ -71,44 +71,6 @@ <scope>import</scope> </dependency> <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-jetty</artifactId> - <version>2.5.5</version> - <exclusions> - <exclusion> - <groupId>org.eclipse.jetty</groupId> - <artifactId>jetty-io</artifactId> - </exclusion> - <exclusion> - <groupId>org.eclipse.jetty</groupId> - <artifactId>jetty-servlets</artifactId> - </exclusion> - <exclusion> - <groupId>org.eclipse.jetty</groupId> - <artifactId>jetty-http</artifactId> - </exclusion> - <exclusion> - <groupId>org.glassfish</groupId> - <artifactId>jakarta.el</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.eclipse.jetty</groupId> - <artifactId>jetty-io</artifactId> - <version>11.0.7</version> - </dependency> - <dependency> - <groupId>org.eclipse.jetty</groupId> - <artifactId>jetty-servlets</artifactId> - <version>11.0.7</version> - </dependency> - <dependency> - <groupId>org.eclipse.jetty</groupId> - <artifactId>jetty-http</artifactId> - <version>11.0.7</version> - </dependency> - <dependency> <groupId>org.bitbucket.dunglv90</groupId> <artifactId>dp-utility</artifactId> <version>1.0.5</version> diff --git a/cps-tbdmt-rest/pom.xml b/cps-tbdmt-rest/pom.xml index f1e6cb8..2ff830b 100644 --- a/cps-tbdmt-rest/pom.xml +++ b/cps-tbdmt-rest/pom.xml @@ -28,6 +28,11 @@ <modelVersion>4.0.0</modelVersion> <artifactId>cps-tbdmt-rest</artifactId> + + <properties> + <jetty.version>11.0.7</jetty.version> + </properties> + <dependencies> <dependency> <groupId>${project.groupId}</groupId> @@ -47,18 +52,39 @@ <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jetty</artifactId> <version>2.5.5</version> + <exclusions> + <exclusion> + <groupId>org.eclipse.jetty</groupId> + <artifactId>jetty-io</artifactId> + </exclusion> + <exclusion> + <groupId>org.eclipse.jetty</groupId> + <artifactId>jetty-servlets</artifactId> + </exclusion> + <exclusion> + <groupId>org.eclipse.jetty</groupId> + <artifactId>jetty-http</artifactId> + </exclusion> + <exclusion> + <groupId>org.glassfish</groupId> + <artifactId>jakarta.el</artifactId> + </exclusion> + </exclusions> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-io</artifactId> + <version>${jetty.version}</version> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-servlets</artifactId> + <version>${jetty.version}</version> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-http</artifactId> + <version>${jetty.version}</version> </dependency> <dependency> <groupId>junit</groupId> 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 5b3bc60..1c0f285 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 @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP * ================================================================================ - * Copyright (C) 2021 Wipro Limited. + * Copyright (C) 2021-2022 Wipro Limited. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -150,7 +150,7 @@ public class ExecutionBusinessLogic { return result; } else { final List<JsonElement> json = transform(template, result); - return new Gson().toJson(json); + return removeExtraBracketsIfAny(json, result); } } } catch (final CpsClientException e) { @@ -209,6 +209,30 @@ public class ExecutionBusinessLogic { } + private static String removeExtraBracketsIfAny(final List<JsonElement> jsonElementList, final String result) { + + final Gson gson = new Gson(); + final List<JsonElement> updatedResult = new ArrayList<>(); + if (jsonElementList.size() == 1) { + if (gson.fromJson(result, JsonElement.class).isJsonArray()) { + return gson.toJson(jsonElementList); + } + return gson.toJson(jsonElementList.get(0)); + } + if (jsonElementList.size() > 1) { + jsonElementList.forEach(jsonElement -> { + if (jsonElement.isJsonArray() && jsonElement.getAsJsonArray().size() == 1) { + updatedResult.add(jsonElement.getAsJsonArray().get(0)); + } else { + updatedResult.add(jsonElement); + } + }); + return gson.toJson(updatedResult); + } + return gson.toJson(jsonElementList); + + } + private String generateXpath(final String xpathTemplate, final Map<String, String> templateParameters) { return new Jinjava().render(xpathTemplate, templateParameters); } diff --git a/cps-tbdmt-service/src/test/java/org/onap/cps/tbdmt/service/ExecutionBusinessLogicTest.java b/cps-tbdmt-service/src/test/java/org/onap/cps/tbdmt/service/ExecutionBusinessLogicTest.java index 56c55c0..9cee472 100644 --- a/cps-tbdmt-service/src/test/java/org/onap/cps/tbdmt/service/ExecutionBusinessLogicTest.java +++ b/cps-tbdmt-service/src/test/java/org/onap/cps/tbdmt/service/ExecutionBusinessLogicTest.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP * ================================================================================ - * Copyright (C) 2021 Wipro Limited. + * Copyright (C) 2021-2022 Wipro Limited. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -196,7 +196,7 @@ public class ExecutionBusinessLogicTest { new Template("get-tree", "ran-network", "/test-tree", "get", true, null, transformParam1); final Template template2 = new Template("get-branch", "ran-network", "/test-tree/branch[@name='{{name}}']/nest", "get", true, "get-tree", transformParam2); - final String transformedResult = "[[\"Big\"], [\"Small\"]]"; + final String transformedResult = "[\"Big\", \"Small\"]"; try { final String result1 = readFromFile("sample_multiple_query_data_1.json"); @@ -254,6 +254,39 @@ public class ExecutionBusinessLogicTest { executionBusinessLogic.executeTemplate("ran-net", "deleteNbr", request); } + @Test + public void testRemoveExtraBracketsIfAny() { + final Map<String, String> input = new HashMap<>(); + input.put("idNearRTRIC", "11"); + final String transformParam1 = "branch, nest, birds"; + final Template template1 = + new Template("get-tree", "ran-network", "/test-tree", "get", true, null, transformParam1); + final String transformParam2 = "GNBDUFunction, NRCellDU, attributes, nRSectorCarrierRef"; + final Template template2 = new Template("get-nrcelldu-data", "ran-network", "/NearRTRIC/[@idNearRTRIC='11']", + "get", true, null, transformParam2); + final String transformedResult1 = "[[\"Owl\",\"Raven\",\"Crow\"],[\"Robin\",\"Sparrow\",\"Finch\"]]"; + final String transformedResult2 = "[\"OU\\u003dSales\",\"OU\\u003dSales\"]"; + + try { + final String result1 = readFromFile("sample_multiple_query_data_1.json"); + Mockito.when(cpsRestClient.fetchNode("ran-network", "/test-tree", "get", true)).thenReturn(result1); + Mockito.when(templateRepository.findById(ArgumentMatchers.any())).thenReturn(Optional.of(template1)); + final String result2 = readFromFile("sample_transform_query_data.json"); + Mockito.when(cpsRestClient.fetchNode("ran-network", "/NearRTRIC/[@idNearRTRIC='11']", "get", true)) + .thenReturn(result2); + final TemplateKey key = new TemplateKey("get-nrcelldu-data"); + Mockito.when(templateRepository.findById(key)).thenReturn(Optional.of(template2)); + assertEquals(transformedResult1, + executionBusinessLogic.executeTemplate("ran-network", "get-tree", request)); + assertEquals(transformedResult2, + executionBusinessLogic.executeTemplate("ran-network", "get-nrcelldu-data", request)); + } catch (final CpsClientException e) { + e.printStackTrace(); + } catch (final Exception e) { + e.printStackTrace(); + } + } + /** * Reads a file from classpath. * |