diff options
author | Jorge Hernandez <jh1730@att.com> | 2018-04-04 15:56:29 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@onap.org> | 2018-04-04 15:56:29 +0000 |
commit | 7e28140dbf60ca27976668a372747af48600a325 (patch) | |
tree | 09b2b4e1211c9714198c82cbdc11899c25eccd9d /ONAP-REST/src | |
parent | e313080641069b3bfc1f497113c57f1667b72bbc (diff) | |
parent | ff0146fb327dbe5f27b0bd29640f3ace54006d92 (diff) |
Merge "Add More Validations on TOSCA Model Format"
Diffstat (limited to 'ONAP-REST/src')
-rw-r--r-- | ONAP-REST/src/main/java/org/onap/policy/rest/util/MSModelUtils.java | 96 |
1 files changed, 93 insertions, 3 deletions
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<String,String> map= new LinkedHashMap<>(); try { map=load(fileName); + if(map != null){ + if(map.get("error") != null){ + return map.get("error"); + } + } + parseDataAndPolicyNodes(map); LinkedHashMap<String,String> 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<String> 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<String, String> settings, StringBuilder sb, List<String> path, Map<Object, Object> yamlMap) { |