Remove GroupValidationResult 82/120982/2
authorJim Hahn <jrh3@att.com>
Tue, 27 Apr 2021 15:39:56 +0000 (11:39 -0400)
committerJim Hahn <jrh3@att.com>
Thu, 29 Apr 2021 15:36:26 +0000 (11:36 -0400)
Removed GroupValidationResult, replacing it with BeanValidationResult.
Modified the ParameterGroup subclasses to use BeanValidator, adding
annotations where needed to trigger the validations that had been
automatically performed by GroupValidationResult.

Issue-ID: POLICY-2059
Change-Id: I039f761745316fea41d63bdc885584c9a9c2bc6e
Signed-off-by: Jim Hahn <jrh3@att.com>
main/src/main/java/org/onap/policy/pdpx/main/parameters/XacmlPdpParameterGroup.java
main/src/main/java/org/onap/policy/pdpx/main/parameters/XacmlPdpParameterHandler.java
main/src/test/java/org/onap/policy/pdpx/main/parameters/TestXacmlPdpParameterGroup.java
main/src/test/java/org/onap/policy/pdpx/main/parameters/TestXacmlPdpParameterHandler.java

index c5b81af..12fec48 100644 (file)
 package org.onap.policy.pdpx.main.parameters;
 
 import lombok.Getter;
-import lombok.Setter;
 import org.apache.commons.lang3.StringUtils;
 import org.onap.policy.common.endpoints.event.comm.bus.internal.BusTopicParams;
 import org.onap.policy.common.endpoints.parameters.RestServerParameters;
 import org.onap.policy.common.endpoints.parameters.TopicParameterGroup;
-import org.onap.policy.common.parameters.GroupValidationResult;
-import org.onap.policy.common.parameters.ParameterGroup;
+import org.onap.policy.common.parameters.BeanValidationResult;
+import org.onap.policy.common.parameters.ParameterGroupImpl;
 import org.onap.policy.common.parameters.ValidationStatus;
-import org.onap.policy.common.utils.validation.ParameterValidationUtils;
+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.Validated;
 
 /**
  * Class to hold all parameters needed for xacml pdp component.
  *
  */
 @Getter
