diff options
author | andre.schmid <andre.schmid@est.tech> | 2022-06-14 12:01:07 +0100 |
---|---|---|
committer | Michael Morris <michael.morris@est.tech> | 2022-06-20 15:57:04 +0000 |
commit | e398bb0eac655ea80507825ff039c874dd7dee6d (patch) | |
tree | fdf99c288406902cbe13adcc354f64dcf8d5c127 /catalog-be | |
parent | ce3e2816ec3aa034bdef323c1a33b71485e87eb0 (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')
2 files changed, 29 insertions, 19 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); 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; |