diff options
author | Jim Hahn <jrh3@att.com> | 2021-01-06 11:15:45 -0500 |
---|---|---|
committer | Jim Hahn <jrh3@att.com> | 2021-01-06 13:04:34 -0500 |
commit | 8208cc4b1d8855eee3fe59c7a832abccb2a67ed7 (patch) | |
tree | 13676da07d974013935ed2980f7b08a7917bf0c3 /common-parameters/src/main/java/org/onap/policy/common/parameters/Item2Validator.java | |
parent | f9add40e0d87baff4ed56529bc61c31a577dc93d (diff) |
Support annotations on parameterized types
It appears that java.validation allows validation annotations to be used
on the type parameters of Collection and Map classes. Updated the
validation code to support that. Once policy-models has been updated to
use this approach, the original @Items and @Entries annotations will be
deprecated.
Issue-ID: POLICY-2648
Change-Id: Ic953be485ebafc9869f72407518f6549585353c9
Signed-off-by: Jim Hahn <jrh3@att.com>
Diffstat (limited to 'common-parameters/src/main/java/org/onap/policy/common/parameters/Item2Validator.java')
-rw-r--r-- | common-parameters/src/main/java/org/onap/policy/common/parameters/Item2Validator.java | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/common-parameters/src/main/java/org/onap/policy/common/parameters/Item2Validator.java b/common-parameters/src/main/java/org/onap/policy/common/parameters/Item2Validator.java new file mode 100644 index 00000000..c82244d6 --- /dev/null +++ b/common-parameters/src/main/java/org/onap/policy/common/parameters/Item2Validator.java @@ -0,0 +1,71 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP + * ================================================================================ + * Copyright (C) 2021 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.common.parameters; + +import java.lang.annotation.Annotation; +import java.lang.reflect.AnnotatedType; + +/** + * Validator of an "item", which is typically found in a collection, or the key or value + * components of an entry in a Map. + */ +public class Item2Validator extends ValueValidator { + private final AnnotatedType annotatedType; + + /** + * Constructs the object. + * + * @param validator provider of validation methods + * @param annotatedType a type having validation annotations to be + * applied to the item + */ + public Item2Validator(BeanValidator validator, AnnotatedType annotatedType) { + this(validator, annotatedType, true); + } + + /** + * Constructs the object. + * + * @param validator provider of validation methods + * @param annotatedType a type having validation annotations to be + * applied to the item + * @param addValidators {@code true} if to add validators + */ + public Item2Validator(BeanValidator validator, AnnotatedType annotatedType, boolean addValidators) { + this.annotatedType = annotatedType; + + if (addValidators) { + validator.addValidators(this); + } + } + + /** + * Gets an annotation from the field or the class. + * + * @param annotClass annotation class of interest + * @return the annotation, or {@code null} if the {@link #annotatedType} does + * not contain the desired annotation + */ + @Override + public <T extends Annotation> T getAnnotation(Class<T> annotClass) { + return annotatedType.getAnnotation(annotClass); + } +} |