aboutsummaryrefslogtreecommitdiffstats
path: root/catalog-be/src/main
diff options
context:
space:
mode:
authorandre.schmid <andre.schmid@est.tech>2022-06-14 12:01:07 +0100
committerMichael Morris <michael.morris@est.tech>2022-06-20 15:57:04 +0000
commite398bb0eac655ea80507825ff039c874dd7dee6d (patch)
treefdf99c288406902cbe13adcc354f64dcf8d5c127 /catalog-be/src/main
parentce3e2816ec3aa034bdef323c1a33b71485e87eb0 (diff)
Fix VFC map or list property update
Fixes two problems in the update of VFC map or list properties. One was related to a schema validation in the backend. The other is related to setting the property value when the default value was being edited. Change-Id: Icd85346144c8763ced1b8fbcd750c9baf783f6a6 Issue-ID: SDC-4050 Signed-off-by: andre.schmid <andre.schmid@est.tech>
Diffstat (limited to 'catalog-be/src/main')
-rw-r--r--catalog-be/src/main/java/org/openecomp/sdc/be/datamodel/utils/PropertyValueConstraintValidationUtil.java44
1 files changed, 29 insertions, 15 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 25ca7d650e..442c3da16c 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
@@ -33,6 +33,7 @@ import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.openecomp.sdc.be.components.impl.ResponseFormatManager;
import org.openecomp.sdc.be.dao.api.ActionStatus;
+import org.openecomp.sdc.be.datatypes.elements.SchemaDefinition;
import org.openecomp.sdc.be.model.DataTypeDefinition;
import org.openecomp.sdc.be.model.InputDefinition;
import org.openecomp.sdc.be.model.PropertyConstraint;
@@ -197,20 +198,32 @@ public class PropertyValueConstraintValidationUtil {
private void evaluateListType(PropertyDefinition propertyDefinition) {
try {
- String schemaType = propertyDefinition.getSchemaType();
+ if (propertyDefinition.getSchemaType() == null) {
+ propertyDefinition.setSchema(createStringSchema());
+ }
List<Object> list = ConstraintUtil.parseToCollection(propertyDefinition.getValue(), new TypeReference<>() {});
- evaluateCollectionType(propertyDefinition, list, schemaType);
+ evaluateCollectionType(propertyDefinition, list);
} catch (ConstraintValueDoNotMatchPropertyTypeException e) {
logger.debug(e.getMessage(), e);
errorMessages.add(String.format(VALUE_PROVIDED_IN_INVALID_FORMAT_FOR_PROPERTY, getCompletePropertyName(propertyDefinition)));
}
}
- private void evaluateMapType(PropertyDefinition propertyDefinition) {
+ private SchemaDefinition createStringSchema() {
+ final SchemaDefinition schemaDefinition = new SchemaDefinition();
+ final PropertyDefinition schemaStringProperty = new PropertyDefinition();
+ schemaStringProperty.setType(ToscaType.STRING.getType());
+ schemaDefinition.setProperty(schemaStringProperty);
+ return schemaDefinition;
+ }
+
+ private void evaluateMapType(final PropertyDefinition propertyDefinition) {
try {
- String schemaType = propertyDefinition.getSchemaType();
- Map<String, Object> map = ConstraintUtil.parseToCollection(propertyDefinition.getValue(), new TypeReference<>() {});
- evaluateCollectionType(propertyDefinition, map.values(), schemaType);
+ if (propertyDefinition.getSchemaType() == null) {
+ propertyDefinition.setSchema(createStringSchema());
+ }
+ final Map<String, Object> map = ConstraintUtil.parseToCollection(propertyDefinition.getValue(), new TypeReference<>() {});
+ evaluateCollectionType(propertyDefinition, map.values());
} catch (ConstraintValueDoNotMatchPropertyTypeException e) {
logger.debug(e.getMessage(), e);
errorMessages.add(String.format(VALUE_PROVIDED_IN_INVALID_FORMAT_FOR_PROPERTY, getCompletePropertyName(propertyDefinition)));
@@ -227,21 +240,22 @@ public class PropertyValueConstraintValidationUtil {
}
}
- private void evaluateCollectionType(final PropertyDefinition propertyDefinition, final Collection<Object> valueList, final String schemaType) {
+ private void evaluateCollectionType(final PropertyDefinition propertyDefinition, final Collection<Object> valueList) {
+ final String schemaType = propertyDefinition.getSchemaType();
for (final Object value : valueList) {
try {
- final PropertyDefinition propertyDefinition1 = copyPropertyWithNewValue(propertyDefinition, objectMapper.writeValueAsString(value));
+ final PropertyDefinition propertyCopyWithNewValue = copyPropertyWithNewValue(propertyDefinition, objectMapper.writeValueAsString(value));
if (ToscaType.isPrimitiveType(schemaType)) {
- evaluateCollectionPrimitiveSchemaType(propertyDefinition1, schemaType);
+ evaluateCollectionPrimitiveSchemaType(propertyCopyWithNewValue, schemaType);
} else if (ToscaType.isCollectionType(schemaType)) {
- propertyDefinition1.setType(schemaType);
- propertyDefinition1.setSchemaType(propertyDefinition.getSchemaProperty().getSchemaType());
- evaluateCollectionTypeProperties(propertyDefinition1);
+ propertyCopyWithNewValue.setType(schemaType);
+ propertyCopyWithNewValue.setSchemaType(propertyDefinition.getSchemaProperty().getSchemaType());
+ evaluateCollectionTypeProperties(propertyCopyWithNewValue);
} else {
- propertyDefinition1.setType(schemaType);
+ propertyCopyWithNewValue.setType(schemaType);
completePropertyName.append(UNDERSCORE);
- completePropertyName.append(propertyDefinition1.getName());
- evaluateComplexTypeProperties(propertyDefinition1);
+ completePropertyName.append(propertyCopyWithNewValue.getName());
+ evaluateComplexTypeProperties(propertyCopyWithNewValue);
}
} catch (final Exception e) {
logger.debug(e.getMessage(), e);