diff options
author | franciscovila <javier.paradela.vila@est.tech> | 2023-04-18 15:08:07 +0100 |
---|---|---|
committer | Michael Morris <michael.morris@est.tech> | 2023-04-26 07:59:43 +0000 |
commit | 6c9da5ab227fa535249e8bb56c7cef01a74c6fb1 (patch) | |
tree | 7e12a48558122980ce877452d1055ce77d4e8bff /catalog-be/src/main/java | |
parent | 3405456c46937352863ce19c39266a51dd7760db (diff) |
VFC Property default value enforced forced to comply with restraints
Issue-ID: SDC-4477
Signed-off-by: franciscovila <javier.paradela.vila@est.tech>
Change-Id: Ib9115aae9019e2d36990147dc0ec9f4058352d88
Diffstat (limited to 'catalog-be/src/main/java')
2 files changed, 17 insertions, 4 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/datamodel/utils/PropertyValueConstraintValidationUtil.java b/catalog-be/src/main/java/org/openecomp/sdc/be/datamodel/utils/PropertyValueConstraintValidationUtil.java index ef7363a1a3..74cf8eb43f 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/datamodel/utils/PropertyValueConstraintValidationUtil.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/datamodel/utils/PropertyValueConstraintValidationUtil.java @@ -96,7 +96,7 @@ public class PropertyValueConstraintValidationUtil { if (propertyDefinition instanceof InputDefinition) { return StringUtils.isNotEmpty(propertyDefinition.getDefaultValue()); } - return StringUtils.isNotEmpty(propertyDefinition.getValue()); + return StringUtils.isNotEmpty(propertyDefinition.getValue() != null ? propertyDefinition.getValue() : propertyDefinition.getDefaultValue()); } private void evaluatePropertyTypeForConstraintValidation(PropertyDefinition propertyDefinition) { @@ -155,7 +155,8 @@ public class PropertyValueConstraintValidationUtil { } } } else if (!isValueAToscaFunction(propertyDefinition) && ToscaType.isPrimitiveType(propertyDefinition.getType()) - && !propertyDefinition.isToscaFunction() && !toscaType.isValidValue(propertyDefinition.getValue())) { + && !propertyDefinition.isToscaFunction() && !toscaType.isValidValue( + propertyDefinition.getValue() != null ? propertyDefinition.getValue() : propertyDefinition.getDefaultValue())) { errorMessages.add(String.format("Unsupported value provided for %s property supported value type is %s.", getCompletePropertyName(propertyDefinition), toscaType.getType())); } @@ -245,7 +246,8 @@ public class PropertyValueConstraintValidationUtil { return StringUtils.isNotEmpty(propertyDefinition.getValue()) && !"null".equals(propertyDefinition.getValue()); } else if (ToscaType.LIST == ToscaType.isValidType(propertyDefinition.getType())) { - Collection<Object> list = ConstraintUtil.parseToCollection(propertyDefinition.getValue(), new TypeReference<>() { + Collection<?> list = ConstraintUtil.parseToCollection(null != propertyDefinition.getValue() ? + propertyDefinition.getValue() : propertyDefinition.getDefaultValue(), new TypeReference<List<?>>() { }); return CollectionUtils.isNotEmpty(list); } else { @@ -323,7 +325,8 @@ public class PropertyValueConstraintValidationUtil { if (propertyDefinition.getSchemaType() == null) { propertyDefinition.setSchema(createStringSchema()); } - Collection<Object> list = ConstraintUtil.parseToCollection(propertyDefinition.getValue(), new TypeReference<>() {}); + Collection<?> list = ConstraintUtil.parseToCollection(null != propertyDefinition.getValue() ? + propertyDefinition.getValue() : propertyDefinition.getDefaultValue(), new TypeReference<List<?>>() {}); final Map<String, Object> map = new HashMap<>(); int index = 0; for (Object obj : list) { diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/servlets/ComponentPropertyServlet.java b/catalog-be/src/main/java/org/openecomp/sdc/be/servlets/ComponentPropertyServlet.java index c58c43db52..c291522ca7 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/servlets/ComponentPropertyServlet.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/servlets/ComponentPropertyServlet.java @@ -268,6 +268,16 @@ public class ComponentPropertyServlet extends BeGenericServlet { log.info("Property content is invalid - {}", data); return buildErrorResponse(getComponentsUtils().getResponseFormat(ActionStatus.INVALID_CONTENT)); } + + //Validate value and Constraint of property and Fetch all data types from cache + Either<Boolean, ResponseFormat> constraintValidatorResponse = new PropertyValueConstraintValidationUtil() + .validatePropertyConstraints(properties.values(), applicationDataTypeCache, + propertyBusinessLogic.getComponentModelByComponentId(componentId)); + if (constraintValidatorResponse.isRight()) { + log.error("Failed validation value and constraint of property: {}", constraintValidatorResponse.right().value()); + return buildErrorResponse(constraintValidatorResponse.right().value()); + } + Map.Entry<String, PropertyDefinition> entry = properties.entrySet().iterator().next(); PropertyDefinition newPropertyDefinition = entry.getValue(); newPropertyDefinition.setParentUniqueId(componentId); |