if (CollectionUtils.isNotEmpty(property.getConstraints())) {
try {
- prop.setConstraints(convertConstraints(property.getConstraints(), property.getType()));
+ prop.setConstraints(convertConstraints(property.getConstraints(), property.getType(), property.getSchemaType()));
} catch (ConstraintValueDoNotMatchPropertyTypeException e) {
log.error(e.getMessage());
}
return prop;
}
- private List<ToscaPropertyConstraint> convertConstraints(List<PropertyConstraint> constraints, String propertyType)
+ private List<ToscaPropertyConstraint> convertConstraints(List<PropertyConstraint> constraints, String propertyType, String schemaType)
throws ConstraintValueDoNotMatchPropertyTypeException {
List<ToscaPropertyConstraint> convertedConstraints = new ArrayList<>();
for (PropertyConstraint constraint : constraints) {
if (constraint instanceof EqualConstraint) {
EqualConstraint equalConstraint = ((EqualConstraint) constraint);
- if (doesPropertyTypeNeedConverted(propertyType)) {
+ if (doesTypeNeedConvertingToIntOrFloat(propertyType)) {
equalConstraint.changeConstraintValueTypeTo(propertyType);
}
if (constraint instanceof GreaterThanConstraint) {
GreaterThanConstraint greaterThanConstraint = ((GreaterThanConstraint) constraint);
- if (doesPropertyTypeNeedConverted(propertyType)) {
+ if (doesTypeNeedConvertingToIntOrFloat(propertyType)) {
greaterThanConstraint.changeConstraintValueTypeTo(propertyType);
}
if (constraint instanceof GreaterOrEqualConstraint) {
GreaterOrEqualConstraint greaterOrEqualConstraint = ((GreaterOrEqualConstraint) constraint);
- if (doesPropertyTypeNeedConverted(propertyType)) {
+ if (doesTypeNeedConvertingToIntOrFloat(propertyType)) {
greaterOrEqualConstraint.changeConstraintValueTypeTo(propertyType);
}
if (constraint instanceof LessThanConstraint) {
LessThanConstraint lessThanConstraint = ((LessThanConstraint) constraint);
- if (doesPropertyTypeNeedConverted(propertyType)) {
+ if (doesTypeNeedConvertingToIntOrFloat(propertyType)) {
lessThanConstraint.changeConstraintValueTypeTo(propertyType);
}
if (constraint instanceof LessOrEqualConstraint) {
LessOrEqualConstraint lessOrEqualConstraint = ((LessOrEqualConstraint) constraint);
- if (doesPropertyTypeNeedConverted(propertyType)) {
+ if (doesTypeNeedConvertingToIntOrFloat(propertyType)) {
lessOrEqualConstraint.changeConstraintValueTypeTo(propertyType);
}
if (constraint instanceof InRangeConstraint) {
InRangeConstraint inRangeConstraint = (InRangeConstraint) constraint;
- if (doesPropertyTypeNeedConverted(propertyType)) {
+ if (doesTypeNeedConvertingToIntOrFloat(propertyType)) {
inRangeConstraint.changeConstraintValueTypeTo(propertyType);
}
if (constraint instanceof ValidValuesConstraint) {
ValidValuesConstraint validValues = ((ValidValuesConstraint) constraint);
- if (doesPropertyTypeNeedConverted(propertyType)) {
+ if (isTypeMapOrList(propertyType) && doesTypeNeedConvertingToIntOrFloat(schemaType)) {
+ validValues.changeConstraintValueTypeTo(schemaType);
+ } else if (doesTypeNeedConvertingToIntOrFloat(propertyType)) {
validValues.changeConstraintValueTypeTo(propertyType);
}
return convertedConstraints;
}
- private boolean doesPropertyTypeNeedConverted(String propertyType) {
+ private boolean doesTypeNeedConvertingToIntOrFloat(String propertyType) {
return ToscaType.INTEGER.getType().equals(propertyType) || ToscaType.FLOAT.getType().equals(propertyType);
}
+ private boolean isTypeMapOrList (String type) {
+ return ToscaType.MAP.getType().equals(type) || ToscaType.LIST.getType().equals(type);
+ }
+
public Object convertToToscaObject(PropertyDataDefinition property, String value, Map<String, DataTypeDefinition> dataTypes,
boolean preserveEmptyValue) {
String propertyType = property.getType();