From ff0146fb327dbe5f27b0bd29640f3ace54006d92 Mon Sep 17 00:00:00 2001 From: "Wang,Frank(gw1218)" Date: Tue, 3 Apr 2018 16:17:54 -0500 Subject: Add More Validations on TOSCA Model Format Add more validations on TOSCA MS model file name and content format Issue-ID: POLICY-721 Change-Id: Ic3dfe1887791be1e11bca5695866a77909334536 Signed-off-by: Wang,Frank(gw1218) --- .../org/onap/policy/rest/util/MSModelUtils.java | 96 +++++++++++++++++++++- 1 file changed, 93 insertions(+), 3 deletions(-) (limited to 'ONAP-REST/src') diff --git a/ONAP-REST/src/main/java/org/onap/policy/rest/util/MSModelUtils.java b/ONAP-REST/src/main/java/org/onap/policy/rest/util/MSModelUtils.java index f8b8b5278..91e7626ea 100644 --- a/ONAP-REST/src/main/java/org/onap/policy/rest/util/MSModelUtils.java +++ b/ONAP-REST/src/main/java/org/onap/policy/rest/util/MSModelUtils.java @@ -738,12 +738,18 @@ public class MSModelUtils { /* * For TOSCA Model */ - public void parseTosca (String fileName){ + public String parseTosca (String fileName){ LinkedHashMap map= new LinkedHashMap<>(); try { map=load(fileName); + if(map != null){ + if(map.get("error") != null){ + return map.get("error"); + } + } + parseDataAndPolicyNodes(map); LinkedHashMap dataMapForJson=parseDataNodes(map); @@ -757,7 +763,8 @@ public class MSModelUtils { } catch (IOException e) { logger.error(e); } - + + return null; } @SuppressWarnings("unchecked") @@ -777,6 +784,13 @@ public class MSModelUtils { if (yamlMap == null) { return settings; } + + String message = validations(yamlMap); + + if(message != null){ + settings.put("error", message); + return settings; + } findNode(yamlMap); @@ -796,7 +810,83 @@ public class MSModelUtils { List path = new ArrayList <>(); serializeMap(settings, sb, path, yamlMap); return settings; - } + } + + @SuppressWarnings("unchecked") + private String validations(@SuppressWarnings("rawtypes") LinkedHashMap yamlMap){ + + boolean isNoteTypeFound = false; + boolean isDataTypeFound = false; + boolean isToscaVersionKeyFound = false; + boolean isToscaVersionValueFound = false; + @SuppressWarnings("rawtypes") + Map m1 = new HashMap(); + short order =0; + if(yamlMap != null){ + // Get a set of the entries + @SuppressWarnings("rawtypes") + Set set = yamlMap.entrySet(); + // Get an iterator + @SuppressWarnings("rawtypes") + Iterator i = set.iterator(); + // Display elements + while(i.hasNext()) { + @SuppressWarnings("rawtypes") + Map.Entry me = (Map.Entry)i.next(); + + if("tosca_definitions_version".equals(me.getKey())){ + isToscaVersionKeyFound = true; + order++; + m1.put("tosca_definitions_version", order); + } + + if("tosca_simple_yaml_1_0_0".equals(me.getValue())){ + isToscaVersionValueFound = true; + } + + if("node_types".equals(me.getKey())){ + isNoteTypeFound = true; + order++; + m1.put("node_types", order); + } + + if("data_types".equals(me.getKey())){ + isDataTypeFound = true; + order++; + m1.put("data_types", order); + } + + } + + + if(!isDataTypeFound){ + return "data_types are missing or invalid."; + } + + if(!isToscaVersionKeyFound || !isToscaVersionValueFound){ + return "tosca_definitions_version is missing or invalid."; + } + + if(!isNoteTypeFound){ + return "node_types are missing or invalid."; + } + + short version = (short) m1.get("tosca_definitions_version"); + + if(version > 1 ){ + return "tosca_definitions_version should be defined first."; + } + + short data = (short) m1.get("data_types"); + short node = (short) m1.get("node_types"); + if(node > data){ + return "node_types should be defined before data_types."; + } + + } + + return null; + } @SuppressWarnings({ "unchecked", "rawtypes" }) private void serializeMap(LinkedHashMap settings, StringBuilder sb, List path, Map yamlMap) { -- cgit 1.2.3-korg