diff options
3 files changed, 15 insertions, 4 deletions
diff --git a/common-parameters/pom.xml b/common-parameters/pom.xml index e22b6ea3..342cb984 100644 --- a/common-parameters/pom.xml +++ b/common-parameters/pom.xml @@ -66,7 +66,6 @@ <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> - <scope>test</scope> </dependency> <dependency> <groupId>org.yaml</groupId> diff --git a/common-parameters/src/main/java/org/onap/policy/common/parameters/FieldValidator.java b/common-parameters/src/main/java/org/onap/policy/common/parameters/FieldValidator.java index 51c5d57f..d441c286 100644 --- a/common-parameters/src/main/java/org/onap/policy/common/parameters/FieldValidator.java +++ b/common-parameters/src/main/java/org/onap/policy/common/parameters/FieldValidator.java @@ -20,6 +20,7 @@ package org.onap.policy.common.parameters; +import com.google.gson.annotations.SerializedName; import java.lang.annotation.Annotation; import java.lang.reflect.AnnotatedParameterizedType; import java.lang.reflect.AnnotatedType; @@ -58,6 +59,11 @@ public class FieldValidator extends ValueValidator { private final Field field; /** + * Name of the field when serialized (i.e., as the client would know it). + */ + private final String serializedName; + + /** * Method to retrieve the field's value. */ private Method accessor; @@ -76,9 +82,13 @@ public class FieldValidator extends ValueValidator { String fieldName = field.getName(); if (fieldName.contains("$")) { + serializedName = fieldName; return; } + SerializedName serAnnot = field.getAnnotation(SerializedName.class); + serializedName = (serAnnot != null ? serAnnot.value() : fieldName); + validator.addValidators(this); addListValidator(validator); addMapValidator(validator); @@ -184,7 +194,7 @@ public class FieldValidator extends ValueValidator { // get the value Object value = getValue(object, accessor); - validateValue(result, field.getName(), value); + validateValue(result, serializedName, value); } /** diff --git a/common-parameters/src/test/java/org/onap/policy/common/parameters/TestFieldValidator.java b/common-parameters/src/test/java/org/onap/policy/common/parameters/TestFieldValidator.java index 29b4b0e3..f8f97494 100644 --- a/common-parameters/src/test/java/org/onap/policy/common/parameters/TestFieldValidator.java +++ b/common-parameters/src/test/java/org/onap/policy/common/parameters/TestFieldValidator.java @@ -23,6 +23,7 @@ package org.onap.policy.common.parameters; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; +import com.google.gson.annotations.SerializedName; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.util.List; @@ -55,6 +56,7 @@ public class TestFieldValidator extends ValidatorUtil { @Getter private Map<@NotBlank String, @Min(1) Integer> intMap; + @SerializedName("annotated_key_map") @Getter private Map<@NotBlank String, Integer> annotatedKeyMap; @@ -205,7 +207,7 @@ public class TestFieldValidator extends ValidatorUtil { annotatedKeyMap = Map.of(" ", -10); validator.validateField(result, this); - assertThat(result.getResult()).contains("blank").doesNotContain("-10"); + assertThat(result.getResult()).contains("annotated_key_map", "blank").doesNotContain("-10"); // only the value is annotated validator = new FieldValidator(bean, TestFieldValidator.class, getField("annotatedValueMap")); @@ -218,7 +220,7 @@ public class TestFieldValidator extends ValidatorUtil { annotatedValueMap = Map.of(" ", -10); validator.validateField(result, this); - assertThat(result.getResult()).doesNotContain("blank").contains("\" \"", "-10"); + assertThat(result.getResult()).doesNotContain("blank").contains("annotatedValueMap", "\" \"", "-10"); } @Test |