diff options
author | vasraz <vasyl.razinkov@est.tech> | 2022-12-12 15:18:18 +0000 |
---|---|---|
committer | Michael Morris <michael.morris@est.tech> | 2022-12-14 15:49:17 +0000 |
commit | 7a3dcaaba77cf6ab3212db9ce7539ee90cb33eab (patch) | |
tree | aa48d62bd5962a76d707f19093c2cb69d1872f8c | |
parent | ed4d851990393a1863b82b6c15484d5250897707 (diff) |
Fix bug 'Pattern constraint validation failure'
Signed-off-by: Vasyl Razinkov <vasyl.razinkov@est.tech>
Change-Id: If7c59aa37db974c57195775f963c8400cf474a51
Issue-ID: SDC-4294
6 files changed, 34 insertions, 20 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/PropertyConvertor.java b/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/PropertyConvertor.java index 2ad6a942d0..ae97b89b78 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/PropertyConvertor.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/PropertyConvertor.java @@ -92,9 +92,9 @@ public class PropertyConvertor { if (props != null) { Map<String, ToscaProperty> properties = new HashMap<>(); // take only the properties of this resource - props.stream().filter(p -> p.getOwnerId() == null || p.getOwnerId().equals(component.getUniqueId())).forEach(property -> { - properties.put(property.getName(), convertProperty(dataTypes, property, PropertyType.PROPERTY)); - }); + props.stream().filter(p -> p.getOwnerId() == null || p.getOwnerId().equals(component.getUniqueId())).forEach(property -> + properties.put(property.getName(), convertProperty(dataTypes, property, PropertyType.PROPERTY)) + ); if (!properties.isEmpty()) { toscaNodeType.setProperties(properties); } @@ -129,18 +129,16 @@ public class PropertyConvertor { prop.setStatus(property.getStatus()); } prop.setMetadata(property.getMetadata()); - - List<ToscaPropertyConstraint> constraints = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(property.getConstraints())) { - constraints = convertConstraints(property.getConstraints()); - prop.setConstraints(constraints); + prop.setConstraints(convertConstraints(property.getConstraints())); } return prop; } - + private List<ToscaPropertyConstraint> convertConstraints(List<PropertyConstraint> constraints) { List<ToscaPropertyConstraint> convertedConstraints = new ArrayList<>(); - for (PropertyConstraint constraint: constraints){ + for (PropertyConstraint constraint : constraints) { if (constraint instanceof EqualConstraint) { convertedConstraints.add(new ToscaPropertyConstraintEqual(((EqualConstraint) constraint).getEqual())); } @@ -260,10 +258,10 @@ public class PropertyConvertor { .convertDataTypeToToscaObject(innerType, dataTypes, innerConverter, isScalar, jsonElement, preserveEmptyValue); } return convertedValue; - + } catch (JsonParseException e) { log.trace("{} not parsable as JSON. Convert as YAML instead", value); - return new Yaml().load(value); + return new Yaml().load(value); } catch (Exception e) { log.debug("convertToToscaValue failed to parse json value :", e); return null; diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/PropertyOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/PropertyOperation.java index 0803cc8d7d..97f9874301 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/PropertyOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/PropertyOperation.java @@ -2324,11 +2324,13 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe } private Object getJsonPrimitive(JsonPrimitive je) { - if (je.isBoolean()) + if (je.isBoolean()) { return je.getAsBoolean(); - if (je.isString()) + } + if (je.isString()) { return je.getAsString(); - if (je.isNumber()){ + } + if (je.isNumber()) { double number = je.getAsNumber().floatValue(); if ((number % 1) == 0) { return je.getAsNumber().intValue(); @@ -2391,7 +2393,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe propertyConstraint = deserializeConstraintWithIntegerOperand(value, MaxLengthConstraint.class); break; case PATTERN: - propertyConstraint = deserializeConstraintWithStringOperand(value, PatternConstraint.class); + propertyConstraint = deserializeConstraintWithStringPatternOperand(value, PatternConstraint.class); break; default: log.warn("Key {} is not supported. Ignored.", field.getKey()); @@ -2415,6 +2417,19 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe } } + private PropertyConstraint deserializeConstraintWithStringPatternOperand(JsonNode value, + Class<? extends PropertyConstraint> constraintClass) { + String asString = value.asText(); + log.debug("Before adding value to {} object. value = {}", constraintClass, asString); + try { + return constraintClass.getConstructor(String.class).newInstance(asString); + } catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException + | SecurityException exception) { + log.error("Error deserializing constraint", exception); + return null; + } + } + private PropertyConstraint deserializeConstraintWithIntegerOperand(JsonNode value, Class<? extends PropertyConstraint> constraintClass) { Integer asInt = value.asInt(); log.debug("Before adding value to {} object. value = {}", constraintClass, asInt); diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/EqualConstraint.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/EqualConstraint.java index 9e865733c9..f5a9f847ff 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/EqualConstraint.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/EqualConstraint.java @@ -70,7 +70,7 @@ public class EqualConstraint extends AbstractPropertyConstraint implements Seria @Override public ConstraintType getConstraintType() { - return null; + return ConstraintType.EQUAL; } @Override diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/LengthConstraint.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/LengthConstraint.java index d2c8b8c17d..3ed6e7fc50 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/LengthConstraint.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/LengthConstraint.java @@ -68,7 +68,7 @@ public class LengthConstraint extends AbstractPropertyConstraint { @Override public ConstraintType getConstraintType() { - return null; + return ConstraintType.LENGTH; } @Override diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/MaxLengthConstraint.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/MaxLengthConstraint.java index 004e431485..388eb059e6 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/MaxLengthConstraint.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/MaxLengthConstraint.java @@ -62,7 +62,7 @@ public class MaxLengthConstraint extends AbstractPropertyConstraint { @Override public ConstraintType getConstraintType() { - return null; + return ConstraintType.MAX_LENGTH; } @Override diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/PatternConstraint.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/PatternConstraint.java index 1ee96311ec..6ff9524169 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/PatternConstraint.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/PatternConstraint.java @@ -21,6 +21,7 @@ package org.openecomp.sdc.be.model.tosca.constraints; import java.util.regex.Pattern; import javax.validation.constraints.NotNull; +import lombok.Getter; import lombok.NoArgsConstructor; import org.openecomp.sdc.be.datatypes.enums.ConstraintType; import org.openecomp.sdc.be.model.PropertyConstraint; @@ -28,7 +29,6 @@ import org.openecomp.sdc.be.model.tosca.ToscaType; import org.openecomp.sdc.be.model.tosca.constraints.exception.ConstraintFunctionalException; import org.openecomp.sdc.be.model.tosca.constraints.exception.ConstraintViolationException; import org.openecomp.sdc.be.model.tosca.constraints.exception.PropertyConstraintException; -import lombok.Getter; @NoArgsConstructor public class PatternConstraint extends AbstractStringPropertyConstraint { @@ -56,11 +56,12 @@ public class PatternConstraint extends AbstractStringPropertyConstraint { @Override public ConstraintType getConstraintType() { - return null; + return ConstraintType.PATTERN; } @Override public void validateValueOnUpdate(PropertyConstraint newConstraint) throws PropertyConstraintException { + // no need for implementation } @Override |