diff options
Diffstat (limited to 'catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca')
22 files changed, 256 insertions, 66 deletions
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/ToscaPropertyType.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/ToscaPropertyType.java index a0ff4bc09b..2f1372d8bd 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/ToscaPropertyType.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/ToscaPropertyType.java @@ -30,7 +30,7 @@ import org.openecomp.sdc.be.model.tosca.validators.*; */ public enum ToscaPropertyType { - Root("tosca.datatypes.Root", null, null, null, true), + ROOT("tosca.datatypes.Root", null, null, null, true), STRING("string", StringValidator.getInstance(), StringConvertor.getInstance(), ToscaStringConvertor.getInstance()), @@ -84,42 +84,22 @@ public enum ToscaPropertyType { return type; } - public void setType(String type) { - this.type = type; - } - public PropertyTypeValidator getValidator() { return validator; } - public void setValidator(PropertyTypeValidator validator) { - this.validator = validator; - } - public PropertyValueConverter getConverter() { return converter; } - public void setConverter(PropertyValueConverter converter) { - this.converter = converter; - } - public boolean isAbstract() { return isAbstract; } - public void setAbstract(boolean isAbstract) { - this.isAbstract = isAbstract; - } - public ToscaValueConverter getValueConverter() { return valueConverter; } - public void setValueConverter(ToscaValueConverter valueConverter) { - this.valueConverter = valueConverter; - } - public static ToscaPropertyType isValidType(String typeName) { if (typeName == null) { return null; diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/ToscaType.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/ToscaType.java index da1b3c4ce8..87ad62195f 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/ToscaType.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/ToscaType.java @@ -61,7 +61,7 @@ public enum ToscaType { return type; } - public ToscaType getToscaType(String typeName) { + public static ToscaType getToscaType(String typeName) { if (typeName == null) { return null; } @@ -220,8 +220,10 @@ public enum ToscaType { return name().toLowerCase(); } - public static boolean isCollectionType(String type) { - return ToscaPropertyType.MAP.getType().equals(type) - || ToscaPropertyType.LIST.getType().equals(type); - } + public static boolean isCollectionType(String type) { + return ToscaPropertyType.MAP.getType().equals(type) + || ToscaPropertyType.LIST.getType().equals(type); + } + + } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/ConstraintType.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/ConstraintType.java index d1cc766525..bce2a41b98 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/ConstraintType.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/ConstraintType.java @@ -27,7 +27,7 @@ public enum ConstraintType { EQUAL("equal", "equal"), - IN_RANGE("inRange","in_range"), + IN_RANGE("inRange", "in_range"), GREATER_THAN("greaterThan", "greater_than"), 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 206fc3dc82..01d9d3b252 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 @@ -20,12 +20,13 @@ package org.openecomp.sdc.be.model.tosca.constraints; +import org.openecomp.sdc.be.model.PropertyConstraint; import java.io.Serializable; - 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.ConstraintValueDoNotMatchPropertyTypeException; import org.openecomp.sdc.be.model.tosca.constraints.exception.ConstraintViolationException; +import org.openecomp.sdc.be.model.tosca.constraints.exception.PropertyConstraintException; import javax.validation.constraints.NotNull; @@ -71,6 +72,16 @@ public class EqualConstraint extends AbstractPropertyConstraint implements Seria } } + @Override + public ConstraintType getConstraintType() { + return null; + } + + @Override + public void validateValueOnUpdate(PropertyConstraint newConstraint) throws PropertyConstraintException { + + } + private void fail(Object propertyValue) throws ConstraintViolationException { throw new ConstraintViolationException("Equal constraint violation, the reference is <" + constraintValue + "> but the value to compare is <" + propertyValue + ">"); diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/GreaterOrEqualConstraint.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/GreaterOrEqualConstraint.java index 6549bbc432..2b23445452 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/GreaterOrEqualConstraint.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/GreaterOrEqualConstraint.java @@ -20,10 +20,12 @@ package org.openecomp.sdc.be.model.tosca.constraints; +import org.openecomp.sdc.be.model.PropertyConstraint; 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.ConstraintValueDoNotMatchPropertyTypeException; import org.openecomp.sdc.be.model.tosca.constraints.exception.ConstraintViolationException; +import org.openecomp.sdc.be.model.tosca.constraints.exception.PropertyConstraintException; import javax.validation.constraints.NotNull; @@ -42,6 +44,16 @@ public class GreaterOrEqualConstraint extends AbstractComparablePropertyConstrai } @Override + public ConstraintType getConstraintType() { + return ConstraintType.GREATER_OR_EQUAL; + } + + @Override + public void validateValueOnUpdate(PropertyConstraint newConstraint) throws PropertyConstraintException { + + } + + @Override protected void doValidate(Object propertyValue) throws ConstraintViolationException { if (getComparable().compareTo(propertyValue) > 0) { throw new ConstraintViolationException(propertyValue + " <= " + greaterOrEqual); @@ -52,4 +64,13 @@ public class GreaterOrEqualConstraint extends AbstractComparablePropertyConstrai public String getErrorMessage(ToscaType toscaType, ConstraintFunctionalException e, String propertyName) { return getErrorMessage(toscaType, e, propertyName, "%f property value must be >= %f", greaterOrEqual); } + + public String getGreaterOrEqual() { + return greaterOrEqual; + } + + public void setGreaterOrEqual(String greaterOrEqual) { + this.greaterOrEqual = greaterOrEqual; + } + } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/GreaterThanConstraint.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/GreaterThanConstraint.java index a278e8c7b9..e5f0779ed1 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/GreaterThanConstraint.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/GreaterThanConstraint.java @@ -20,10 +20,12 @@ package org.openecomp.sdc.be.model.tosca.constraints; +import org.openecomp.sdc.be.model.PropertyConstraint; 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.ConstraintValueDoNotMatchPropertyTypeException; import org.openecomp.sdc.be.model.tosca.constraints.exception.ConstraintViolationException; +import org.openecomp.sdc.be.model.tosca.constraints.exception.PropertyConstraintException; import javax.validation.constraints.NotNull; @@ -42,6 +44,16 @@ public class GreaterThanConstraint extends AbstractComparablePropertyConstraint } @Override + public ConstraintType getConstraintType() { + return ConstraintType.GREATER_THAN; + } + + @Override + public void validateValueOnUpdate(PropertyConstraint newConstraint) throws PropertyConstraintException { + + } + + @Override protected void doValidate(Object propertyValue) throws ConstraintViolationException { if (getComparable().compareTo(propertyValue) >= 0) { throw new ConstraintViolationException(propertyValue + " < " + greaterThan); diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/InRangeConstraint.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/InRangeConstraint.java index ad3d3525d0..f9b27d4953 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/InRangeConstraint.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/InRangeConstraint.java @@ -21,13 +21,13 @@ package org.openecomp.sdc.be.model.tosca.constraints; import com.google.common.collect.Lists; - +import org.openecomp.sdc.be.model.PropertyConstraint; import java.util.List; - 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.ConstraintValueDoNotMatchPropertyTypeException; import org.openecomp.sdc.be.model.tosca.constraints.exception.ConstraintViolationException; +import org.openecomp.sdc.be.model.tosca.constraints.exception.PropertyConstraintException; import javax.validation.constraints.NotNull; @@ -80,6 +80,16 @@ public class InRangeConstraint extends AbstractPropertyConstraint { } } + @Override + public ConstraintType getConstraintType() { + return ConstraintType.IN_RANGE; + } + + @Override + public void validateValueOnUpdate(PropertyConstraint newConstraint) throws PropertyConstraintException { + + } + @NotNull public String getRangeMinValue() { if (inRange != null) { 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 0c5317b10b..4b1da0ca66 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 @@ -20,12 +20,14 @@ package org.openecomp.sdc.be.model.tosca.constraints; +import org.openecomp.sdc.be.model.PropertyConstraint; +import org.openecomp.sdc.be.model.tosca.ToscaType; +import org.openecomp.sdc.be.model.tosca.constraints.exception.ConstraintViolationException; +import org.openecomp.sdc.be.model.tosca.constraints.exception.PropertyConstraintException; import java.util.List; import java.util.Map; - -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 javax.validation.constraints.NotNull; @@ -65,6 +67,16 @@ public class LengthConstraint extends AbstractPropertyConstraint { } @Override + public ConstraintType getConstraintType() { + return null; + } + + @Override + public void validateValueOnUpdate(PropertyConstraint newConstraint) throws PropertyConstraintException { + + } + + @Override public String getErrorMessage(ToscaType toscaType, ConstraintFunctionalException e, String propertyName) { return getErrorMessage(toscaType, e, propertyName, "%s length must be %s", String.valueOf(length)); } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/LessOrEqualConstraint.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/LessOrEqualConstraint.java index 3f085ec596..c5e252b032 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/LessOrEqualConstraint.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/LessOrEqualConstraint.java @@ -20,10 +20,12 @@ package org.openecomp.sdc.be.model.tosca.constraints; +import org.openecomp.sdc.be.model.PropertyConstraint; 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.ConstraintValueDoNotMatchPropertyTypeException; import org.openecomp.sdc.be.model.tosca.constraints.exception.ConstraintViolationException; +import org.openecomp.sdc.be.model.tosca.constraints.exception.PropertyConstraintException; import javax.validation.constraints.NotNull; @@ -41,6 +43,16 @@ public class LessOrEqualConstraint extends AbstractComparablePropertyConstraint } @Override + public ConstraintType getConstraintType() { + return ConstraintType.LESS_OR_EQUAL; + } + + @Override + public void validateValueOnUpdate(PropertyConstraint newConstraint) throws PropertyConstraintException { + + } + + @Override protected void doValidate(Object propertyValue) throws ConstraintViolationException { if (getComparable().compareTo(propertyValue) < 0) { throw new ConstraintViolationException(propertyValue + " >= " + lessOrEqual); diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/LessThanConstraint.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/LessThanConstraint.java index 01eb6cdc32..55f6774a7f 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/LessThanConstraint.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/LessThanConstraint.java @@ -20,10 +20,12 @@ package org.openecomp.sdc.be.model.tosca.constraints; +import org.openecomp.sdc.be.model.PropertyConstraint; 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.ConstraintValueDoNotMatchPropertyTypeException; import org.openecomp.sdc.be.model.tosca.constraints.exception.ConstraintViolationException; +import org.openecomp.sdc.be.model.tosca.constraints.exception.PropertyConstraintException; import javax.validation.constraints.NotNull; @@ -42,6 +44,16 @@ public class LessThanConstraint extends AbstractComparablePropertyConstraint { } @Override + public ConstraintType getConstraintType() { + return ConstraintType.LESS_THAN; + } + + @Override + public void validateValueOnUpdate(PropertyConstraint newConstraint) throws PropertyConstraintException { + + } + + @Override protected void doValidate(Object propertyValue) throws ConstraintViolationException { if (getComparable().compareTo(propertyValue) <= 0) { throw new ConstraintViolationException(propertyValue + " > " + lessThan); 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 c8fef91ea6..e1ad08faea 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 @@ -20,14 +20,17 @@ package org.openecomp.sdc.be.model.tosca.constraints; -import java.util.List; -import java.util.Map; + import org.openecomp.sdc.be.model.tosca.ToscaType; import org.openecomp.sdc.be.model.tosca.constraints.exception.ConstraintFunctionalException; +import org.openecomp.sdc.be.model.PropertyConstraint; import org.openecomp.sdc.be.model.tosca.constraints.exception.ConstraintViolationException; +import org.openecomp.sdc.be.model.tosca.constraints.exception.PropertyConstraintException; import javax.validation.constraints.NotNull; +import java.util.List; +import java.util.Map; public class MaxLengthConstraint extends AbstractPropertyConstraint { @@ -60,6 +63,18 @@ public class MaxLengthConstraint extends AbstractPropertyConstraint { this.maxLength = maxLength; } + + @Override + public ConstraintType getConstraintType() { + return null; + } + + @Override + public void validateValueOnUpdate(PropertyConstraint newConstraint) throws PropertyConstraintException { + + } + + @Override public void validate(Object propertyValue) throws ConstraintViolationException { if (propertyValue == null) { @@ -77,4 +92,5 @@ public class MaxLengthConstraint extends AbstractPropertyConstraint { public String getErrorMessage(ToscaType toscaType, ConstraintFunctionalException e, String propertyName) { return getErrorMessage(toscaType, e, propertyName, "%s maximum length must be [%s]", String.valueOf(maxLength)); } + } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/MinLengthConstraint.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/MinLengthConstraint.java index 4f55970d79..b4a4255041 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/MinLengthConstraint.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/MinLengthConstraint.java @@ -23,9 +23,11 @@ package org.openecomp.sdc.be.model.tosca.constraints; import java.util.List; import java.util.Map; +import org.openecomp.sdc.be.model.PropertyConstraint; 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 javax.validation.constraints.NotNull; @@ -61,6 +63,16 @@ public class MinLengthConstraint extends AbstractPropertyConstraint { } @Override + public ConstraintType getConstraintType() { + return ConstraintType.MIN_LENGTH; + } + + @Override + public void validateValueOnUpdate(PropertyConstraint newConstraint) throws PropertyConstraintException { + + } + + @Override public void validate(Object propertyValue) throws ConstraintViolationException { if (propertyValue == null) { throw new ConstraintViolationException("Value to validate is null"); @@ -75,4 +87,5 @@ public class MinLengthConstraint extends AbstractPropertyConstraint { public String getErrorMessage(ToscaType toscaType, ConstraintFunctionalException e, String propertyName) { return getErrorMessage(toscaType, e, propertyName, "%s minimum length must be [%s]", String.valueOf(minLength)); } + } 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 d3644c578d..49e40cf9c2 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 @@ -24,7 +24,9 @@ import java.util.regex.Pattern; import org.openecomp.sdc.be.model.tosca.ToscaType; import org.openecomp.sdc.be.model.tosca.constraints.exception.ConstraintFunctionalException; +import org.openecomp.sdc.be.model.PropertyConstraint; import org.openecomp.sdc.be.model.tosca.constraints.exception.ConstraintViolationException; +import org.openecomp.sdc.be.model.tosca.constraints.exception.PropertyConstraintException; import javax.validation.constraints.NotNull; @@ -48,8 +50,20 @@ public class PatternConstraint extends AbstractStringPropertyConstraint { } @Override + public ConstraintType getConstraintType() { + return null; + } + + @Override + public void validateValueOnUpdate(PropertyConstraint newConstraint) throws PropertyConstraintException { + + } + + @Override public String getErrorMessage(ToscaType toscaType, ConstraintFunctionalException e, String propertyName) { return getErrorMessage(toscaType, e, propertyName, "%s property value must match the regular expression %s", pattern); } + + } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/ValidValuesConstraint.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/ValidValuesConstraint.java index 1ddf9c9e0e..2ab0673cfe 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/ValidValuesConstraint.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/ValidValuesConstraint.java @@ -21,22 +21,26 @@ package org.openecomp.sdc.be.model.tosca.constraints; import com.google.common.collect.Sets; - -import java.util.List; -import java.util.Set; - 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.ConstraintValueDoNotMatchPropertyTypeException; import org.openecomp.sdc.be.model.tosca.constraints.exception.ConstraintViolationException; +import org.openecomp.sdc.be.dao.api.ActionStatus; +import org.openecomp.sdc.be.model.PropertyConstraint; +import org.openecomp.sdc.be.model.tosca.constraints.exception.PropertyConstraintException; import javax.validation.constraints.NotNull; +import java.util.List; +import java.util.Set; +import static java.util.stream.Collectors.toList; + public class ValidValuesConstraint extends AbstractPropertyConstraint { @NotNull private List<String> validValues; private Set<Object> validValuesTyped; + private static final String PROPERTY_TYPE_IS = "> property type is <"; public ValidValuesConstraint(List<String> validValues) { this.validValues = validValues; @@ -55,13 +59,43 @@ public class ValidValuesConstraint extends AbstractPropertyConstraint { for (String value : validValues) { if (!propertyType.isValidValue(value)) { throw new ConstraintValueDoNotMatchPropertyTypeException("validValues constraint has invalid value <" - + value + "> property type is <" + propertyType.toString() + ">"); + + value + PROPERTY_TYPE_IS + propertyType.toString() + ">"); } else { validValuesTyped.add(propertyType.convert(value)); } } } + public void validateType(String propertyType) throws ConstraintValueDoNotMatchPropertyTypeException { + ToscaType toscaType= ToscaType.getToscaType(propertyType); + if(toscaType == null){ + throw new ConstraintValueDoNotMatchPropertyTypeException("validValues constraint has invalid values <" + + validValues.toString() + PROPERTY_TYPE_IS + propertyType + ">"); + } + if (validValues == null) { + throw new ConstraintValueDoNotMatchPropertyTypeException( + "validValues constraint has invalid value <> property type is <" + propertyType + ">"); + } + for (String value : validValues) { + if (!toscaType.isValidValue(value)) { + throw new ConstraintValueDoNotMatchPropertyTypeException("validValues constraint has invalid value <" + + value + PROPERTY_TYPE_IS + propertyType + ">"); + } + } + } + + @Override + public void validateValueOnUpdate(PropertyConstraint newConstraint) throws PropertyConstraintException { + if(newConstraint.getConstraintType() == getConstraintType()){ + if(!((ValidValuesConstraint)newConstraint).getValidValues().containsAll(validValues)){ + throw new PropertyConstraintException("Deletion of exists value is not permitted", null, null, ActionStatus.CANNOT_DELETE_VALID_VALUES, getConstraintType().name(), + validValues.stream() + .filter(v->!((ValidValuesConstraint)newConstraint).getValidValues().contains(v)) + .collect(toList()).toString()); + } + } + } + @Override public void validate(Object propertyValue) throws ConstraintViolationException { if (propertyValue == null) { @@ -81,8 +115,14 @@ public class ValidValuesConstraint extends AbstractPropertyConstraint { } @Override + public ConstraintType getConstraintType() { + return ConstraintType.VALID_VALUES; + } + + @Override public String getErrorMessage(ToscaType toscaType, ConstraintFunctionalException e, String propertyName) { return getErrorMessage(toscaType, e, propertyName, "%s valid value must be one of the following: [%s]", String.join(",", validValues)); } + } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/exception/PropertyConstraintException.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/exception/PropertyConstraintException.java new file mode 100644 index 0000000000..3fbf4dd3d4 --- /dev/null +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/exception/PropertyConstraintException.java @@ -0,0 +1,44 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.be.model.tosca.constraints.exception; + +import org.openecomp.sdc.be.dao.api.ActionStatus; +import org.openecomp.sdc.be.model.tosca.constraints.ConstraintUtil; + +public class PropertyConstraintException extends ConstraintFunctionalException { + + private final ActionStatus actionStatus; + private final String[] params; + + public PropertyConstraintException(String message, Throwable cause, ConstraintUtil.ConstraintInformation constraintInformation, ActionStatus actionStatus, String... params) { + super(message, cause, constraintInformation); + this.actionStatus = actionStatus; + this.params = params; + } + + public ActionStatus getActionStatus() { + return actionStatus; + } + + public String[] getParams() { + return params.clone(); + } +} diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/converters/HeatNumberConverter.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/converters/HeatNumberConverter.java index b2237d0f35..187793ee0b 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/converters/HeatNumberConverter.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/converters/HeatNumberConverter.java @@ -20,7 +20,6 @@ package org.openecomp.sdc.be.model.tosca.converters; -import org.onap.sdc.tosca.datatypes.model.ScalarUnitValidator; import org.openecomp.sdc.be.model.DataTypeDefinition; import java.math.BigDecimal; @@ -34,23 +33,17 @@ public class HeatNumberConverter implements PropertyValueConverter { return numberConverter; } - private final ScalarUnitValidator scalarUnitValidator = ScalarUnitValidator.getInstance(); - - private HeatNumberConverter() { } @Override public String convert(String original, String innerType, Map<String, DataTypeDefinition> dataTypes) { + if (original == null || original.isEmpty()) { return null; } - if (scalarUnitValidator.isScalarUnit(original)) { - return original; - } - return new BigDecimal(original).toPlainString(); } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/converters/MapConverter.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/converters/MapConverter.java index f53d95ceaf..3be610ec53 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/converters/MapConverter.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/converters/MapConverter.java @@ -20,6 +20,7 @@ package org.openecomp.sdc.be.model.tosca.converters; +import com.google.common.base.Strings; import com.google.gson.*; import fj.data.Either; import org.apache.commons.lang3.tuple.ImmutablePair; @@ -64,7 +65,7 @@ public class MapConverter implements PropertyValueConverter { public Either<String, Boolean> convertWithErrorResult(String value, String innerType, Map<String, DataTypeDefinition> dataTypes) { - if (value == null || value == "" || innerType == null) { + if (Strings.isNullOrEmpty(value) || innerType == null) { return Either.left(value); } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/converters/ToscaMapValueConverter.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/converters/ToscaMapValueConverter.java index f0b3ca25b9..5bbd38e2ba 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/converters/ToscaMapValueConverter.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/converters/ToscaMapValueConverter.java @@ -124,7 +124,7 @@ public class ToscaMapValueConverter extends ToscaValueBaseConverter implements T private void convertEntry(String innerType, Map<String, DataTypeDefinition> dataTypes, List<PropertyDefinition> allPropertiesRecursive, Map<String, Object> toscaMap, final boolean isScalarF, final ToscaValueConverter innerConverterFinal, Entry<String, JsonElement> e) { - log.debug("try convert element {}", e.getValue()); + log.debug("try convert element "); boolean scalar = false; String propType = null; ToscaValueConverter innerConverterProp = innerConverterFinal; @@ -155,7 +155,7 @@ public class ToscaMapValueConverter extends ToscaValueBaseConverter implements T public Object convertDataTypeToToscaObject(String innerType, Map<String, DataTypeDefinition> dataTypes, ToscaValueConverter innerConverter, final boolean isScalarF, JsonElement entryValue, boolean preserveEmptyValue) { Object convertedValue = null; if (isScalarF && entryValue.isJsonPrimitive()) { - log.debug("try convert scalar value {}", entryValue.getAsString()); + log.debug("try convert scalar value "); if (entryValue.getAsString() == null) { convertedValue = null; } else { diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/converters/ToscaValueBaseConverter.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/converters/ToscaValueBaseConverter.java index e57650b8a6..fd987e8c9c 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/converters/ToscaValueBaseConverter.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/converters/ToscaValueBaseConverter.java @@ -102,7 +102,7 @@ public class ToscaValueBaseConverter { if (elementValue.isJsonPrimitive()) { jsonValue = json2JavaPrimitive(elementValue.getAsJsonPrimitive()); } else { - log.debug("not supported json type {} ", elementValue); + log.debug("not supported json type "); } } } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/validators/HeatNumberValidator.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/validators/HeatNumberValidator.java index ec281c0618..0ae3f74c85 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/validators/HeatNumberValidator.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/validators/HeatNumberValidator.java @@ -20,29 +20,27 @@ package org.openecomp.sdc.be.model.tosca.validators; -import java.util.Map; -import org.onap.sdc.tosca.datatypes.model.ScalarUnitValidator; import org.openecomp.sdc.be.model.DataTypeDefinition; +import java.util.Map; + public class HeatNumberValidator implements PropertyTypeValidator { private static HeatNumberValidator numberValidator = new HeatNumberValidator(); - private final FloatValidator floatValidator = FloatValidator.getInstance(); - private final IntegerValidator integerValidator = IntegerValidator.getInstance(); - private final ScalarUnitValidator scalarUnitValidator = ScalarUnitValidator.getInstance(); + private static FloatValidator floatValidator = FloatValidator.getInstance(); + private static IntegerValidator integerValidator = IntegerValidator.getInstance(); public static HeatNumberValidator getInstance() { return numberValidator; } private HeatNumberValidator() { + } @Override - public boolean isValid(final String value, - final String innerType, - final Map<String, DataTypeDefinition> allDataTypes) { + public boolean isValid(String value, String innerType, Map<String, DataTypeDefinition> allDataTypes) { if (value == null || value.isEmpty()) { return true; @@ -53,15 +51,11 @@ public class HeatNumberValidator implements PropertyTypeValidator { valid = floatValidator.isValid(value, null, allDataTypes); } - if(!valid) { - valid = scalarUnitValidator.isScalarUnit(value); - } - return valid; } @Override - public boolean isValid(final String value, final String innerType) { + public boolean isValid(String value, String innerType) { return isValid(value, innerType, null); } } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/validators/ListValidator.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/validators/ListValidator.java index ed40964614..ac2e6fee73 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/validators/ListValidator.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/validators/ListValidator.java @@ -20,6 +20,7 @@ package org.openecomp.sdc.be.model.tosca.validators; +import com.google.common.base.Strings; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonParser; @@ -50,7 +51,7 @@ public class ListValidator implements PropertyTypeValidator { log.debug("Going to validate value {} with inner type {}", value, innerType); - if (value == null || value == "") { + if (Strings.isNullOrEmpty(value)) { return true; } if (innerType == null) { diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/version/ComparableVersion.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/version/ComparableVersion.java index e3d8cf06f6..b0adb52919 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/version/ComparableVersion.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/version/ComparableVersion.java @@ -190,6 +190,8 @@ public class ComparableVersion implements Comparable<ComparableVersion> { case 'm': value = "milestone"; break; + default: + throw new RuntimeException("Invalid item"); } } this.value = ALIASES.getProperty(value, value); |