aboutsummaryrefslogtreecommitdiffstats
path: root/common-parameters/src/main
diff options
context:
space:
mode:
authorJim Hahn <jrh3@att.com>2019-06-13 12:34:17 -0400
committerJim Hahn <jrh3@att.com>2019-06-13 16:10:38 -0400
commitfe5d78724f723a451ddc0d7cc41d6fc60092b314 (patch)
tree9913cc94014b3e99774e9ec5e39a7211046a765a /common-parameters/src/main
parentea262e6da52fd4da0733f02998f87aebaf502ddb (diff)
More sonar fixes in policy/common
Note: this does not increase code coverage, but should fix other code issues. Resolved cyclomatic complexity issue in ParameterValidationResult. Refactored duplicate code in GroupValidationResult. Removed IOException from NetworkUtil "throws". Replaced null/empty string tests with StringUtils.isBlank(). Added @FunctionalInterface where needed. Replaced anonymous classes with lambda expressions. Replaced duplicate strings with a constant. Added private constructors for utility classes. Removed sleep() from tests. Removed unused parameter from method call. Made some protected methods private. Compute integrity monitor's state-transition table once. Use for-loop instead of iterator. Moved constructors. Fixed some checkstyle issues (tabs => spaces, trailing spaces). Change-Id: I9a962ca45c4ff3f212c6014da799d06f07b232ef Issue-ID: POLICY-1791 Signed-off-by: Jim Hahn <jrh3@att.com>
Diffstat (limited to 'common-parameters/src/main')
-rw-r--r--common-parameters/src/main/java/org/onap/policy/common/parameters/CommonGroupValidationResult.java137
-rw-r--r--common-parameters/src/main/java/org/onap/policy/common/parameters/GroupMapValidationResult.java98
-rw-r--r--common-parameters/src/main/java/org/onap/policy/common/parameters/GroupValidationResult.java93
-rw-r--r--common-parameters/src/main/java/org/onap/policy/common/parameters/ParameterValidationResult.java35
4 files changed, 189 insertions, 174 deletions
diff --git a/common-parameters/src/main/java/org/onap/policy/common/parameters/CommonGroupValidationResult.java b/common-parameters/src/main/java/org/onap/policy/common/parameters/CommonGroupValidationResult.java
new file mode 100644
index 00000000..f35d1970
--- /dev/null
+++ b/common-parameters/src/main/java/org/onap/policy/common/parameters/CommonGroupValidationResult.java
@@ -0,0 +1,137 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.common.parameters;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * This class holds the result of the validation of a parameter group.
+ */
+public abstract class CommonGroupValidationResult implements ValidationResult {
+
+
+ private final String messagePrefix;
+
+ /**
+ * Validation status for the entire class.
+ */
+ protected ValidationStatus status = ValidationStatus.CLEAN;
+
+ /**
+ * Status message.
+ */
+ protected String message;
+
+ /**
+ * Validation results for each parameter in the group.
+ */
+ protected final Map<String, ValidationResult> validationResultMap = new LinkedHashMap<>();
+
+
+ /**
+ * Constructs the object.
+ *
+ * @param messagePrefix status message prefix
+ */
+ public CommonGroupValidationResult(String messagePrefix) {
+ this.messagePrefix = messagePrefix;
+ this.message = messagePrefix + status.toString();
+ }
+
+ /**
+ * Gets the status of validation.
+ *
+ * @return the status
+ */
+ @Override
+ public ValidationStatus getStatus() {
+ return status;
+ }
+
+ /**
+ * Set the validation result on a parameter group.
+ *
+ * @param status The validation status the parameter group is receiving
+ * @param message The validation message explaining the validation status
+ */
+ @Override
+ public void setResult(ValidationStatus status, String message) {
+ setResult(status);
+ this.message = message;
+ }
+
+ /**
+ * Set the validation result on a parameter group. On a sequence of calls, the most
+ * serious validation status is recorded, assuming the status enum ordinal increase in
+ * order of severity
+ *
+ * @param status The validation status the parameter group is receiving
+ */
+ public void setResult(final ValidationStatus status) {
+ if (this.status.ordinal() < status.ordinal()) {
+ this.status = status;
+ this.message = messagePrefix + status;
+ }
+ }
+
+ /**
+ * Gets the validation result.
+ *
+ * @param initialIndentation the indentation to use on the main result output
+ * @param subIndentation the indentation to use on sub parts of the result output
+ * @param showClean output information on clean fields
+ * @return the result
+ */
+ @Override
+ public String getResult(final String initialIndentation, final String subIndentation, final boolean showClean) {
+ if (status == ValidationStatus.CLEAN && !showClean) {
+ return null;
+ }
+
+ StringBuilder result = new StringBuilder();
+
+ result.append(initialIndentation);
+
+ addGroupTypeName(result);
+
+ result.append(status);
+ result.append(", ");
+ result.append(message);
+ result.append('\n');
+
+ for (ValidationResult fieldResult : validationResultMap.values()) {
+ String msg = fieldResult.getResult(initialIndentation + subIndentation, subIndentation, showClean);
+ if (msg != null) {
+ result.append(msg);
+ }
+ }
+
+ return result.toString();
+ }
+
+ /**
+ * Adds the group type and name to the result string.
+ *
+ * @param result result string
+ */
+ protected abstract void addGroupTypeName(StringBuilder result);
+}
diff --git a/common-parameters/src/main/java/org/onap/policy/common/parameters/GroupMapValidationResult.java b/common-parameters/src/main/java/org/onap/policy/common/parameters/GroupMapValidationResult.java
index 3baacb1f..2a616dba 100644
--- a/common-parameters/src/main/java/org/onap/policy/common/parameters/GroupMapValidationResult.java
+++ b/common-parameters/src/main/java/org/onap/policy/common/parameters/GroupMapValidationResult.java
@@ -1,19 +1,20 @@
/*-
* ============LICENSE_START=======================================================
* Copyright (C) 2018 Ericsson. All rights reserved.
+ * Modifications 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.
- *
+ *
* SPDX-License-Identifier: Apache-2.0
* ============LICENSE_END=========================================================
*/
@@ -21,23 +22,15 @@
package org.onap.policy.common.parameters;
import java.lang.reflect.Field;
-import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
/**
* This class holds the result of the validation of a map of parameter groups.
*/
-public class GroupMapValidationResult implements ValidationResult {
+public class GroupMapValidationResult extends CommonGroupValidationResult {
// The name of the parameter group map
final String mapParameterName;
-
- // Validation status for the entire parameter class
- private ValidationStatus status = ValidationStatus.CLEAN;
- private String message = ParameterConstants.PARAMETER_GROUP_MAP_HAS_STATUS_MESSAGE + status.toString();
-
- // Validation results for each parameter in the group
- private final Map<String, ValidationResult> validationResultMap = new LinkedHashMap<>();
/**
* Constructor, create the group map validation result.
@@ -46,6 +39,8 @@ public class GroupMapValidationResult implements ValidationResult {
* @param mapObject the value of the map parameter field
*/
protected GroupMapValidationResult(final Field field, final Object mapObject) {
+ super(ParameterConstants.PARAMETER_GROUP_MAP_HAS_STATUS_MESSAGE);
+
this.mapParameterName = field.getName();
// Cast the map object to a map of parameter groups keyed by string, we can't type check maps
@@ -73,44 +68,8 @@ public class GroupMapValidationResult implements ValidationResult {
}
/**
- * Gets the status of validation.
- *
- * @return the status
- */
- @Override
- public ValidationStatus getStatus() {
- return status;
- }
-
- /**
- * Set the validation result on on a parameter group.
- *
- * @param status The validation status the field is receiving
- * @param message The validation message explaining the validation status
- */
- @Override
- public void setResult(final ValidationStatus status, final String message) {
- setResult(status);
- this.message = message;
- }
-
- /**
- * Set the validation result on on a parameter group.
- *
- * @param status The validation status the field is receiving
- */
- public void setResult(final ValidationStatus status) {
- // We record the most serious validation status, assuming the status enum ordinals
- // increase in order of severity
- if (this.status.ordinal() < status.ordinal()) {
- this.status = status;
- this.message = ParameterConstants.PARAMETER_GROUP_HAS_STATUS_MESSAGE + status.toString();
- }
- }
-
- /**
* Set the validation result on a parameter map entry.
- *
+ *
* @param entryName The name of the parameter map entry
* @param status The validation status for the entry
* @param message The validation message for the entry
@@ -122,14 +81,14 @@ public class GroupMapValidationResult implements ValidationResult {
}
// Set the status of the parameter group and replace the field result
- validationResult.setResult(status, message);
+ validationResult.setResult(status, message);
this.setResult(status);
}
/**
* Set the validation result on a parameter map entry.
- *
+ *
* @param entryName The name of the parameter map entry
* @param mapEntryValidationResult The validation result for the entry
*/
@@ -144,39 +103,10 @@ public class GroupMapValidationResult implements ValidationResult {
this.setResult(mapEntryValidationResult.getStatus());
}
- /**
- * Gets the validation result.
- *
- * @param initialIndentation the indentation to use on the main result output
- * @param subIndentation the indentation to use on sub parts of the result output
- * @param showClean output information on clean fields
- * @return the result
- */
@Override
- public String getResult(final String initialIndentation, final String subIndentation, final boolean showClean) {
- if (status == ValidationStatus.CLEAN && !showClean) {
- return null;
- }
-
- StringBuilder validationResultBuilder = new StringBuilder();
-
- validationResultBuilder.append(initialIndentation);
- validationResultBuilder.append("parameter group map \"");
- validationResultBuilder.append(mapParameterName);
- validationResultBuilder.append("\" ");
- validationResultBuilder.append(status);
- validationResultBuilder.append(", ");
- validationResultBuilder.append(message);
- validationResultBuilder.append('\n');
-
- for (ValidationResult fieldResult : validationResultMap.values()) {
- String fieldResultMessage = fieldResult.getResult(initialIndentation + subIndentation, subIndentation,
- showClean);
- if (fieldResultMessage != null) {
- validationResultBuilder.append(fieldResultMessage);
- }
- }
-
- return validationResultBuilder.toString();
+ protected void addGroupTypeName(StringBuilder result) {
+ result.append("parameter group map \"");
+ result.append(mapParameterName);
+ result.append("\" ");
}
} \ No newline at end of file
diff --git a/common-parameters/src/main/java/org/onap/policy/common/parameters/GroupValidationResult.java b/common-parameters/src/main/java/org/onap/policy/common/parameters/GroupValidationResult.java
index 6da36c19..3dc01299 100644
--- a/common-parameters/src/main/java/org/onap/policy/common/parameters/GroupValidationResult.java
+++ b/common-parameters/src/main/java/org/onap/policy/common/parameters/GroupValidationResult.java
@@ -1,4 +1,4 @@
-/*
+/*-
* ============LICENSE_START=======================================================
* Copyright (C) 2018 Ericsson. All rights reserved.
* Modifications Copyright (C) 2018-2019 AT&T Intellectual Property. All rights reserved.
@@ -27,33 +27,26 @@ import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
-
import org.apache.commons.lang3.StringUtils;
/**
* This class holds the result of the validation of a parameter group.
*/
-public class GroupValidationResult implements ValidationResult {
+public class GroupValidationResult extends CommonGroupValidationResult {
// The parameter group which the validation result applies
private final ParameterGroup parameterGroup;
- // Validation status for the entire parameter class
- private ValidationStatus status = ValidationStatus.CLEAN;
- private String message = ParameterConstants.PARAMETER_GROUP_HAS_STATUS_MESSAGE + status.toString();
-
- // Validation results for each parameter in the group
- private final Map<String, ValidationResult> validationResultMap = new LinkedHashMap<>();
-
/**
* Constructor, create the field validation result with default arguments.
*
* @param parameterGroup the parameter group being validated
*/
public GroupValidationResult(final ParameterGroup parameterGroup) {
+ super(ParameterConstants.PARAMETER_GROUP_HAS_STATUS_MESSAGE);
+
this.parameterGroup = parameterGroup;
// Parameter group definitions may be optional
@@ -245,42 +238,6 @@ public class GroupValidationResult implements ValidationResult {
}
/**
- * Gets the status of validation.
- *
- * @return the status
- */
- @Override
- public ValidationStatus getStatus() {
- return status;
- }
-
- /**
- * Set the validation result on a parameter group.
- *
- * @param status The validation status the parameter group is receiving
- * @param message The validation message explaining the validation status
- */
- @Override
- public void setResult(ValidationStatus status, String message) {
- setResult(status);
- this.message = message;
- }
-
- /**
- * Set the validation result on a parameter group. On a sequence of calls, the most serious validation status is
- * recorded, assuming the status enum ordinal increase in order of severity
- *
- * @param status The validation status the parameter group is receiving
- */
- public void setResult(final ValidationStatus status) {
- //
- if (this.status.ordinal() < status.ordinal()) {
- this.status = status;
- this.message = ParameterConstants.PARAMETER_GROUP_HAS_STATUS_MESSAGE + status.toString();
- }
- }
-
- /**
* Set the validation result on a parameter in a parameter group.
*
* @param parameterName The name of the parameter
@@ -375,47 +332,19 @@ public class GroupValidationResult implements ValidationResult {
this.setResult(status);
}
- /**
- * Gets the validation result.
- *
- * @param initialIndentation the indentation to use on the main result output
- * @param subIndentation the indentation to use on sub parts of the result output
- * @param showClean output information on clean fields
- * @return the result
- */
@Override
- public String getResult(final String initialIndentation, final String subIndentation, final boolean showClean) {
- if (status == ValidationStatus.CLEAN && !showClean) {
- return null;
- }
-
- StringBuilder validationResultBuilder = new StringBuilder();
-
- validationResultBuilder.append(initialIndentation);
- validationResultBuilder.append("parameter group \"");
+ protected void addGroupTypeName(StringBuilder result) {
+ result.append("parameter group \"");
if (parameterGroup != null) {
- validationResultBuilder.append(parameterGroup.getName());
- validationResultBuilder.append("\" type \"");
- validationResultBuilder.append(parameterGroup.getClass().getCanonicalName());
+ result.append(parameterGroup.getName());
+ result.append("\" type \"");
+ result.append(parameterGroup.getClass().getCanonicalName());
} else {
- validationResultBuilder.append("UNDEFINED");
- }
- validationResultBuilder.append("\" ");
- validationResultBuilder.append(status);
- validationResultBuilder.append(", ");
- validationResultBuilder.append(message);
- validationResultBuilder.append('\n');
-
- for (ValidationResult fieldResult : validationResultMap.values()) {
- String fieldResultMessage = fieldResult.getResult(initialIndentation + subIndentation, subIndentation,
- showClean);
- if (fieldResultMessage != null) {
- validationResultBuilder.append(fieldResultMessage);
- }
+ result.append("UNDEFINED");
}
- return validationResultBuilder.toString();
+ result.append("\" ");
}
diff --git a/common-parameters/src/main/java/org/onap/policy/common/parameters/ParameterValidationResult.java b/common-parameters/src/main/java/org/onap/policy/common/parameters/ParameterValidationResult.java
index 0b66a533..2c367a30 100644
--- a/common-parameters/src/main/java/org/onap/policy/common/parameters/ParameterValidationResult.java
+++ b/common-parameters/src/main/java/org/onap/policy/common/parameters/ParameterValidationResult.java
@@ -61,15 +61,34 @@ public class ParameterValidationResult implements ValidationResult {
}
} else if (parameterValue instanceof Number) {
- Min minAnnot = field.getAnnotation(Min.class);
- if (minAnnot != null && ((Number) parameterValue).longValue() < minAnnot.value()) {
- setResult(ValidationStatus.INVALID, "must be >= " + minAnnot.value());
- }
+ checkMinValue(field, parameterValue);
+ checkMaxValue(field, parameterValue);
+ }
+ }
- Max maxAnnot = field.getAnnotation(Max.class);
- if (maxAnnot != null && ((Number) parameterValue).longValue() > maxAnnot.value()) {
- setResult(ValidationStatus.INVALID, "must be <= " + maxAnnot.value());
- }
+ /**
+ * Checks the minimum value of a field, if it has the "@Min" annotation.
+ *
+ * @param field field whose value is being validated
+ * @param parameterValue field's value
+ */
+ private void checkMinValue(final Field field, final Object parameterValue) {
+ Min minAnnot = field.getAnnotation(Min.class);
+ if (minAnnot != null && ((Number) parameterValue).longValue() < minAnnot.value()) {
+ setResult(ValidationStatus.INVALID, "must be >= " + minAnnot.value());
+ }
+ }
+
+ /**
+ * Checks the maximum value of a field, if it has the "@Max" annotation.
+ *
+ * @param field field whose value is being validated
+ * @param parameterValue field's value
+ */
+ private void checkMaxValue(final Field field, final Object parameterValue) {
+ Max maxAnnot = field.getAnnotation(Max.class);
+ if (maxAnnot != null && ((Number) parameterValue).longValue() > maxAnnot.value()) {
+ setResult(ValidationStatus.INVALID, "must be <= " + maxAnnot.value());
}
}