-public class XacmlPdpParameterGroup implements ParameterGroup {
-    private static final String PARAM_REST_SERVER = "restServerParameters";
+@NotNull
+@NotBlank
+public class XacmlPdpParameterGroup extends ParameterGroupImpl {
     private static final String PARAM_POLICY_API = "policyApiParameters";
-    private static final String PARAM_TOPIC_PARAMETER_GROUP = "topicParameterGroup";
-    private static final String PARAM_APPLICATION_PATH = "applicationPath";
-
-    private static final String ERROR_MSG = "must be a non-blank string";
-
-    @Setter
-    private String name;
 
     private String pdpGroup;
     private String pdpType;
+    @Valid
     private RestServerParameters restServerParameters;
+    @Valid
     private BusTopicParams policyApiParameters;
+    @Valid
     private TopicParameterGroup topicParameterGroup;
     private String applicationPath;
 
@@ -64,7 +63,7 @@ public class XacmlPdpParameterGroup implements ParameterGroup {
     public XacmlPdpParameterGroup(final String name, final String pdpGroup, final String pdpType,
             final RestServerParameters restServerParameters, final BusTopicParams policyApiParameters,
             final TopicParameterGroup topicParameterGroup, final String applicationPath) {
-        this.name = name;
+        super(name);
         this.pdpGroup = pdpGroup;
         this.pdpType = pdpType;
         this.restServerParameters = restServerParameters;
@@ -79,43 +78,15 @@ public class XacmlPdpParameterGroup implements ParameterGroup {
      * @return the result of the validation
      */
     @Override
-    public GroupValidationResult validate() {
-        final GroupValidationResult validationResult = new GroupValidationResult(this);
-        if (!ParameterValidationUtils.validateStringParameter(name)) {
-            validationResult.setResult("name", ValidationStatus.INVALID, ERROR_MSG);
-        }
-        if (!ParameterValidationUtils.validateStringParameter(pdpGroup)) {
-            validationResult.setResult("pdpGroup", ValidationStatus.INVALID, ERROR_MSG);
-        }
-        if (!ParameterValidationUtils.validateStringParameter(pdpType)) {
-            validationResult.setResult("pdpType", ValidationStatus.INVALID, ERROR_MSG);
-        }
-        if (restServerParameters == null) {
-            validationResult.setResult(PARAM_REST_SERVER, ValidationStatus.INVALID,
-                    "must have restServerParameters to configure xacml pdp rest server");
-        } else {
-            validationResult.setResult(PARAM_REST_SERVER, restServerParameters.validate());
-        }
-        if (policyApiParameters == null) {
-            validationResult.setResult(PARAM_POLICY_API, ValidationStatus.INVALID,
-                            "must have policyApiParameters to configure xacml pdp rest server");
-        } else if (StringUtils.isBlank(policyApiParameters.getHostname())) {
-            validationResult.setResult(PARAM_POLICY_API, ValidationStatus.INVALID,
-                            "must have hostname to configure xacml pdp api client");
-        }
-        if (topicParameterGroup == null) {
-            validationResult.setResult(PARAM_TOPIC_PARAMETER_GROUP, ValidationStatus.INVALID,
-                    "must have topicParameterGroup to configure xacml pdp topic sink and source");
-        } else {
-            validationResult.setResult(PARAM_TOPIC_PARAMETER_GROUP, topicParameterGroup.validate());
-        }
-        //
-        // Validate the application path directory
-        //
-        if (applicationPath == null || applicationPath.isEmpty()) {
-            validationResult.setResult(PARAM_APPLICATION_PATH, ValidationStatus.INVALID,
-                    "must have application path for applications to store policies and data.");
+    public BeanValidationResult validate() {
+        final BeanValidationResult validationResult = super.validate();
+
+        if (policyApiParameters != null && StringUtils.isBlank(policyApiParameters.getHostname())) {
+            BeanValidationResult sub = new BeanValidationResult(PARAM_POLICY_API, policyApiParameters);
+            sub.addResult("hostname", policyApiParameters.getHostname(), ValidationStatus.INVALID, Validated.IS_NULL);
+            validationResult.addResult(sub);
         }
+
         return validationResult;
     }
 }
index 9aaf3da..aac0575 100644 (file)
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2019, 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.
@@ -23,7 +23,7 @@ package org.onap.policy.pdpx.main.parameters;
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 import java.io.FileReader;
-import org.onap.policy.common.parameters.GroupValidationResult;
+import org.onap.policy.common.parameters.ValidationResult;
 import org.onap.policy.pdpx.main.PolicyXacmlPdpException;
 import org.onap.policy.pdpx.main.startstop.XacmlPdpCommandLineArguments;
 import org.slf4j.Logger;
@@ -69,7 +69,7 @@ public class XacmlPdpParameterHandler {
         }
 
         // validate the parameters
-        final GroupValidationResult validationResult = xacmlPdpParameterGroup.validate();
+        final ValidationResult validationResult = xacmlPdpParameterGroup.validate();
         if (!validationResult.isValid()) {
             String returnMessage =
                     "validation error(s) on parameters from \"" + arguments.getConfigurationFilePath() + "\"\n";
index 1c4cf1d..b2d1cbe 100644 (file)
@@ -36,7 +36,7 @@ import org.junit.rules.TemporaryFolder;
 import org.onap.policy.common.endpoints.event.comm.bus.internal.BusTopicParams;
 import org.onap.policy.common.endpoints.parameters.RestServerParameters;
 import org.onap.policy.common.endpoints.parameters.TopicParameterGroup;
-import org.onap.policy.common.parameters.GroupValidationResult;
+import org.onap.policy.common.parameters.ValidationResult;
 
 /**
  * Class to perform unit test of XacmlPdpParameterGroup.
@@ -67,7 +67,7 @@ public class TestXacmlPdpParameterGroup {
                         new XacmlPdpParameterGroup(CommonTestData.PDPX_PARAMETER_GROUP_NAME,
                                 CommonTestData.PDPX_GROUP, "flavor", restServerParameters, policyApiParameters,
                                 topicParameterGroup, applicationPath.getAbsolutePath());
-        final GroupValidationResult validationResult = pdpxParameters.validate();
+        final ValidationResult validationResult = pdpxParameters.validate();
         assertThat(validationResult.getResult()).isNull();
         assertTrue(validationResult.isValid());
         assertEquals(restServerParameters.getHost(), pdpxParameters.getRestServerParameters().getHost());
@@ -91,11 +91,10 @@ public class TestXacmlPdpParameterGroup {
         final XacmlPdpParameterGroup pdpxParameters = new XacmlPdpParameterGroup(null, CommonTestData.PDPX_GROUP,
                 null, restServerParameters, policyApiParameters, topicParameterGroup,
                 applicationPath.getAbsolutePath());
-        final GroupValidationResult validationResult = pdpxParameters.validate();
+        final ValidationResult validationResult = pdpxParameters.validate();
         assertFalse(validationResult.isValid());
         assertEquals(null, pdpxParameters.getName());
-        assertTrue(validationResult.getResult().contains(
-                "field \"name\" type \"java.lang.String\" value \"null\" INVALID, " + "must be a non-blank string"));
+        assertThat(validationResult.getResult()).contains("\"name\" value \"null\" INVALID, is null");
     }
 
     @Test
@@ -109,11 +108,10 @@ public class TestXacmlPdpParameterGroup {
         final XacmlPdpParameterGroup pdpxParameters = new XacmlPdpParameterGroup("", CommonTestData.PDPX_GROUP,
                 CommonTestData.PDPX_TYPE, restServerParameters, policyApiParameters, topicParameterGroup,
                 applicationPath.getAbsolutePath());
-        final GroupValidationResult validationResult = pdpxParameters.validate();
+        final ValidationResult validationResult = pdpxParameters.validate();
         assertFalse(validationResult.isValid());
         assertEquals("", pdpxParameters.getName());
-        assertTrue(validationResult.getResult().contains(
-                "field \"name\" type \"java.lang.String\" value \"\" INVALID, " + "must be a non-blank string"));
+        assertThat(validationResult.getResult()).contains("\"name\" value \"\" INVALID, is blank");
     }
 
     @Test
@@ -127,12 +125,10 @@ public class TestXacmlPdpParameterGroup {
         final XacmlPdpParameterGroup pdpxParameters =
                 new XacmlPdpParameterGroup(CommonTestData.PDPX_PARAMETER_GROUP_NAME, null, null, restServerParameters,
                         policyApiParameters, topicParameterGroup, applicationPath.getAbsolutePath());
-        final GroupValidationResult validationResult = pdpxParameters.validate();
+        final ValidationResult validationResult = pdpxParameters.validate();
         assertFalse(validationResult.isValid());
         assertEquals(null, pdpxParameters.getPdpGroup());
-        assertTrue(validationResult.getResult()
-                .contains("field \"pdpGroup\" type \"java.lang.String\" value \"null\" INVALID, "
-                        + "must be a non-blank string"));
+        assertThat(validationResult.getResult()).contains("\"pdpGroup\" value \"null\" INVALID, is null");
     }
 
     @Test
@@ -146,12 +142,10 @@ public class TestXacmlPdpParameterGroup {
         final XacmlPdpParameterGroup pdpxParameters =
                 new XacmlPdpParameterGroup(CommonTestData.PDPX_PARAMETER_GROUP_NAME, "", null, restServerParameters,
                         policyApiParameters, topicParameterGroup, applicationPath.getAbsolutePath());
-        final GroupValidationResult validationResult = pdpxParameters.validate();
+        final ValidationResult validationResult = pdpxParameters.validate();
         assertFalse(validationResult.isValid());
         assertEquals("", pdpxParameters.getPdpGroup());
-        assertTrue(validationResult.getResult()
-                .contains("field \"pdpGroup\" type \"java.lang.String\" value \"\" INVALID, "
-                        + "must be a non-blank string"));
+        assertThat(validationResult.getResult()).contains("\"pdpGroup\" value \"\" INVALID, is blank");
     }
 
     @Test
@@ -166,10 +160,9 @@ public class TestXacmlPdpParameterGroup {
                 new XacmlPdpParameterGroup(CommonTestData.PDPX_PARAMETER_GROUP_NAME, CommonTestData.PDPX_GROUP,
                         null, restServerParameters, policyApiParameters,
                         topicParameterGroup, applicationPath.getAbsolutePath());
-        final GroupValidationResult validationResult = pdpxParameters.validate();
+        final ValidationResult validationResult = pdpxParameters.validate();
         assertFalse(validationResult.isValid());
-        assertTrue(validationResult.getResult()
-                .contains("parameter group \"RestServerParameters\""));
+        assertThat(validationResult.getResult()).contains("\"RestServerParameters\"");
     }
 
     @Test
@@ -184,10 +177,9 @@ public class TestXacmlPdpParameterGroup {
                 new XacmlPdpParameterGroup(CommonTestData.PDPX_PARAMETER_GROUP_NAME, CommonTestData.PDPX_GROUP,
                         null, restServerParameters, policyApiParameters,
                         topicParameterGroup, applicationPath.getAbsolutePath());
-        final GroupValidationResult validationResult = pdpxParameters.validate();
+        final ValidationResult validationResult = pdpxParameters.validate();
         assertFalse(validationResult.isValid());
-        assertThat(validationResult.getResult())
-                .contains("field \"policyApiParameters\"");
+        assertThat(validationResult.getResult()).contains("\"policyApiParameters\"");
     }
 
     @Test
@@ -202,9 +194,8 @@ public class TestXacmlPdpParameterGroup {
                 new XacmlPdpParameterGroup(CommonTestData.PDPX_PARAMETER_GROUP_NAME, CommonTestData.PDPX_GROUP,
                         null, restServerParameters, policyApiParameters,
                         topicParameterGroup, applicationPath.getAbsolutePath());
-        final GroupValidationResult validationResult = pdpxParameters.validate();
+        final ValidationResult validationResult = pdpxParameters.validate();
         assertFalse(validationResult.isValid());
-        assertTrue(validationResult.getResult()
-                .contains("parameter group \"TopicParameterGroup\""));
+        assertThat(validationResult.getResult()).contains("\"TopicParameterGroup\"");
     }
 }
index 1b62965..570b431 100644 (file)
@@ -94,18 +94,12 @@ public class TestXacmlPdpParameterHandler {
         noArguments.parse(noArgumentString);
 
         assertThatThrownBy(() -> new XacmlPdpParameterHandler().getParameters(noArguments))
-                .hasMessage("validation error(s) on parameters from \"parameters/NoParameters.json\"\n"
-                        + "parameter group \"null\" type "
-                        + "\"org.onap.policy.pdpx.main.parameters.XacmlPdpParameterGroup\""
-                        + " INVALID, parameter group has status INVALID\n"
-                        + "  field \"name\" type \"java.lang.String\" value \"null\" INVALID, "
-                        + "must be a non-blank string\n"
-                        + "  field \"pdpGroup\" type \"java.lang.String\" value \"null\" INVALID, "
-                        + "must be a non-blank string\n"
-                        + "  field \"pdpType\" type \"java.lang.String\" value \"null\" INVALID, "
-                        + "must be a non-blank string\n"
-                        + "  field \"applicationPath\" type \"java.lang.String\" value \"null\" INVALID, "
-                        + "must have application path for applications to store policies and data.\n");
+                .hasMessageContaining("validation error(s) on parameters from \"parameters/NoParameters.json\"",
+                        "\"XacmlPdpParameterGroup\" INVALID, item has status INVALID",
+                        "\"name\" value \"null\" INVALID, is null",
+                        "\"pdpGroup\" value \"null\" INVALID, is null",
+                        "\"pdpType\" value \"null\" INVALID, is null",
+                        "\"applicationPath\" value \"null\" INVALID, is null");
     }
 
     @Test
@@ -142,20 +136,20 @@ public class TestXacmlPdpParameterHandler {
         arguments.parse(xacmlPdpConfigParameters);
 
         assertThatThrownBy(() -> new XacmlPdpParameterHandler().getParameters(arguments)).hasMessageContaining(
-                "field \"name\" type \"java.lang.String\" value \" \" INVALID, must be a non-blank string");
+                "\"name\" value \" \" INVALID, is blank");
         xacmlPdpConfigParameters[1] = "parameters/XacmlPdpConfigParameters_InvalidPdpGroup.json";
 
         arguments.parse(xacmlPdpConfigParameters);
 
         assertThatThrownBy(() -> new XacmlPdpParameterHandler().getParameters(arguments)).hasMessageContaining(
-                "field \"pdpGroup\" type \"java.lang.String\" value \" \" INVALID, must be a non-blank string");
+                "\"pdpGroup\" value \" \" INVALID, is blank");
 
         xacmlPdpConfigParameters[1] = "parameters/XacmlPdpConfigParameters_InvalidPdpType.json";
 
         arguments.parse(xacmlPdpConfigParameters);
 
         assertThatThrownBy(() -> new XacmlPdpParameterHandler().getParameters(arguments)).hasMessageContaining(
-                "field \"pdpType\" type \"java.lang.String\" value \"\" INVALID, must be a non-blank string");
+                "\"pdpType\" value \"\" INVALID, is blank");
     }
 
     @Test