import org.apache.commons.lang3.StringUtils;
import org.onap.policy.common.parameters.BeanValidationResult;
import org.onap.policy.common.parameters.ValidationResult;
+import org.onap.policy.common.parameters.annotations.NotNull;
+import org.onap.policy.models.base.validation.annotations.VerifyKey;
// @formatter:off
/**
private static final Pattern KEY_ID_PATTERN = Pattern.compile(PfKey.KEY_ID_REGEXP);
@EmbeddedId
+ @VerifyKey
+ @NotNull
private PfConceptKey key;
@ManyToMany(cascade = CascadeType.ALL)
@Override
public BeanValidationResult validate(@NonNull String fieldName) {
- BeanValidationResult result = new BeanValidationResult(fieldName, this);
-
- result.addResult(validateKeyNotNull("key", key));
+ BeanValidationResult result = new PfValidator().validateTop(fieldName, this);
result.addResult(validateConceptMap());
return result;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NonNull;
+import org.onap.policy.common.parameters.annotations.Pattern;
import org.onap.policy.common.utils.validation.Assertions;
/**
private static final long serialVersionUID = 8932717618579392561L;
@Column(name = NAME_TOKEN, length = 120)
+ @Pattern(regexp = NAME_REGEXP)
private String name;
@Column(name = VERSION_TOKEN, length = 20)
+ @Pattern(regexp = VERSION_REGEXP)
private String version;
/**
import lombok.Getter;
import lombok.NonNull;
import lombok.ToString;
-import org.onap.policy.common.parameters.BeanValidationResult;
-import org.onap.policy.common.parameters.ValidationResult;
import org.onap.policy.common.utils.validation.Assertions;
/**
}
}
- @Override
- public ValidationResult validate(@NonNull String fieldName) {
- BeanValidationResult result = new BeanValidationResult(fieldName, this);
-
- result.addResult(validateRegex(NAME_TOKEN, getName(), getNameRegEx()));
- result.addResult(validateRegex(VERSION_TOKEN, getVersion(), getVersionRegEx()));
-
- return result;
- }
-
@Override
public void clean() {
setName(getName());
import java.util.List;
import lombok.EqualsAndHashCode;
+import lombok.Getter;
import lombok.NonNull;
import lombok.ToString;
-import org.onap.policy.common.parameters.BeanValidationResult;
-import org.onap.policy.common.parameters.ValidationResult;
+import org.onap.policy.common.parameters.annotations.NotNull;
import org.onap.policy.common.utils.validation.Assertions;
+import org.onap.policy.models.base.validation.annotations.VerifyKey;
/**
* This class records a usage of a key in the system. When the list of keys being used by a concept
public class PfKeyUse extends PfKey {
private static final long serialVersionUID = 2007147220109881705L;
+ @VerifyKey
+ @NotNull
+ @Getter
private PfKey usedKey;
/**
usedKey.clean();
}
- @Override
- public ValidationResult validate(@NonNull String fieldName) {
- BeanValidationResult result = new BeanValidationResult(fieldName, this);
- result.addResult(validateKeyNotNull("usedKey", usedKey));
- return result;
- }
-
@Override
public int compareTo(final PfConcept otherObj) {
Assertions.argumentNotNull(otherObj, "comparison object may not be null");
import org.onap.policy.common.parameters.BeanValidationResult;
import org.onap.policy.common.parameters.ObjectValidationResult;
import org.onap.policy.common.parameters.ValidationStatus;
+import org.onap.policy.common.parameters.annotations.NotNull;
import org.onap.policy.common.utils.validation.Assertions;
+import org.onap.policy.models.base.validation.annotations.VerifyKey;
/**
* This class is the base class for all models in the Policy Framework. All model classes inherit
private static final long serialVersionUID = -771659065637205430L;
@EmbeddedId
+ @VerifyKey
+ @NotNull
private PfConceptKey key;
/**
@Override
public BeanValidationResult validate(@NonNull String fieldName) {
- BeanValidationResult result = new BeanValidationResult(fieldName, this);
-
- result.addResult(validateKeyNotNull("key", key));
+ BeanValidationResult result = new PfValidator().validateTop(fieldName, this);
// Key consistency check
final Set<PfConceptKey> artifactKeySet = new TreeSet<>();
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NonNull;
-import org.onap.policy.common.parameters.BeanValidationResult;
-import org.onap.policy.common.parameters.ValidationResult;
+import org.onap.policy.common.parameters.annotations.NotNull;
+import org.onap.policy.common.parameters.annotations.Pattern;
import org.onap.policy.common.utils.validation.Assertions;
/**
private static final int LOCAL_NAME_FIELD = 3;
@Column(name = PARENT_KEY_NAME, length = 120)
+ @NotNull
+ @Pattern(regexp = NAME_REGEXP)
private String parentKeyName;
@Column(name = PARENT_KEY_VERSION, length = 15)
+ @NotNull
+ @Pattern(regexp = VERSION_REGEXP)
private String parentKeyVersion;
@Column(name = PARENT_LOCAL_NAME, length = 120)
+ @NotNull
+ @Pattern(regexp = LOCAL_NAME_REGEXP)
private String parentLocalName;
@Column(name = LOCAL_NAME, length = 120)
+ @NotNull
+ @Pattern(regexp = LOCAL_NAME_REGEXP)
private String localName;
/**
return this.getParentConceptKey().isNewerThan(otherReferenceKey.getParentConceptKey());
}
- @Override
- public ValidationResult validate(@NonNull String fieldName) {
- BeanValidationResult result = new BeanValidationResult(fieldName, this);
-
- result.addResult(validateRegex(PARENT_KEY_NAME, parentKeyName, NAME_REGEXP));
- result.addResult(validateRegex(PARENT_KEY_VERSION, parentKeyVersion, VERSION_REGEXP));
- result.addResult(validateRegex(PARENT_LOCAL_NAME, parentLocalName, LOCAL_NAME_REGEXP));
- result.addResult(validateRegex(LOCAL_NAME, localName, LOCAL_NAME_REGEXP));
-
- return result;
- }
-
@Override
public void clean() {
parentKeyName = Assertions.validateStringParameter(PARENT_KEY_NAME, parentKeyName, NAME_REGEXP);
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NonNull;
+import org.onap.policy.common.parameters.annotations.Pattern;
import org.onap.policy.common.utils.validation.Assertions;
/**
public static final String WILDCARD_NAME_REGEXP = "^[A-Za-z0-9\\-_\\.]+(?:\\.\\*)?$";
@Column(name = NAME_TOKEN, length = 120)
+ @Pattern(regexp = NAME_REGEXP)
private String name;
@Column(name = VERSION_TOKEN, length = 20)
+ @Pattern(regexp = VERSION_REGEXP)
private String version;
/**
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NonNull;
+import org.onap.policy.common.parameters.annotations.Pattern;
import org.onap.policy.common.utils.validation.Assertions;
@Embeddable
private static final String TIMESTAMP_TOKEN = "timeStamp";
@Column(name = NAME_TOKEN, length = 120)
+ @Pattern(regexp = NAME_REGEXP)
private String name;
@Column(name = VERSION_TOKEN, length = 20)
+ @Pattern(regexp = VERSION_REGEXP)
private String version;
@Column(name = TIMESTAMP_TOKEN)
--- /dev/null
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP
+ * ================================================================================
+ * 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.onap.policy.models.base;
+
+import java.util.Map;
+import org.onap.policy.common.parameters.BeanValidationResult;
+import org.onap.policy.common.parameters.BeanValidator;
+import org.onap.policy.common.parameters.EntryValidator;
+import org.onap.policy.common.parameters.ObjectValidationResult;
+import org.onap.policy.common.parameters.ValidationResult;
+import org.onap.policy.common.parameters.ValidationStatus;
+import org.onap.policy.common.parameters.ValueValidator;
+import org.onap.policy.models.base.validation.annotations.PfEntries;
+import org.onap.policy.models.base.validation.annotations.PfItems;
+import org.onap.policy.models.base.validation.annotations.PfMin;
+import org.onap.policy.models.base.validation.annotations.VerifyKey;
+
+public class PfValidator extends BeanValidator {
+
+ @Override
+ protected void addValidators(ValueValidator validator) {
+ super.addValidators(validator);
+
+ validator.addAnnotation(PfItems.class, this::verCollection);
+ validator.addAnnotation(PfEntries.class, this::verMap);
+ validator.addAnnotation(VerifyKey.class, this::verKey);
+ validator.addAnnotation(PfMin.class, this::verPfMin);
+ }
+
+ /**
+ * Verifies that the value is >= the minimum value.
+ *
+ * @param result where to add the validation result
+ * @param fieldName field whose value is being verified
+ * @param annot annotation against which the value is being verified
+ * @param value value to be verified
+ * @return {@code true} if the next check should be performed, {@code false} otherwise
+ */
+ public boolean verPfMin(BeanValidationResult result, String fieldName, PfMin annot, Object value) {
+ if (!(value instanceof Number)) {
+ return true;
+ }
+
+ Number num = (Number) value;
+ if (num.longValue() == annot.allowed()) {
+ // this value is always allowed
+ return true;
+ }
+
+ return verMin(result, fieldName, annot.value(), value);
+ }
+
+ /**
+ * Validates the items in a Map.
+ *
+ * @param result where to add the validation result
+ * @param fieldName name of the field containing the collection
+ * @param annot validation annotations for individual entries
+ * @param value value to be verified
+ * @return {@code true} if the next check should be performed, {@code false} otherwise
+ */
+ public boolean verMap(BeanValidationResult result, String fieldName, PfEntries annot, Object value) {
+
+ if (!(value instanceof Map)) {
+ return true;
+ }
+
+ EntryValidator entryValidator = makeEntryValidator(annot.key(), annot.value());
+
+ return verMap(result, fieldName, entryValidator, value);
+ }
+
+ /**
+ * Invokes the value's {@link Validated#validate(String) validate()} method, if the
+ * value is of type {@link Validated}.
+ */
+ @Override
+ public boolean verCascade(BeanValidationResult result, String fieldName, Object value) {
+ if (value instanceof Validated) {
+ ValidationResult result2 = ((Validated) value).validate(fieldName);
+ result.addResult(result2);
+ return result2.isValid();
+ }
+
+ return super.verCascade(result, fieldName, value);
+ }
+
+ /**
+ * Validates a key.
+ *
+ * @param result where to add the validation result
+ * @param fieldName name of the field containing the key
+ * @param annot validation annotations for the key
+ * @param value value to be verified
+ * @return {@code true} if the next check should be performed, {@code false} otherwise
+ */
+ public boolean verKey(BeanValidationResult result, String fieldName, VerifyKey annot, Object value) {
+ if (!(value instanceof PfKey)) {
+ return true;
+ }
+
+ PfKey pfkey = (PfKey) value;
+ if (annot.keyNotNull() && pfkey.isNullKey()) {
+ result.addResult(new ObjectValidationResult(fieldName, xlate(pfkey), ValidationStatus.INVALID,
+ Validated.IS_A_NULL_KEY));
+ return false;
+ }
+
+ if (annot.valid()) {
+ verCascade(result, fieldName, value);
+ }
+
+ if (!(pfkey instanceof PfKeyImpl)) {
+ return true;
+ }
+
+ BeanValidationResult result2 = new BeanValidationResult(fieldName, value);
+
+ PfKeyImpl keyimpl = (PfKeyImpl) pfkey;
+
+ if (annot.nameNotNull() && keyimpl.isNullName()) {
+ result2.addResult(new ObjectValidationResult("name", pfkey.getName(), ValidationStatus.INVALID,
+ Validated.IS_NULL));
+ }
+
+ if (annot.versionNotNull() && keyimpl.isNullVersion()) {
+ result2.addResult(new ObjectValidationResult("version", pfkey.getVersion(), ValidationStatus.INVALID,
+ Validated.IS_NULL));
+ }
+
+ if (!result2.isClean()) {
+ result.addResult(result2);
+ }
+
+ return result2.isValid();
+ }
+
+ @Override
+ public Object xlate(Object value) {
+ return (value instanceof PfKey ? ((PfKey) value).getId() : value);
+ }
+}
* Classes that can be validated. This can be used as a super class or as a stand-alone
* utility class.
*/
-public abstract class Validated {
+public class Validated {
public static final String IS_BLANK = "is blank";
public static final String IS_A_NULL_KEY = "is a null key";
public static final String IS_NULL = "is null";
public static final String VALUE_TOKEN = "value";
/**
- * Validates the fields of the object.
+ * Validates the fields of the object. The default method uses a {@link PfValidator}
+ * to validate the object.
*
* @param fieldName name of the field containing this
* @return the result, or {@code null}
*/
- public abstract ValidationResult validate(String fieldName);
+ public BeanValidationResult validate(@NonNull String fieldName) {
+ return new PfValidator().validateTop(fieldName, this);
+ }
/**
* Adds a result indicating that a value is invalid.
--- /dev/null
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP
+ * ================================================================================
+ * 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.onap.policy.models.base.validation.annotations;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ * Validations on entries within a Map.
+ */
+@Retention(RUNTIME)
+@Target(FIELD)
+public @interface PfEntries {
+
+ /**
+ * Validations to perform on each entry's key.
+ */
+ PfItems key();
+
+ /**
+ * Validations to perform on each entry's value.
+ */
+ PfItems value();
+}
--- /dev/null
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP
+ * ================================================================================
+ * 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.onap.policy.models.base.validation.annotations;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+import org.intellij.lang.annotations.Pattern;
+import org.onap.policy.common.parameters.annotations.Max;
+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;
+
+/**
+ * Validations on individual items, typically within a collection.
+ */
+@Retention(RUNTIME)
+@Target(FIELD)
+public @interface PfItems {
+
+ /**
+ * Validates the item is not {@code null}.
+ */
+ NotNull[] notNull() default {};
+
+ /**
+ * Validates the item is not blank.
+ */
+ NotBlank[] notBlank() default {};
+
+ /**
+ * Validates the item matches a regular expression.
+ */
+ Pattern[] pattern() default {};
+
+ /**
+ * Validates the item is not greater than a certain value.
+ */
+ Max[] max() default {};
+
+ /**
+ * Validates the item is not less than a certain value.
+ */
+ Min[] min() default {};
+
+ /**
+ * Validates the item is not less than a certain value.
+ */
+ PfMin[] pfMin() default {};
+
+ /**
+ * Validates the item is valid, using a {@link BeanValidator}.
+ */
+ Valid[] valid() default {};
+
+ /**
+ * Validates a key.
+ */
+ VerifyKey[] key() default {};
+
+}
--- /dev/null
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP
+ * ================================================================================
+ * Copyright (C) 2019 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.onap.policy.models.base.validation.annotations;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ * Same as the "Min" annotation, but allows an extra value that is not in the range.
+ */
+@Retention(RUNTIME)
+@Target(FIELD)
+public @interface PfMin {
+
+ /**
+ * The minimum value allowed.
+ *
+ * @return the minimum value allowed
+ */
+ long value();
+
+ /**
+ * Allowed value.
+ */
+ long allowed();
+}
--- /dev/null
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP
+ * ================================================================================
+ * 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.onap.policy.models.base.validation.annotations;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ * Validates a key.
+ */
+@Retention(RUNTIME)
+@Target(FIELD)
+public @interface VerifyKey {
+
+ /**
+ * Validates that key.isNullKey() is {@code false}.
+ */
+ boolean keyNotNull() default true;
+
+ /**
+ * Validates that key.isNullName() is {@code false}.
+ */
+ boolean nameNotNull() default true;
+
+ /**
+ * Validates that key.isNullVersion() is {@code false}.
+ */
+ boolean versionNotNull() default false;
+
+ /**
+ * Invokes key.validate(), avoiding the need to include the "Valid" annotation. Note:
+ * if this is {@code true}, then the "Valid" annotation should not be specified, as
+ * that would result in duplicate validation checks.
+ */
+ boolean valid() default true;
+}
import lombok.Setter;
import org.junit.Test;
import org.onap.policy.common.parameters.ValidationResult;
+import org.onap.policy.common.parameters.annotations.Pattern;
import org.onap.policy.models.base.PfKey.Compatibility;
import org.onap.policy.models.base.testconcepts.DummyPfKey;
@Setter
@EqualsAndHashCode(callSuper = false)
@NoArgsConstructor
- private static class MyKey extends PfKeyImpl {
+ public static class MyKey extends PfKeyImpl {
private static final long serialVersionUID = 1L;
+ @Pattern(regexp = NAME_REGEXP)
private String name;
+
+ @Pattern(regexp = VERSION_REGEXP)
private String version;
public MyKey(String name, String version) {
private final String text;
@Override
- public ValidationResult validate(String fieldName) {
+ public BeanValidationResult validate(String fieldName) {
if (TEXT.equals(text)) {
return null;
}
- return new ObjectValidationResult(fieldName, text, ValidationStatus.INVALID, NOT_SAME);
+ BeanValidationResult result = new BeanValidationResult(fieldName, this);
+ result.addResult(new ObjectValidationResult(fieldName, text, ValidationStatus.INVALID, NOT_SAME));
+ return result;
}
}
}
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.ValidationResult;
+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.validation.annotations.VerifyKey;
@Data
@EqualsAndHashCode(callSuper = false)
public class DummyPfConcept extends PfConcept implements PfAuthorative<DummyAuthorativeConcept> {
private static final long serialVersionUID = 1L;
+
@EmbeddedId
+ @VerifyKey
+ @NotNull
private PfConceptKey key;
+ @NotBlank
private String description;
description = (description != null ? description.trim() : null);
}
- @Override
- public ValidationResult validate(@NonNull String fieldName) {
- BeanValidationResult result = new BeanValidationResult(fieldName, this);
-
- result.addResult(validateKeyNotNull("key", key));
- result.addResult(validateNotBlank("description", description, false));
-
- return result;
- }
-
@Override
public int compareTo(final PfConcept otherConcept) {
if (otherConcept == null) {
import java.util.Arrays;
import java.util.List;
import lombok.NonNull;
-import org.onap.policy.common.parameters.ValidationResult;
+import org.onap.policy.common.parameters.BeanValidationResult;
import org.onap.policy.models.base.PfConcept;
import org.onap.policy.models.base.PfKey;
}
@Override
- public ValidationResult validate(@NonNull String fieldName) {
+ public BeanValidationResult validate(@NonNull String fieldName) {
return null;
}
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.PfAuthorative;
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;
import org.onap.policy.models.pdp.concepts.Pdp;
import org.onap.policy.models.pdp.enums.PdpHealthStatus;
import org.onap.policy.models.pdp.enums.PdpState;
private static final long serialVersionUID = -357224425637789775L;
@EmbeddedId
+ @VerifyKey
+ @NotNull
private PfReferenceKey key;
@Column
+ @NotNull
private PdpState pdpState;
@Column
+ @NotNull
private PdpHealthStatus healthy;
@Column
+ @NotBlank
private String message;
/**
@Override
public BeanValidationResult validate(@NonNull String fieldName) {
- BeanValidationResult result = new BeanValidationResult(fieldName, this);
+ BeanValidationResult result = super.validate(fieldName);
- result.addResult(validateKeyNotNull("key", key));
result.addResult(validateKeyNotNull("parent of key", key.getParentConceptKey()));
if (PfKey.NULL_KEY_NAME.equals(key.getParentLocalName())) {
addResult(result, "local name of parent of key", key.getParentLocalName(), IS_NULL);
}
- result.addResult(validateNotNull("pdpState", pdpState));
- result.addResult(validateNotNull("healthy", healthy));
- result.addResult(validateNotBlank("message", message, false));
-
return result;
}
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.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.base.validation.annotations.VerifyKey;
import org.onap.policy.models.pdp.concepts.PdpGroup;
import org.onap.policy.models.pdp.concepts.PdpSubGroup;
import org.onap.policy.models.pdp.enums.PdpState;
private static final long serialVersionUID = -357224425637789775L;
@EmbeddedId
+ @VerifyKey
+ @NotNull
private PfConceptKey key;
@Column
+ @NotBlank
private String description;
@Column
+ @NotNull
private PdpState pdpGroupState;
@ElementCollection
+ @Entries(key = @Items(notNull = {@NotNull}, notBlank = {@NotBlank}),
+ value = @Items(notNull = {@NotNull}, notBlank = {@NotBlank}))
private Map<String, String> properties;
// @formatter:off
@JoinColumn(name = "pdpGroupLocalName", referencedColumnName = "localName")
})
// @formatter:on
+ @NotNull
+ @Items(notNull = {@NotNull}, valid = {@Valid})
private List<JpaPdpSubGroup> pdpSubGroups;
/**
}
}
- @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(validateNotNull("pdpGroupState", pdpGroupState));
-
- validateMap(result, "properties", properties, Validated::validateEntryNotBlankNotBlank);
-
- result.addResult(validateNotNull("pdpSubGroups", pdpSubGroups));
- validateList(result, "pdpSubGroups", pdpSubGroups, Validated::validateNotNull);
-
- return result;
- }
-
@Override
public int compareTo(final PfConcept otherConcept) {
if (otherConcept == null) {
import lombok.EqualsAndHashCode;
import lombok.NonNull;
import org.apache.commons.lang3.builder.CompareToBuilder;
-import org.onap.policy.common.parameters.BeanValidationResult;
+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.PfKey;
import org.onap.policy.models.base.PfTimestampKey;
import org.onap.policy.models.base.PfUtils;
+import org.onap.policy.models.base.validation.annotations.VerifyKey;
import org.onap.policy.models.pdp.concepts.PdpEngineWorkerStatistics;
import org.onap.policy.models.pdp.concepts.PdpStatistics;
private static final String NULL_NAME = "NULL";
@EmbeddedId
+ @VerifyKey
+ @NotNull
private PfTimestampKey key;
@Column(length = 120)
return getKey().getKeys();
}
- @Override
- public BeanValidationResult validate(@NonNull String fieldName) {
- BeanValidationResult result = new BeanValidationResult(fieldName, this);
-
- result.addResult(validateKeyNotNull("key", key));
-
- return result;
- }
-
@Override
public void clean() {
key.clean();
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.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.PfAuthorative;
import org.onap.policy.models.base.PfConcept;
import org.onap.policy.models.base.PfConceptKey;
import org.onap.policy.models.base.PfReferenceKey;
import org.onap.policy.models.base.PfSearchableKey;
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.pdp.concepts.Pdp;
import org.onap.policy.models.pdp.concepts.PdpSubGroup;
import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyIdentifier;
private static final long serialVersionUID = -357224425637789775L;
@EmbeddedId
+ @VerifyKey
+ @NotNull
private PfReferenceKey key;
@ElementCollection
+ @NotNull
+ @Items(notNull = {@NotNull}, valid = {@Valid})
private List<PfSearchableKey> supportedPolicyTypes;
@ElementCollection
+ @NotNull
+ @Items(notNull = {@NotNull}, valid = {@Valid})
private List<PfConceptKey> policies;
@Column
+ @Min(0)
private int currentInstanceCount;
@Column
+ @Min(0)
private int desiredInstanceCount;
@ElementCollection
+ @Entries(key = @Items(notNull = {@NotNull}, notBlank = {@NotBlank}),
+ value = @Items(notNull = {@NotNull}, notBlank = {@NotBlank}))
private Map<String, String> properties;
// @formatter:off
}
)
// formatter:on
+ @NotNull
+ @Items(notNull = {@NotNull}, valid = {@Valid})
private List<JpaPdp> pdpInstances;
/**
@Override
public BeanValidationResult validate(@NonNull String fieldName) {
- BeanValidationResult result = new BeanValidationResult(fieldName, this);
+ BeanValidationResult result = super.validate(fieldName);
- result.addResult(validateKeyNotNull("key", key));
result.addResult(validateKeyNotNull("parent of key", key.getParentConceptKey()));
- if (currentInstanceCount < 0) {
- addResult(result, "currentInstanceCount", currentInstanceCount, "is negative");
- }
-
- if (desiredInstanceCount < 0) {
- addResult(result, "desiredInstanceCount", desiredInstanceCount, "is negative");
- }
-
- validateMap(result, "properties", properties, Validated::validateEntryNotBlankNotBlank);
-
- if (supportedPolicyTypes == null || supportedPolicyTypes.isEmpty()) {
+ if (supportedPolicyTypes != null && supportedPolicyTypes.isEmpty()) {
addResult(result, "supportedPolicyTypes", supportedPolicyTypes, "is empty");
- } else {
- validateList(result, "supportedPolicyTypes", supportedPolicyTypes, Validated::validateNotNull);
}
- result.validateNotNull("policies", policies);
- validateList(result, "policies", policies, Validated::validateNotNull);
-
- result.validateNotNull("pdpInstances", pdpInstances);
- validateList(result, "pdpInstances", pdpInstances, Validated::validateNotNull);
-
return result;
}
assertThatThrownBy(() -> {
new PdpProvider().updatePdpSubGroup(pfDao, PDP_GROUP0, existingSubGroup);
}).hasMessageContaining("PDP sub group").hasMessageContaining("desiredInstanceCount")
- .hasMessageContaining("is negative");
+ .hasMessageContaining("below the minimum value");
existingSubGroup.setDesiredInstanceCount(10);
}
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;
/**
@ElementCollection
@Lob
+ @Entries(key = @Items(notNull = {@NotNull}), value = @Items(notNull = {@NotNull}))
private Map<String, String> properties;
@ElementCollection
@Lob
+ @Entries(key = @Items(notNull = {@NotNull}), value = @Items(notNull = {@NotNull}))
private Map<String, String> attributes;
@ElementCollection
+ @PfItems(notNull = {@NotNull}, pfMin = {@PfMin(value = 0, allowed = -1)})
private List<Integer> occurrences;
/**
attributes = PfUtils.mapMap(attributes, String::trim);
}
- @Override
- public BeanValidationResult validate(String fieldName) {
- BeanValidationResult result = super.validate(fieldName);
-
- validateMap(result, "properties", properties, Validated::validateEntryValueNotNull);
- validateMap(result, "attributes", attributes, Validated::validateEntryValueNotNull);
-
- validateList(result, "occurrences", occurrences, validateMin(0, JPA_UNBOUNDED_VALUE, true));
-
- return result;
- }
-
@Override
public int compareTo(final PfConcept otherConcept) {
if (otherConcept == null) {
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.ToscaCapabilityType;
import org.onap.policy.models.tosca.authorative.concepts.ToscaProperty;
import org.onap.policy.models.tosca.utils.ToscaUtils;
@ElementCollection
@Lob
+ @Entries(key = @Items(notNull = {@NotNull}), value = @Items(notNull = {@NotNull}, valid = {@Valid}))
private Map<String, JpaToscaProperty> properties;
/**
result.addResult(validateKeyVersionNotNull("key", getKey()));
- validateMap(result, "properties", properties, Validated::validateEntryValueNotNull);
-
return result;
}
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.ToscaDataType;
import org.onap.policy.models.tosca.authorative.concepts.ToscaProperty;
import org.onap.policy.models.tosca.utils.ToscaUtils;
private static final long serialVersionUID = -3922690413436539164L;
@ElementCollection
+ @Items(notNull = {@NotNull}, valid = {@Valid})
private List<JpaToscaConstraint> constraints;
@ElementCollection
@Lob
+ @Entries(key = @Items(notNull = {@NotNull}), value = @Items(notNull = {@NotNull}, valid = {@Valid}))
private Map<String, JpaToscaProperty> properties;
/**
}
}
- @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) {
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;
/**
private static final long serialVersionUID = -1330661834220739393L;
@EmbeddedId
+ @VerifyKey
+ @NotNull
private PfConceptKey key;
// @formatter:off
@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<String, String> metadata;
@Column
+ @NotBlank
private String description;
private transient T toscaEntity;
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) {
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.
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;
/**
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) {
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;
private static final long serialVersionUID = 8800599637708309945L;
@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
+ @Valid
private JpaToscaServiceTemplates serviceTemplates;
/**
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) {
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;
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;
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<String, String> 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
}
}
- @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) {
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;
@ElementCollection
@Lob
+ @Entries(key = @Items(notNull = {@NotNull}), value = @Items(notNull = {@NotNull}, valid = {@Valid}))
private Map<String, JpaToscaProperty> properties;
@JoinColumns({@JoinColumn(name = "requirementsName", referencedColumnName = "name"),
@JoinColumn(name = "requirementsVersion", referencedColumnName = "version")})
// @formatter:on
+ @Valid
private JpaToscaRequirements requirements;
/**
result.addResult(validateKeyVersionNotNull("key", getKey()));
- validateMap(result, "properties", properties, Validated::validateEntryValueNotNull);
- validateOptional(result, "requirements", requirements);
-
return result;
}
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;
/**
private static final long serialVersionUID = 1675770231921107988L;
@EmbeddedId
+ @VerifyKey
+ @NotNull
private PfReferenceKey key;
@Column
+ @VerifyKey
+ @NotNull
private PfConceptKey type;
@Column
}
}
- @Override
- public BeanValidationResult validate(String fieldName) {
- BeanValidationResult result = new BeanValidationResult(fieldName, this);
-
- result.addResult(validateKeyNotNull("key", key));
- result.addResult(validateKeyNotNull("type", type));
-
- return result;
- }
-
@Override
public int compareTo(final PfConcept otherConcept) {
if (otherConcept == null) {
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.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;
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.base.validation.annotations.VerifyKey;
import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
/**
@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<String, String> properties;
@ElementCollection
+ @Items(notNull = {@NotNull}, valid = {@Valid})
private List<PfConceptKey> targets;
// @formatter:on
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;
}
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;
@ElementCollection
@Lob
+ @Entries(key = @Items(notNull = {@NotNull}), value = @Items(notNull = {@NotNull}, valid = {@Valid}))
private Map<String, JpaToscaProperty> properties;
@ElementCollection
+ @Items(notNull = {@NotNull}, valid = {@Valid})
private List<PfConceptKey> targets;
@ElementCollection
+ @Items(notNull = {@NotNull}, valid = {@Valid})
private List<JpaToscaTrigger> triggers;
/**
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;
}
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;
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;
private static final long serialVersionUID = 1675770231921107988L;
@EmbeddedId
+ @VerifyKey
+ @NotNull
private PfReferenceKey key;
@Column
+ @VerifyKey
+ @NotNull
private PfConceptKey type;
@Column
+ @NotBlank
private String description;
@Column
private boolean required = false;
@Column(name = "default")
+ @NotBlank
private String defaultValue;
@Column
private Status status = Status.SUPPORTED;
@ElementCollection
+ @Items(notNull = {@NotNull}, valid = {@Valid})
private List<JpaToscaConstraint> constraints;
@Column
+ @Valid
private JpaToscaSchemaDefinition entrySchema;
@ElementCollection
metadata = PfUtils.mapMap(metadata, String::trim);
}
- @Override
- public BeanValidationResult validate(@NonNull String fieldName) {
- BeanValidationResult result = new BeanValidationResult(fieldName, this);
-
- result.addResult(validateKeyNotNull("key", key));
- result.addResult(validateKeyNotNull("type", type));
- result.addResult(validateNotBlank("description", description, false));
- result.addResult(validateNotBlank("defaultValue", defaultValue, false));
-
- validateList(result, "constraints", constraints, Validated::validateNotNull);
- validateOptional(result, "entrySchema", entrySchema);
-
- return result;
- }
-
@Override
public int compareTo(final PfConcept otherConcept) {
if (otherConcept == null) {
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.ToscaProperty;
import org.onap.policy.models.tosca.authorative.concepts.ToscaRelationshipType;
import org.onap.policy.models.tosca.utils.ToscaUtils;
@ElementCollection
@Lob
+ @Entries(key = @Items(notNull = {@NotNull}), value = @Items(notNull = {@NotNull}, valid = {@Valid}))
private Map<String, JpaToscaProperty> properties;
/**
result.addResult(validateKeyVersionNotNull("key", getKey()));
- validateMap(result, "properties", properties, Validated::validateEntryValueNotNull);
-
return result;
}
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.ToscaRequirement;
/**
private String relationship;
@ElementCollection
+ @PfItems(notNull = {@NotNull}, pfMin = {@PfMin(value = 0, allowed = -1)})
private List<Integer> occurrences;
@ElementCollection
@Lob
+ @Entries(key = @Items(notNull = {@NotNull}), value = @Items(notNull = {@NotNull}))
private Map<String, String> properties;
/**
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) {
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;
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<JpaToscaConstraint> constraints;
/**
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) {
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;
// @formatter:off
@Column
@SerializedName("tosca_definitions_version")
+ @NotNull
+ @NotBlank
private String toscaDefinitionsVersion;
@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
}
)
@SerializedName("data_types")
+ @Valid
private JpaToscaDataTypes dataTypes;
@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
}
)
@SerializedName("capability_types")
+ @Valid
private JpaToscaCapabilityTypes capabilityTypes;
@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
}
)
@SerializedName("relationship_types")
+ @Valid
private JpaToscaRelationshipTypes relationshipTypes;
@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
}
)
@SerializedName("node_types")
+ @Valid
private JpaToscaNodeTypes nodeTypes;
@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
}
)
@SerializedName("policy_types")
+ @Valid
private JpaToscaPolicyTypes policyTypes;
@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
}
)
@SerializedName("topology_template")
+ @Valid
private JpaToscaTopologyTemplate topologyTemplate;
// @formatter:on
public BeanValidationResult validate(String fieldName) {
BeanValidationResult result = super.validate(fieldName);
- result.addResult(validateNotBlank("toscaDefinitionsVersion", toscaDefinitionsVersion, true));
-
- validateOptional(result, "dataTypes", dataTypes);
- validateOptional(result, "capabilityTypes", capabilityTypes);
- validateOptional(result, "relationshipTypes", relationshipTypes);
- validateOptional(result, "nodeTypes", nodeTypes);
- validateOptional(result, "policyTypes", policyTypes);
- validateOptional(result, "topologyTemplate", topologyTemplate);
-
// No point in validating cross references if the structure of the individual parts are not valid
if (!result.isValid()) {
return result;
import lombok.EqualsAndHashCode;
import lombok.NonNull;
import org.onap.policy.common.parameters.BeanValidationResult;
+import org.onap.policy.common.parameters.annotations.NotNull;
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.PfUtils;
+import org.onap.policy.models.base.validation.annotations.VerifyKey;
/**
* Class to represent the TimeInterval in TOSCA definition.
private static final long serialVersionUID = 9151467029611969980L;
@EmbeddedId
+ @VerifyKey
+ @NotNull
private PfReferenceKey key;
@SerializedName("start_time")
@Override
public BeanValidationResult validate(@NonNull String fieldName) {
- BeanValidationResult result = new BeanValidationResult(fieldName, this);
-
- result.addResult(validateKeyNotNull("key", key));
+ BeanValidationResult result = super.validate(fieldName);
if (startTime == null || startTime.getTime() == 0) {
addResult(result, "startTime", startTime, "is null or zero");
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.models.base.PfAuthorative;
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.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.ToscaNodeTemplate;
import org.onap.policy.models.tosca.authorative.concepts.ToscaParameter;
import org.onap.policy.models.tosca.authorative.concepts.ToscaTopologyTemplate;
public static final String DEFAULT_LOCAL_NAME = "ToscaTopologyTemplateSimple";
@EmbeddedId
+ @VerifyKey
+ @NotNull
private PfReferenceKey key;
@Column(name = "description")
+ @NotBlank
private String description;
// @formatter:off
@ElementCollection
@Lob
+ @Entries(key = @Items(notNull = {@NotNull}), value = @Items(notNull = {@NotNull}, valid = {@Valid}))
private Map<String, JpaToscaParameter> inputs;
@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
}
)
@SerializedName("data_types")
+ @Valid
private JpaToscaNodeTemplates nodeTemplates;
@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
}
)
// @formatter:on
+ @Valid
private JpaToscaPolicies policies;
/**
}
}
- @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);
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.
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
private Duration period;
@Column
+ @Min(0)
private int evaluations = 0;
@Column
+ @NotBlank
private String method;
@Column
+ @NotNull
+ @NotBlank
private String action;
/**
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) {
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);