From 6c9da5ab227fa535249e8bb56c7cef01a74c6fb1 Mon Sep 17 00:00:00 2001 From: franciscovila Date: Tue, 18 Apr 2023 15:08:07 +0100 Subject: VFC Property default value enforced forced to comply with restraints Issue-ID: SDC-4477 Signed-off-by: franciscovila Change-Id: Ib9115aae9019e2d36990147dc0ec9f4058352d88 --- .../utils/PropertyValueConstraintValidationUtil.java | 11 +++++++---- .../openecomp/sdc/be/servlets/ComponentPropertyServlet.java | 10 ++++++++++ 2 files changed, 17 insertions(+), 4 deletions(-) (limited to 'catalog-be/src/main/java') 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 list = ConstraintUtil.parseToCollection(propertyDefinition.getValue(), new TypeReference<>() { + Collection list = ConstraintUtil.parseToCollection(null != propertyDefinition.getValue() ? + propertyDefinition.getValue() : propertyDefinition.getDefaultValue(), new TypeReference>() { }); return CollectionUtils.isNotEmpty(list); } else { @@ -323,7 +325,8 @@ public class PropertyValueConstraintValidationUtil { if (propertyDefinition.getSchemaType() == null) { propertyDefinition.setSchema(createStringSchema()); } - Collection list = ConstraintUtil.parseToCollection(propertyDefinition.getValue(), new TypeReference<>() {}); + Collection list = ConstraintUtil.parseToCollection(null != propertyDefinition.getValue() ? + propertyDefinition.getValue() : propertyDefinition.getDefaultValue(), new TypeReference>() {}); final Map 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 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 entry = properties.entrySet().iterator().next(); PropertyDefinition newPropertyDefinition = entry.getValue(); newPropertyDefinition.setParentUniqueId(componentId); -- cgit 1.2.3-korg