summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorshashikanth.vh <shashikanth.vh@huawei.com>2018-10-04 10:40:18 +0530
committerShashikanth VH <shashikanth.vh@huawei.com>2018-10-04 05:44:01 +0000
commit87850a15d93c7a1162d30c129e0dc76cd1b66f94 (patch)
tree0b36c249eb31684a3f0338eadbbf3f0b544bc939
parent99931b9cae6e0e02cf54060ac0f1199aad92537a (diff)
Add mandatory empty construct to json template
Restapicallnode remove empty parameter from json template, if template mandates empty parameter to be present then it should not be removed. Change-Id: I075e0858f956eb3aff87d2a7387b55caa3310568 Issue-ID: CCSDK-607 Signed-off-by: shashikanth.vh <shashikanth.vh@huawei.com>
-rw-r--r--restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/RestapiCallNode.java3
-rw-r--r--restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/XmlJsonUtil.java11
-rw-r--r--restapi-call-node/provider/src/test/java/jtest/org/onap/ccsdk/sli/plugins/sshapicall/TestRestapiCallNode.java55
-rw-r--r--restapi-call-node/provider/src/test/java/jtest/org/onap/ccsdk/sli/plugins/sshapicall/TestXmlJsonUtil.java2
-rw-r--r--restapi-call-node/provider/src/test/resources/sdwan-site.json10
-rw-r--r--restapi-call-node/provider/src/test/resources/sdwan-vpn-topology.json23
6 files changed, 99 insertions, 5 deletions
diff --git a/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/RestapiCallNode.java b/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/RestapiCallNode.java
index e5503435b..9a89af6b5 100644
--- a/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/RestapiCallNode.java
+++ b/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/RestapiCallNode.java
@@ -392,6 +392,7 @@ public class RestapiCallNode implements SvcLogicJavaPlugin {
throws SvcLogicException {
log.info("Building {} started", format);
long t1 = System.currentTimeMillis();
+ String originalTemplate = template;
template = expandRepeats(ctx, template, 1);
@@ -439,7 +440,7 @@ public class RestapiCallNode implements SvcLogicJavaPlugin {
}
String req = format == Format.XML
- ? XmlJsonUtil.removeEmptyStructXml(ss.toString()) : XmlJsonUtil.removeEmptyStructJson(ss.toString());
+ ? XmlJsonUtil.removeEmptyStructXml(ss.toString()) : XmlJsonUtil.removeEmptyStructJson(originalTemplate, ss.toString());
if (format == Format.JSON) {
req = XmlJsonUtil.removeLastCommaJson(req);
diff --git a/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/XmlJsonUtil.java b/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/XmlJsonUtil.java
index 8a0ca8d94..4712b4298 100644
--- a/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/XmlJsonUtil.java
+++ b/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/XmlJsonUtil.java
@@ -272,7 +272,7 @@ public final class XmlJsonUtil {
return sb.toString();
}
- public static String removeEmptyStructJson(String s) {
+ public static String removeEmptyStructJson(String template, String s) {
int k = 0;
while (k < s.length()) {
boolean curly = true;
@@ -304,8 +304,13 @@ public final class XmlJsonUtil {
if (i5 < 0)
i5 = s.length();
- s = s.substring(0, i4) + s.substring(i5);
- k = 0;
+ /*If template mandates empty construct to be present, those should not be removed.*/
+ if ((template != null) && template.contains(s.substring(i4))) {
+ k = i1 + 1;
+ } else {
+ s = s.substring(0, i4) + s.substring(i5);
+ k = 0;
+ }
} else
k = i1 + 1;
} else
diff --git a/restapi-call-node/provider/src/test/java/jtest/org/onap/ccsdk/sli/plugins/sshapicall/TestRestapiCallNode.java b/restapi-call-node/provider/src/test/java/jtest/org/onap/ccsdk/sli/plugins/sshapicall/TestRestapiCallNode.java
index 5c6c4e279..4008c56c7 100644
--- a/restapi-call-node/provider/src/test/java/jtest/org/onap/ccsdk/sli/plugins/sshapicall/TestRestapiCallNode.java
+++ b/restapi-call-node/provider/src/test/java/jtest/org/onap/ccsdk/sli/plugins/sshapicall/TestRestapiCallNode.java
@@ -52,6 +52,61 @@ public class TestRestapiCallNode {
}
@Test
+ public void testJsonSdwanVpnTopologyTemplate() throws SvcLogicException {
+ SvcLogicContext ctx = new SvcLogicContext();
+
+ ctx.setAttribute("prop.topology", "topoType");
+
+ ctx.setAttribute("prop.roles_length", "1");
+ ctx.setAttribute("prop.roles[0]", "role1");
+
+ ctx.setAttribute("prop.siteAttachement_length", "2");
+
+ ctx.setAttribute("prop.siteAttachement[0].siteId", "site1");
+ ctx.setAttribute("prop.siteAttachement[0].roles_length", "0");
+ ctx.setAttribute("prop.siteAttachement[0].roles[0]", "role1");
+ ctx.setAttribute("prop.siteAttachement[0].roles[1]", "role3");
+
+ ctx.setAttribute("prop.siteAttachement[1].siteId", "site2");
+ ctx.setAttribute("prop.siteAttachement[1].roles_length", "1");
+ ctx.setAttribute("prop.siteAttachement[1].roles[0]", "role2");
+
+ Map<String, String> p = new HashMap<String, String>();
+ p.put("templateFileName", "src/test/resources/sdwan-vpn-topology.json");
+ p.put("restapiUrl", "http://echo.getpostman.com");
+ p.put("restapiUser", "user1");
+ p.put("restapiPassword", "abc123");
+ p.put("format", "json");
+ p.put("httpMethod", "post");
+ p.put("responsePrefix", "response");
+ p.put("skipSending", "true");
+
+ RestapiCallNode rcn = new RestapiCallNode();
+ rcn.sendRequest(p, ctx);
+ }
+
+ @Test
+ public void testJsonSdwanSiteTemplate() throws SvcLogicException {
+ SvcLogicContext ctx = new SvcLogicContext();
+
+ ctx.setAttribute("prop.name", "site1");
+
+
+ Map<String, String> p = new HashMap<String, String>();
+ p.put("templateFileName", "src/test/resources/sdwan-site.json");
+ p.put("restapiUrl", "http://echo.getpostman.com");
+ p.put("restapiUser", "user1");
+ p.put("restapiPassword", "abc123");
+ p.put("format", "json");
+ p.put("httpMethod", "post");
+ p.put("responsePrefix", "response");
+ p.put("skipSending", "true");
+
+ RestapiCallNode rcn = new RestapiCallNode();
+ rcn.sendRequest(p, ctx);
+ }
+
+ @Test
public void testJsonTemplate() throws SvcLogicException {
SvcLogicContext ctx = new SvcLogicContext();
ctx.setAttribute("tmp.sdn-circuit-req-row_length", "3");
diff --git a/restapi-call-node/provider/src/test/java/jtest/org/onap/ccsdk/sli/plugins/sshapicall/TestXmlJsonUtil.java b/restapi-call-node/provider/src/test/java/jtest/org/onap/ccsdk/sli/plugins/sshapicall/TestXmlJsonUtil.java
index bd9ff1c98..31fa2f9f9 100644
--- a/restapi-call-node/provider/src/test/java/jtest/org/onap/ccsdk/sli/plugins/sshapicall/TestXmlJsonUtil.java
+++ b/restapi-call-node/provider/src/test/java/jtest/org/onap/ccsdk/sli/plugins/sshapicall/TestXmlJsonUtil.java
@@ -254,7 +254,7 @@ public class TestXmlJsonUtil {
"}\r\n" +
"";
- String xmlout = XmlJsonUtil.removeEmptyStructJson(xmlin);
+ String xmlout = XmlJsonUtil.removeEmptyStructJson(null, xmlin);
log.info(xmlout);
Assert.assertEquals(xmloutexpected, xmlout);
diff --git a/restapi-call-node/provider/src/test/resources/sdwan-site.json b/restapi-call-node/provider/src/test/resources/sdwan-site.json
new file mode 100644
index 000000000..238ec7642
--- /dev/null
+++ b/restapi-call-node/provider/src/test/resources/sdwan-site.json
@@ -0,0 +1,10 @@
+{
+ "sites": [
+ {
+ "name": ${prop.name},
+ "controlPoints": []
+ }
+ ]
+}
+
+
diff --git a/restapi-call-node/provider/src/test/resources/sdwan-vpn-topology.json b/restapi-call-node/provider/src/test/resources/sdwan-vpn-topology.json
new file mode 100644
index 000000000..4260d2fc1
--- /dev/null
+++ b/restapi-call-node/provider/src/test/resources/sdwan-vpn-topology.json
@@ -0,0 +1,23 @@
+{
+ "vpnId": ${prop.vpn1Id},
+ "areas": [
+ {
+ "name": "area1",
+ "areaType": "leaf",
+ "topologyType": ${prop.topology},
+ "siteAttachements": [${repeat:prop.siteAttachement_length:
+ {
+ "siteId": ${prop.siteAttachement[${1}].siteId},
+ "role": [${repeat:prop.siteAttachement[${1}].roles_length:
+ ${prop.siteAttachement[${1}].roles[${2}]},
+ }
+ ],
+ "workMode": "with-interconnection",
+ "sitePriority": "active",
+ "borders": "null"
+ },
+ }
+ ]
+ }
+ ]
+} \ No newline at end of file