From 12fce55a66848bcc7f71430324b3a9051b8ce0d4 Mon Sep 17 00:00:00 2001 From: Jim Hahn Date: Fri, 18 Dec 2020 19:01:52 -0500 Subject: Use annotations to do validation Modified models to use annotations instead of function calls for most field validations. Created a few new validation annotations for use within models. Per review comments: - renamed Key to VerifyKey - enhanced VerifyKey to imply "@Valid", unless disabled Issue-ID: POLICY-2648 Change-Id: I2b53f218b0a2ab1ed1f5e278816a3509f1408972 Signed-off-by: Jim Hahn --- .../concepts/JpaToscaCapabilityAssignment.java | 22 +++++------- .../simple/concepts/JpaToscaCapabilityType.java | 8 +++-- .../tosca/simple/concepts/JpaToscaDataType.java | 18 ++++------ .../tosca/simple/concepts/JpaToscaEntityType.java | 29 ++++++--------- .../tosca/simple/concepts/JpaToscaEventFilter.java | 22 +++++------- .../tosca/simple/concepts/JpaToscaModel.java | 12 ++----- .../simple/concepts/JpaToscaNodeTemplate.java | 25 ++++++------- .../tosca/simple/concepts/JpaToscaNodeType.java | 10 +++--- .../tosca/simple/concepts/JpaToscaParameter.java | 17 ++++----- .../tosca/simple/concepts/JpaToscaPolicy.java | 15 +++++--- .../tosca/simple/concepts/JpaToscaPolicyType.java | 12 ++++--- .../tosca/simple/concepts/JpaToscaProperty.java | 30 +++++++--------- .../simple/concepts/JpaToscaRelationshipType.java | 8 +++-- .../tosca/simple/concepts/JpaToscaRequirement.java | 19 ++++------ .../simple/concepts/JpaToscaSchemaDefinition.java | 22 +++++------- .../simple/concepts/JpaToscaServiceTemplate.java | 20 ++++++----- .../simple/concepts/JpaToscaTimeInterval.java | 8 +++-- .../simple/concepts/JpaToscaTopologyTemplate.java | 29 +++++++-------- .../tosca/simple/concepts/JpaToscaTrigger.java | 41 ++++++++++------------ .../concepts/JpaToscaServiceTemplateTest.java | 2 +- 20 files changed, 161 insertions(+), 208 deletions(-) (limited to 'models-tosca') diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaCapabilityAssignment.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaCapabilityAssignment.java index 81c46423a..28e4cdc2a 100644 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaCapabilityAssignment.java +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaCapabilityAssignment.java @@ -34,13 +34,16 @@ import javax.persistence.Table; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NonNull; -import org.onap.policy.common.parameters.BeanValidationResult; +import org.onap.policy.common.parameters.annotations.Entries; +import org.onap.policy.common.parameters.annotations.Items; +import org.onap.policy.common.parameters.annotations.NotNull; import org.onap.policy.common.utils.coder.YamlJsonTranslator; import org.onap.policy.models.base.PfAuthorative; import org.onap.policy.models.base.PfConcept; import org.onap.policy.models.base.PfConceptKey; import org.onap.policy.models.base.PfUtils; -import org.onap.policy.models.base.Validated; +import org.onap.policy.models.base.validation.annotations.PfItems; +import org.onap.policy.models.base.validation.annotations.PfMin; import org.onap.policy.models.tosca.authorative.concepts.ToscaCapabilityAssignment; /** @@ -63,13 +66,16 @@ public class JpaToscaCapabilityAssignment extends JpaToscaEntityType properties; @ElementCollection @Lob + @Entries(key = @Items(notNull = {@NotNull}), value = @Items(notNull = {@NotNull})) private Map attributes; @ElementCollection + @PfItems(notNull = {@NotNull}, pfMin = {@PfMin(value = 0, allowed = -1)}) private List occurrences; /** @@ -158,18 +164,6 @@ public class JpaToscaCapabilityAssignment extends JpaToscaEntityType properties; /** @@ -161,8 +165,6 @@ public class JpaToscaCapabilityType extends JpaToscaEntityType implemen private static final long serialVersionUID = -3922690413436539164L; @ElementCollection + @Items(notNull = {@NotNull}, valid = {@Valid}) private List constraints; @ElementCollection @Lob + @Entries(key = @Items(notNull = {@NotNull}), value = @Items(notNull = {@NotNull}, valid = {@Valid})) private Map properties; /** @@ -163,16 +167,6 @@ public class JpaToscaDataType extends JpaToscaEntityType implemen } } - @Override - public BeanValidationResult validate(String fieldName) { - BeanValidationResult result = super.validate(fieldName); - - validateList(result, "constraints", constraints, Validated::validateNotNull); - validateMap(result, "properties", properties, Validated::validateEntryValueNotNull); - - return result; - } - @Override public int compareTo(final PfConcept otherConcept) { if (otherConcept == null) { diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaEntityType.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaEntityType.java index 169d7f244..de3279ec4 100644 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaEntityType.java +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaEntityType.java @@ -35,13 +35,16 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NonNull; import org.apache.commons.lang3.ObjectUtils; -import org.onap.policy.common.parameters.BeanValidationResult; +import org.onap.policy.common.parameters.annotations.Entries; +import org.onap.policy.common.parameters.annotations.Items; +import org.onap.policy.common.parameters.annotations.NotBlank; +import org.onap.policy.common.parameters.annotations.NotNull; import org.onap.policy.models.base.PfAuthorative; import org.onap.policy.models.base.PfConcept; import org.onap.policy.models.base.PfConceptKey; import org.onap.policy.models.base.PfKey; import org.onap.policy.models.base.PfUtils; -import org.onap.policy.models.base.Validated; +import org.onap.policy.models.base.validation.annotations.VerifyKey; import org.onap.policy.models.tosca.authorative.concepts.ToscaEntity; /** @@ -54,6 +57,8 @@ public class JpaToscaEntityType extends PfConcept impleme private static final long serialVersionUID = -1330661834220739393L; @EmbeddedId + @VerifyKey + @NotNull private PfConceptKey key; // @formatter:off @@ -64,12 +69,16 @@ public class JpaToscaEntityType extends PfConcept impleme @AttributeOverride(name = "version", column = @Column(name = "derived_from_version")) }) + @VerifyKey private PfConceptKey derivedFrom; @ElementCollection + @Entries(key = @Items(notNull = {@NotNull}, notBlank = {@NotBlank}), + value = @Items(notNull = {@NotNull}, notBlank = {@NotBlank})) private Map metadata; @Column + @NotBlank private String description; private transient T toscaEntity; @@ -185,22 +194,6 @@ public class JpaToscaEntityType extends PfConcept impleme description = (description != null ? description.trim() : null); } - @Override - public BeanValidationResult validate(@NonNull String fieldName) { - BeanValidationResult result = new BeanValidationResult(fieldName, this); - - result.addResult(validateKeyNotNull("key", key)); - - if (derivedFrom != null) { - result.addResult(validateKeyNotNull("derivedFrom", derivedFrom)); - } - - validateMap(result, "metadata", metadata, Validated::validateEntryNotBlankNotBlank); - result.addResult(validateNotBlank("description", description, false)); - - return result; - } - @Override public int compareTo(final PfConcept otherConcept) { if (otherConcept == null) { diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaEventFilter.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaEventFilter.java index f0d7b9caa..e879a1305 100644 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaEventFilter.java +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaEventFilter.java @@ -34,11 +34,13 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NonNull; import org.apache.commons.lang3.ObjectUtils; -import org.onap.policy.common.parameters.BeanValidationResult; +import org.onap.policy.common.parameters.annotations.NotBlank; +import org.onap.policy.common.parameters.annotations.NotNull; import org.onap.policy.models.base.PfConcept; import org.onap.policy.models.base.PfConceptKey; import org.onap.policy.models.base.PfKey; import org.onap.policy.models.base.PfReferenceKey; +import org.onap.policy.models.base.validation.annotations.VerifyKey; /** * Class to represent the EventFilter in TOSCA definition. @@ -55,15 +57,21 @@ public class JpaToscaEventFilter extends PfConcept { private static final long serialVersionUID = 8769020537228210247L; @EmbeddedId + @VerifyKey + @NotNull private PfReferenceKey key; @Column + @VerifyKey + @NotNull private PfConceptKey node; @Column + @NotBlank private String requirement; @Column + @NotBlank private String capability; /** @@ -121,18 +129,6 @@ public class JpaToscaEventFilter extends PfConcept { capability = (capability != null ? capability.trim() : capability); } - @Override - public BeanValidationResult validate(@NonNull String fieldName) { - BeanValidationResult result = new BeanValidationResult(fieldName, this); - - result.addResult(validateKeyNotNull("key", key)); - result.addResult(validateKeyNotNull("node", node)); - result.addResult(validateNotBlank("requirement", requirement, false)); - result.addResult(validateNotBlank("capability", capability, false)); - - return result; - } - @Override public int compareTo(final PfConcept otherConcept) { if (otherConcept == null) { diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaModel.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaModel.java index c86c34b92..cd6656b4c 100644 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaModel.java +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaModel.java @@ -32,7 +32,7 @@ import javax.persistence.Table; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NonNull; -import org.onap.policy.common.parameters.BeanValidationResult; +import org.onap.policy.common.parameters.annotations.Valid; import org.onap.policy.models.base.PfConcept; import org.onap.policy.models.base.PfConceptKey; import org.onap.policy.models.base.PfKey; @@ -55,6 +55,7 @@ public class JpaToscaModel extends PfModel { private static final long serialVersionUID = 8800599637708309945L; @OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true) + @Valid private JpaToscaServiceTemplates serviceTemplates; /** @@ -116,15 +117,6 @@ public class JpaToscaModel extends PfModel { serviceTemplates.clean(); } - @Override - public BeanValidationResult validate(String fieldName) { - BeanValidationResult result = super.validate(fieldName); - - result.addResult(serviceTemplates.validate("serviceTemplates")); - - return result; - } - @Override public int compareTo(final PfConcept otherConcept) { if (otherConcept == null) { diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaNodeTemplate.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaNodeTemplate.java index 05aefa797..c2dcab1ec 100644 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaNodeTemplate.java +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaNodeTemplate.java @@ -42,7 +42,11 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NonNull; import org.apache.commons.lang3.ObjectUtils; -import org.onap.policy.common.parameters.BeanValidationResult; +import org.onap.policy.common.parameters.annotations.Entries; +import org.onap.policy.common.parameters.annotations.Items; +import org.onap.policy.common.parameters.annotations.NotBlank; +import org.onap.policy.common.parameters.annotations.NotNull; +import org.onap.policy.common.parameters.annotations.Valid; import org.onap.policy.common.utils.coder.CoderException; import org.onap.policy.common.utils.coder.StandardCoder; import org.onap.policy.models.base.PfAuthorative; @@ -51,7 +55,6 @@ import org.onap.policy.models.base.PfConceptKey; import org.onap.policy.models.base.PfKey; import org.onap.policy.models.base.PfModelRuntimeException; import org.onap.policy.models.base.PfUtils; -import org.onap.policy.models.base.Validated; import org.onap.policy.models.tosca.authorative.concepts.ToscaCapabilityAssignment; import org.onap.policy.models.tosca.authorative.concepts.ToscaNodeTemplate; @@ -70,21 +73,26 @@ public class JpaToscaNodeTemplate extends JpaToscaEntityType private static final StandardCoder STANDARD_CODER = new StandardCoder(); @Column + @NotNull + @NotBlank private String type; @ElementCollection @Lob + @Entries(key = @Items(notNull = {@NotNull}), value = @Items(notNull = {@NotNull})) private Map properties; // formatter:off @OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true) @JoinColumns({@JoinColumn(name = "requirementsName", referencedColumnName = "name"), @JoinColumn(name = "requirementsVersion", referencedColumnName = "version")}) + @Valid private JpaToscaRequirements requirements; @OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true) @JoinColumns({@JoinColumn(name = "capabilitiesName", referencedColumnName = "name"), @JoinColumn(name = "capabilitiesVersion", referencedColumnName = "version")}) + @Valid private JpaToscaCapabilityAssignments capabilities; // @formatter:on @@ -229,19 +237,6 @@ public class JpaToscaNodeTemplate extends JpaToscaEntityType } } - @Override - public BeanValidationResult validate(String fieldName) { - BeanValidationResult result = super.validate(fieldName); - - result.addResult(validateNotBlank("type", type, true)); - - validateMap(result, "properties", properties, Validated::validateEntryValueNotNull); - validateOptional(result, "requirements", requirements); - validateOptional(result, "capabilities", capabilities); - - return result; - } - @Override public int compareTo(final PfConcept otherConcept) { if (otherConcept == null) { diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaNodeType.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaNodeType.java index f39f9b914..0965d8b44 100644 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaNodeType.java +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaNodeType.java @@ -45,13 +45,16 @@ import lombok.NonNull; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.onap.policy.common.parameters.BeanValidationResult; +import org.onap.policy.common.parameters.annotations.Entries; +import org.onap.policy.common.parameters.annotations.Items; +import org.onap.policy.common.parameters.annotations.NotNull; +import org.onap.policy.common.parameters.annotations.Valid; import org.onap.policy.models.base.PfAuthorative; import org.onap.policy.models.base.PfConcept; import org.onap.policy.models.base.PfConceptKey; import org.onap.policy.models.base.PfKey; import org.onap.policy.models.base.PfReferenceKey; import org.onap.policy.models.base.PfUtils; -import org.onap.policy.models.base.Validated; import org.onap.policy.models.tosca.authorative.concepts.ToscaNodeType; import org.onap.policy.models.tosca.authorative.concepts.ToscaProperty; import org.onap.policy.models.tosca.utils.ToscaUtils; @@ -70,6 +73,7 @@ public class JpaToscaNodeType extends JpaToscaEntityType implemen @ElementCollection @Lob + @Entries(key = @Items(notNull = {@NotNull}), value = @Items(notNull = {@NotNull}, valid = {@Valid})) private Map properties; @@ -78,6 +82,7 @@ public class JpaToscaNodeType extends JpaToscaEntityType implemen @JoinColumns({@JoinColumn(name = "requirementsName", referencedColumnName = "name"), @JoinColumn(name = "requirementsVersion", referencedColumnName = "version")}) // @formatter:on + @Valid private JpaToscaRequirements requirements; /** @@ -190,9 +195,6 @@ public class JpaToscaNodeType extends JpaToscaEntityType implemen result.addResult(validateKeyVersionNotNull("key", getKey())); - validateMap(result, "properties", properties, Validated::validateEntryValueNotNull); - validateOptional(result, "requirements", requirements); - return result; } diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaParameter.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaParameter.java index 19e0e5fd5..0348bb1d4 100644 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaParameter.java +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaParameter.java @@ -32,13 +32,14 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NonNull; import org.apache.commons.lang3.StringUtils; -import org.onap.policy.common.parameters.BeanValidationResult; +import org.onap.policy.common.parameters.annotations.NotNull; import org.onap.policy.common.utils.coder.YamlJsonTranslator; import org.onap.policy.models.base.PfAuthorative; import org.onap.policy.models.base.PfConcept; import org.onap.policy.models.base.PfConceptKey; import org.onap.policy.models.base.PfKey; import org.onap.policy.models.base.PfReferenceKey; +import org.onap.policy.models.base.validation.annotations.VerifyKey; import org.onap.policy.models.tosca.authorative.concepts.ToscaParameter; /** @@ -53,9 +54,13 @@ public class JpaToscaParameter extends PfConcept implements PfAuthorative implements P @AttributeOverride(name = "version", column = @Column(name = "type_version")) }) + @VerifyKey + @NotNull private PfConceptKey type; @ElementCollection @Lob + @Entries(key = @Items(notNull = {@NotNull}, notBlank = {@NotBlank}), value = @Items(notNull = {@NotNull})) private Map properties; @ElementCollection + @Items(notNull = {@NotNull}, valid = {@Valid}) private List targets; // @formatter:on @@ -235,10 +244,6 @@ public class JpaToscaPolicy extends JpaToscaEntityType implements P BeanValidationResult result = super.validate(fieldName); result.addResult(validateKeyVersionNotNull("key", getKey())); - result.addResult(validateKeyNotNull("type", type)); - - validateMap(result, "properties", properties, Validated::validateEntryNotBlankNotNull); - validateList(result, "targets", targets, Validated::validateNotNull); return result; } diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicyType.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicyType.java index 665c79d1f..07850f9de 100644 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicyType.java +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicyType.java @@ -41,13 +41,16 @@ import lombok.EqualsAndHashCode; import lombok.NonNull; import org.apache.commons.collections4.CollectionUtils; import org.onap.policy.common.parameters.BeanValidationResult; +import org.onap.policy.common.parameters.annotations.Entries; +import org.onap.policy.common.parameters.annotations.Items; +import org.onap.policy.common.parameters.annotations.NotNull; +import org.onap.policy.common.parameters.annotations.Valid; import org.onap.policy.models.base.PfAuthorative; import org.onap.policy.models.base.PfConcept; import org.onap.policy.models.base.PfConceptKey; import org.onap.policy.models.base.PfKey; import org.onap.policy.models.base.PfReferenceKey; import org.onap.policy.models.base.PfUtils; -import org.onap.policy.models.base.Validated; import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyType; import org.onap.policy.models.tosca.authorative.concepts.ToscaProperty; import org.onap.policy.models.tosca.utils.ToscaUtils; @@ -69,12 +72,15 @@ public class JpaToscaPolicyType extends JpaToscaEntityType impl @ElementCollection @Lob + @Entries(key = @Items(notNull = {@NotNull}), value = @Items(notNull = {@NotNull}, valid = {@Valid})) private Map properties; @ElementCollection + @Items(notNull = {@NotNull}, valid = {@Valid}) private List targets; @ElementCollection + @Items(notNull = {@NotNull}, valid = {@Valid}) private List triggers; /** @@ -192,10 +198,6 @@ public class JpaToscaPolicyType extends JpaToscaEntityType impl result.addResult(validateKeyVersionNotNull("key", getKey())); - validateMap(result, "properties", properties, Validated::validateEntryValueNotNull); - validateList(result, "targets", targets, Validated::validateNotNull); - validateList(result, "triggers", triggers, Validated::validateNotNull); - return result; } diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaProperty.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaProperty.java index a7156bbab..711fcd2cb 100644 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaProperty.java +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaProperty.java @@ -38,7 +38,10 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NonNull; import org.apache.commons.lang3.ObjectUtils; -import org.onap.policy.common.parameters.BeanValidationResult; +import org.onap.policy.common.parameters.annotations.Items; +import org.onap.policy.common.parameters.annotations.NotBlank; +import org.onap.policy.common.parameters.annotations.NotNull; +import org.onap.policy.common.parameters.annotations.Valid; import org.onap.policy.common.utils.coder.YamlJsonTranslator; import org.onap.policy.models.base.PfAuthorative; import org.onap.policy.models.base.PfConcept; @@ -46,7 +49,7 @@ import org.onap.policy.models.base.PfConceptKey; import org.onap.policy.models.base.PfKey; import org.onap.policy.models.base.PfReferenceKey; import org.onap.policy.models.base.PfUtils; -import org.onap.policy.models.base.Validated; +import org.onap.policy.models.base.validation.annotations.VerifyKey; import org.onap.policy.models.tosca.authorative.concepts.ToscaProperty; import org.onap.policy.models.tosca.authorative.concepts.ToscaProperty.Status; @@ -65,27 +68,35 @@ public class JpaToscaProperty extends PfConcept implements PfAuthorative constraints; @Column + @Valid private JpaToscaSchemaDefinition entrySchema; @ElementCollection @@ -239,21 +250,6 @@ public class JpaToscaProperty extends PfConcept implements PfAuthorative properties; /** @@ -158,8 +162,6 @@ public class JpaToscaRelationshipType extends JpaToscaEntityType private String relationship; @ElementCollection + @PfItems(notNull = {@NotNull}, pfMin = {@PfMin(value = 0, allowed = -1)}) private List occurrences; @ElementCollection @Lob + @Entries(key = @Items(notNull = {@NotNull}), value = @Items(notNull = {@NotNull})) private Map properties; /** @@ -195,16 +200,6 @@ public class JpaToscaRequirement extends JpaToscaEntityType properties = PfUtils.mapMap(properties, String::trim); } - @Override - public BeanValidationResult validate(String fieldName) { - BeanValidationResult result = super.validate(fieldName); - - validateMap(result, "properties", properties, Validated::validateEntryValueNotNull); - validateList(result, "occurrences", occurrences, validateMin(0, JPA_UNBOUNDED_VALUE, true)); - - return result; - } - @Override public int compareTo(final PfConcept otherConcept) { if (otherConcept == null) { diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaSchemaDefinition.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaSchemaDefinition.java index bae36299a..1651d1a93 100644 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaSchemaDefinition.java +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaSchemaDefinition.java @@ -33,13 +33,17 @@ import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import lombok.NonNull; import org.apache.commons.lang3.ObjectUtils; -import org.onap.policy.common.parameters.BeanValidationResult; +import org.onap.policy.common.parameters.annotations.Items; +import org.onap.policy.common.parameters.annotations.NotBlank; +import org.onap.policy.common.parameters.annotations.NotNull; +import org.onap.policy.common.parameters.annotations.Valid; import org.onap.policy.common.utils.validation.Assertions; import org.onap.policy.models.base.PfAuthorative; import org.onap.policy.models.base.PfConceptKey; import org.onap.policy.models.base.PfKey; import org.onap.policy.models.base.PfUtils; import org.onap.policy.models.base.Validated; +import org.onap.policy.models.base.validation.annotations.VerifyKey; import org.onap.policy.models.tosca.authorative.concepts.ToscaConstraint; import org.onap.policy.models.tosca.authorative.concepts.ToscaSchemaDefinition; @@ -58,12 +62,16 @@ public class JpaToscaSchemaDefinition extends Validated private static final long serialVersionUID = 3645882081163287058L; @Column + @VerifyKey + @NotNull private PfConceptKey type; @Column + @NotBlank private String description; @ElementCollection + @Items(notNull = {@NotNull}, valid = {@Valid}) private List constraints; /** @@ -143,18 +151,6 @@ public class JpaToscaSchemaDefinition extends Validated description = (description != null ? description.trim() : null); } - @Override - public BeanValidationResult validate(@NonNull String fieldName) { - BeanValidationResult result = new BeanValidationResult(fieldName, this); - - result.addResult(validateKeyNotNull("type", type)); - result.addResult(validateNotBlank("description", description, false)); - - validateList(result, "constraints", constraints, Validated::validateNotNull); - - return result; - } - @Override public int compareTo(final JpaToscaSchemaDefinition other) { if (other == null) { diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaServiceTemplate.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaServiceTemplate.java index d4e51840b..c0a5cdf75 100644 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaServiceTemplate.java +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaServiceTemplate.java @@ -42,6 +42,9 @@ import lombok.EqualsAndHashCode; import lombok.NonNull; import org.apache.commons.lang3.ObjectUtils; import org.onap.policy.common.parameters.BeanValidationResult; +import org.onap.policy.common.parameters.annotations.NotBlank; +import org.onap.policy.common.parameters.annotations.NotNull; +import org.onap.policy.common.parameters.annotations.Valid; import org.onap.policy.models.base.PfAuthorative; import org.onap.policy.models.base.PfConcept; import org.onap.policy.models.base.PfConceptKey; @@ -76,6 +79,8 @@ public class JpaToscaServiceTemplate extends JpaToscaEntityType inputs; @OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true) @@ -89,6 +97,7 @@ public class JpaToscaTopologyTemplate extends PfConcept implements PfAuthorative } ) @SerializedName("data_types") + @Valid private JpaToscaNodeTemplates nodeTemplates; @OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true) @@ -99,6 +108,7 @@ public class JpaToscaTopologyTemplate extends PfConcept implements PfAuthorative } ) // @formatter:on + @Valid private JpaToscaPolicies policies; /** @@ -239,21 +249,6 @@ public class JpaToscaTopologyTemplate extends PfConcept implements PfAuthorative } } - @Override - public BeanValidationResult validate(@NonNull String fieldName) { - BeanValidationResult result = new BeanValidationResult(fieldName, this); - - result.addResult(validateKeyNotNull("key", key)); - result.addResult(validateNotBlank("description", description, false)); - - validateMap(result, "inputs", inputs, Validated::validateEntryValueNotNull); - - validateOptional(result, "nodeTemplates", nodeTemplates); - validateOptional(result, "policies", policies); - - return result; - } - @Override public int compareTo(final PfConcept otherConcept) { int result = compareToWithoutEntities(otherConcept); diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaTrigger.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaTrigger.java index e30754007..677354d8a 100644 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaTrigger.java +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaTrigger.java @@ -36,10 +36,14 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NonNull; import org.apache.commons.lang3.ObjectUtils; -import org.onap.policy.common.parameters.BeanValidationResult; +import org.onap.policy.common.parameters.annotations.Min; +import org.onap.policy.common.parameters.annotations.NotBlank; +import org.onap.policy.common.parameters.annotations.NotNull; +import org.onap.policy.common.parameters.annotations.Valid; import org.onap.policy.models.base.PfConcept; import org.onap.policy.models.base.PfKey; import org.onap.policy.models.base.PfReferenceKey; +import org.onap.policy.models.base.validation.annotations.VerifyKey; /** * Class to represent the trigger of policy type in TOSCA definition. @@ -56,27 +60,36 @@ public class JpaToscaTrigger extends PfConcept { private static final long serialVersionUID = -6515211640208986971L; @EmbeddedId + @VerifyKey + @NotNull private PfReferenceKey key; @Column + @NotBlank private String description; @Column @SerializedName("event_type") + @NotNull + @NotBlank private String eventType; @Column @SerializedName("schedule") + @Valid private JpaToscaTimeInterval schedule; @Column @SerializedName("target_filter") + @Valid private JpaToscaEventFilter targetFilter; @Column + @Valid private JpaToscaConstraint condition; @Column + @Valid private JpaToscaConstraint constraint; @Column @@ -84,12 +97,16 @@ public class JpaToscaTrigger extends PfConcept { private Duration period; @Column + @Min(0) private int evaluations = 0; @Column + @NotBlank private String method; @Column + @NotNull + @NotBlank private String action; /** @@ -173,28 +190,6 @@ public class JpaToscaTrigger extends PfConcept { action = action.trim(); } - @Override - public BeanValidationResult validate(@NonNull String fieldName) { - BeanValidationResult result = new BeanValidationResult(fieldName, this); - - result.addResult(validateKeyNotNull("key", key)); - - result.addResult(validateNotBlank("description", description, false)); - result.addResult(validateNotBlank("eventType", eventType, true)); - - validateOptional(result, "schedule", schedule); - validateOptional(result, "targetFilter", targetFilter); - - if (evaluations < 0) { - addResult(result, "evaluations", evaluations, "is negative"); - } - - result.addResult(validateNotBlank("method", method, false)); - result.addResult(validateNotBlank("action", action, true)); - - return result; - } - @Override public int compareTo(final PfConcept otherConcept) { if (otherConcept == null) { diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaServiceTemplateTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaServiceTemplateTest.java index d6266b49a..8f366b321 100644 --- a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaServiceTemplateTest.java +++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaServiceTemplateTest.java @@ -141,7 +141,7 @@ public class JpaToscaServiceTemplateTest { tst.setToscaDefinitionsVersion(null); BeanValidationResult result = tst.validate(""); - assertThat(result.getResult()).contains("toscaDefinitionsVersion").contains(Validated.IS_BLANK); + assertThat(result.getResult()).contains("toscaDefinitionsVersion").contains(Validated.IS_NULL); tst.setToscaDefinitionsVersion(JpaToscaServiceTemplate.DEFAULT_TOSCA_DEFINTIONS_VERISON); tst.setDataTypes(null); -- cgit 1.2.3-korg