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>
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;
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;
* @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;
}
}
/*-
* ============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.
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;
}
// 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";
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.
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());
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
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
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
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
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
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
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\"");
}
}
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
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