From e398bb0eac655ea80507825ff039c874dd7dee6d Mon Sep 17 00:00:00 2001 From: "andre.schmid" Date: Tue, 14 Jun 2022 12:01:07 +0100 Subject: 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 --- .../PropertyValueConstraintValidationUtil.java | 44 ++++++++++++++-------- .../PropertyValueConstraintValidationUtilTest.java | 4 -- 2 files changed, 29 insertions(+), 19 deletions(-) (limited to 'catalog-be') 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 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 map = ConstraintUtil.parseToCollection(propertyDefinition.getValue(), new TypeReference<>() {}); - evaluateCollectionType(propertyDefinition, map.values(), schemaType); + if (propertyDefinition.getSchemaType() == null) { + propertyDefinition.setSchema(createStringSchema()); + } + final Map 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 valueList, final String schemaType) { + private void evaluateCollectionType(final PropertyDefinition propertyDefinition, final Collection 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); diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/datamodel/utils/PropertyValueConstraintValidationUtilTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/datamodel/utils/PropertyValueConstraintValidationUtilTest.java index c1e33a8474..a9350edc18 100644 --- a/catalog-be/src/test/java/org/openecomp/sdc/be/datamodel/utils/PropertyValueConstraintValidationUtilTest.java +++ b/catalog-be/src/test/java/org/openecomp/sdc/be/datamodel/utils/PropertyValueConstraintValidationUtilTest.java @@ -53,7 +53,6 @@ import org.openecomp.sdc.be.model.InputDefinition; import org.openecomp.sdc.be.model.PropertyConstraint; import org.openecomp.sdc.be.model.PropertyDefinition; import org.openecomp.sdc.be.model.cache.ApplicationDataTypeCache; -import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade; import org.openecomp.sdc.be.model.operations.impl.PropertyOperation; import org.openecomp.sdc.exception.ResponseFormat; @@ -62,9 +61,6 @@ class PropertyValueConstraintValidationUtilTest { @Mock ApplicationDataTypeCache applicationDataTypeCache; - @Mock - ToscaOperationFacade toscaOperationFacade; - @Spy @InjectMocks PropertyValueConstraintValidationUtil propertyValueConstraintValidationUtil; -- cgit 1.2.3-korg