summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvasraz <vasyl.razinkov@est.tech>2022-12-12 15:18:18 +0000
committerMichael Morris <michael.morris@est.tech>2022-12-14 15:49:17 +0000
commit7a3dcaaba77cf6ab3212db9ce7539ee90cb33eab (patch)
treeaa48d62bd5962a76d707f19093c2cb69d1872f8c
parented4d851990393a1863b82b6c15484d5250897707 (diff)
Fix bug 'Pattern constraint validation failure'
Signed-off-by: Vasyl Razinkov <vasyl.razinkov@est.tech> Change-Id: If7c59aa37db974c57195775f963c8400cf474a51 Issue-ID: SDC-4294
-rw-r--r--catalog-be/src/main/java/org/openecomp/sdc/be/tosca/PropertyConvertor.java20
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/PropertyOperation.java23
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/EqualConstraint.java2
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/LengthConstraint.java2
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/MaxLengthConstraint.java2
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/PatternConstraint.java5
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