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 e5503435..9a89af6b 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 8a0ca8d9..4712b429 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 5c6c4e27..4008c56c 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 bd9ff1c9..31fa2f9f 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 00000000..238ec764
--- /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 00000000..4260d2fc
--- /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