diff options
Diffstat (limited to 'catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/validators/MapValidator.java')
-rw-r--r-- | catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/validators/MapValidator.java | 254 |
1 files changed, 126 insertions, 128 deletions
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/validators/MapValidator.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/validators/MapValidator.java index 862766b6fa..996e24ee06 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/validators/MapValidator.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/validators/MapValidator.java @@ -20,22 +20,20 @@ package org.openecomp.sdc.be.model.tosca.validators; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; - +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.google.gson.JsonSyntaxException; import org.apache.commons.lang.StringUtils; import org.openecomp.sdc.be.config.BeEcompErrorManager; import org.openecomp.sdc.be.model.DataTypeDefinition; import org.openecomp.sdc.be.model.tosca.ToscaPropertyType; +import org.openecomp.sdc.common.log.wrappers.Logger; import org.openecomp.sdc.common.util.JsonUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; -import com.google.gson.JsonSyntaxException; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; /* * Property Type Map correct usage: @@ -47,90 +45,90 @@ validators and converters works the same as before Types: when written line by line : - key1 : val1 - key2 : val2 + key1 : val1 + key2 : val2 key1 and val does not need " " , even if val1 is a string. when written as one line : {"key1":val1 , "key2":val2} Keys always need " " around them. */ public class MapValidator implements PropertyTypeValidator { - private static MapValidator mapValidator = new MapValidator(); - - private static final Logger LOGGER = LoggerFactory.getLogger(MapValidator.class.getName()); - - private static DataTypeValidatorConverter dataTypeValidatorConverter = DataTypeValidatorConverter.getInstance(); - - private static JsonParser jsonParser = new JsonParser(); - - public static MapValidator getInstance() { - return mapValidator; - } - - @Override - public boolean isValid(String value, String innerType, Map<String, DataTypeDefinition> allDataTypes) { - - if (StringUtils.isEmpty(value)) { - return true; - } - if (innerType == null) { - return false; - } - - PropertyTypeValidator innerValidator; - PropertyTypeValidator keyValidator = ToscaPropertyType.KEY.getValidator(); - ToscaPropertyType innerToscaType = ToscaPropertyType.isValidType(innerType); - - if (innerToscaType != null) { - switch (innerToscaType) { - case STRING: - innerValidator = ToscaPropertyType.STRING.getValidator(); - break; - case INTEGER: - innerValidator = ToscaPropertyType.INTEGER.getValidator(); - break; - case FLOAT: - innerValidator = ToscaPropertyType.FLOAT.getValidator(); - break; - case BOOLEAN: - innerValidator = ToscaPropertyType.BOOLEAN.getValidator(); - break; - case JSON: - innerValidator = ToscaPropertyType.JSON.getValidator(); - break; - default: - LOGGER.debug("inner Tosca Type is unknown. {}", innerToscaType); - return false; - } - - } else { - LOGGER.debug("inner Tosca Type is: {}", innerType); - - boolean isValid = validateComplexInnerType(value, innerType, allDataTypes); - LOGGER.debug("Finish to validate value {} of map with inner type {}. result is {}",value,innerType,isValid); - return isValid; - - } - - try { - JsonElement jsonObject = jsonParser.parse(value); - if (!jsonObject.isJsonObject()) { - return false; + private static MapValidator mapValidator = new MapValidator(); + + private static final Logger log = Logger.getLogger(MapValidator.class.getName()); + + private static DataTypeValidatorConverter dataTypeValidatorConverter = DataTypeValidatorConverter.getInstance(); + + private static JsonParser jsonParser = new JsonParser(); + + public static MapValidator getInstance() { + return mapValidator; + } + + @Override + public boolean isValid(String value, String innerType, Map<String, DataTypeDefinition> allDataTypes) { + + if (StringUtils.isEmpty(value)) { + return true; + } + if (innerType == null) { + return false; + } + + PropertyTypeValidator innerValidator; + PropertyTypeValidator keyValidator = ToscaPropertyType.KEY.getValidator(); + ToscaPropertyType innerToscaType = ToscaPropertyType.isValidType(innerType); + + if (innerToscaType != null) { + switch (innerToscaType) { + case STRING: + innerValidator = ToscaPropertyType.STRING.getValidator(); + break; + case INTEGER: + innerValidator = ToscaPropertyType.INTEGER.getValidator(); + break; + case FLOAT: + innerValidator = ToscaPropertyType.FLOAT.getValidator(); + break; + case BOOLEAN: + innerValidator = ToscaPropertyType.BOOLEAN.getValidator(); + break; + case JSON: + innerValidator = ToscaPropertyType.JSON.getValidator(); + break; + default: + log.debug("inner Tosca Type is unknown. {}", innerToscaType); + return false; } - JsonObject valueAsJson = jsonObject.getAsJsonObject(); - return validateJsonObject(allDataTypes, innerValidator, keyValidator, valueAsJson); - } catch (JsonSyntaxException e) { - LOGGER.debug("Failed to parse json : {}", value, e); - BeEcompErrorManager.getInstance().logBeInvalidJsonInput("Map Validator"); - } - return false; + } else { + log.debug("inner Tosca Type is: {}", innerType); + + boolean isValid = validateComplexInnerType(value, innerType, allDataTypes); + log.debug("Finish to validate value {} of map with inner type {}. result is {}",value,innerType,isValid); + return isValid; + + } + + try { + JsonElement jsonObject = jsonParser.parse(value); + if (!jsonObject.isJsonObject()) { + return false; + } + JsonObject valueAsJson = jsonObject.getAsJsonObject(); + return validateJsonObject(allDataTypes, innerValidator, keyValidator, valueAsJson); + } catch (JsonSyntaxException e) { + log.debug("Failed to parse json : {}", value, e); + BeEcompErrorManager.getInstance().logBeInvalidJsonInput("Map Validator"); + } - } + return false; - private boolean validateJsonObject(Map<String, DataTypeDefinition> allDataTypes, PropertyTypeValidator innerValidator, PropertyTypeValidator keyValidator, JsonObject asJsonObject) { - Set<Entry<String, JsonElement>> entrySet = asJsonObject.entrySet(); - for (Entry<String, JsonElement> entry : entrySet) { + } + + private boolean validateJsonObject(Map<String, DataTypeDefinition> allDataTypes, PropertyTypeValidator innerValidator, PropertyTypeValidator keyValidator, JsonObject asJsonObject) { + Set<Entry<String, JsonElement>> entrySet = asJsonObject.entrySet(); + for (Entry<String, JsonElement> entry : entrySet) { String currentKey = entry.getKey(); JsonElement jsonValue = entry.getValue(); @@ -138,52 +136,52 @@ public class MapValidator implements PropertyTypeValidator { if (!innerValidator.isValid(element, null, allDataTypes) || !keyValidator.isValid(entry.getKey(), null, allDataTypes)) { - LOGGER.debug("validation of key : {}, element : {} failed", currentKey, entry.getValue()); + log.debug("validation of key : {}, element : {} failed", currentKey, entry.getValue()); return false; } } - return true; - } - - private boolean validateComplexInnerType(String value, String innerType, - Map<String, DataTypeDefinition> allDataTypes) { - - DataTypeDefinition innerDataTypeDefinition = allDataTypes.get(innerType); - if (innerDataTypeDefinition == null) { - LOGGER.debug("Data type {} cannot be found in our data types.", innerType); - return false; - } - - try { - JsonElement jsonObject = jsonParser.parse(value); - JsonObject asJsonObject = jsonObject.getAsJsonObject(); - Set<Entry<String, JsonElement>> entrySet = asJsonObject.entrySet(); - for (Entry<String, JsonElement> entry : entrySet) { - String currentKey = entry.getKey(); - JsonElement currentValue = entry.getValue(); - - if (currentValue != null) { - String element = JsonUtils.toString(currentValue); - boolean isValid = dataTypeValidatorConverter.isValid(element, innerDataTypeDefinition, - allDataTypes); - if (!isValid) { - LOGGER.debug("Cannot parse value {} from type {} of key {}",currentValue,innerType,currentKey); - return false; - } - } - } - - } catch (Exception e) { - LOGGER.debug("Cannot parse value {} of map from inner type {}", value, innerType, e); - return false; - } - - return true; - } - - @Override - public boolean isValid(String value, String innerType) { - return isValid(value, innerType, null); - } + return true; + } + + private boolean validateComplexInnerType(String value, String innerType, + Map<String, DataTypeDefinition> allDataTypes) { + + DataTypeDefinition innerDataTypeDefinition = allDataTypes.get(innerType); + if (innerDataTypeDefinition == null) { + log.debug("Data type {} cannot be found in our data types.", innerType); + return false; + } + + try { + JsonElement jsonObject = jsonParser.parse(value); + JsonObject asJsonObject = jsonObject.getAsJsonObject(); + Set<Entry<String, JsonElement>> entrySet = asJsonObject.entrySet(); + for (Entry<String, JsonElement> entry : entrySet) { + String currentKey = entry.getKey(); + JsonElement currentValue = entry.getValue(); + + if (currentValue != null) { + String element = JsonUtils.toString(currentValue); + boolean isValid = dataTypeValidatorConverter.isValid(element, innerDataTypeDefinition, + allDataTypes); + if (!isValid) { + log.debug("Cannot parse value {} from type {} of key {}",currentValue,innerType,currentKey); + return false; + } + } + } + + } catch (Exception e) { + log.debug("Cannot parse value {} of map from inner type {}", value, innerType, e); + return false; + } + + return true; + } + + @Override + public boolean isValid(String value, String innerType) { + return isValid(value, innerType, null); + } } |