From d625f8e805c12301e36392d550b4ca8f8cfa3b5f Mon Sep 17 00:00:00 2001 From: Jim Hahn Date: Fri, 23 Mar 2018 14:47:42 -0400 Subject: Add PropertyConfiguration class Added PropertyConfiguration class, which provides for the loading of properties into the fields of a subclass. Annotations are used to identify the field to be loaded and the name of the property from which it is to be loaded. Changed attribute "useDefault" to "emptyOk" so that it only has to be specified when the default value is empty. Reformatted a couple of files. Added setAllFields() method. Added getRawPropertyValue() method so subclasses can change how values are extracted from the property set. Added SpecPropertyConfiguration so controller or session names may be embedded within property names. Fixed some typos. Refactored out generalizeType2(). Changed exception classes to take field name instead of Field object. Modified getValue() to take the field name and class type instead of Field object. Removed or fixed comments in junit tests. Added more junit tests. Changed emptyOk attribute to accept, to facilitate adding other options in the future. Corrected comments on the isEmptyOk() methods. Change-Id: I6b190fea687f87cf512fb3236bfcf40b7adc4566 Issue-ID: POLICY-577 Signed-off-by: Jim Hahn --- .../properties/exception/PropertyException.java | 142 +++++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 utils/src/main/java/org/onap/policy/common/utils/properties/exception/PropertyException.java (limited to 'utils/src/main/java/org/onap/policy/common/utils/properties/exception/PropertyException.java') diff --git a/utils/src/main/java/org/onap/policy/common/utils/properties/exception/PropertyException.java b/utils/src/main/java/org/onap/policy/common/utils/properties/exception/PropertyException.java new file mode 100644 index 00000000..8df4fb8e --- /dev/null +++ b/utils/src/main/java/org/onap/policy/common/utils/properties/exception/PropertyException.java @@ -0,0 +1,142 @@ +/* + * ============LICENSE_START======================================================= + * ONAP Policy Engine - Common Modules + * ================================================================================ + * Copyright (C) 2018 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.utils.properties.exception; + +/** + * Exception associated with a Property. + */ +public class PropertyException extends Exception { + private static final long serialVersionUID = 1L; + + /** + * Name of the property for which the exception was thrown. + */ + private final String propertyName; + + /** + * Name of the field for which the exception was thrown. + */ + private final String fieldName; + + /** + * + * @param propName name of the property causing the exception, or {@code null} + * @param fieldName name of the field causing the exception, or {@code null} + */ + public PropertyException(String propName, String fieldName) { + super(makeMessage(propName, fieldName)); + + this.propertyName = propName; + this.fieldName = fieldName; + } + + /** + * + * @param propnm name of the property causing the exception, or {@code null} + * @param fieldName name of the field causing the exception, or {@code null} + * @param message error message + */ + public PropertyException(String propnm, String fieldName, String message) { + super(makeMessage(propnm, fieldName, message)); + + this.propertyName = propnm; + this.fieldName = fieldName; + } + + /** + * + * @param propnm name of the property causing the exception, or {@code null} + * @param fieldName name of the field causing the exception, or {@code null} + * @param cause cause of the exception + */ + public PropertyException(String propnm, String fieldName, Throwable cause) { + super(makeMessage(propnm, fieldName), cause); + + this.propertyName = propnm; + this.fieldName = fieldName; + } + + /** + * + * @param propnm name of the property causing the exception, or {@code null} + * @param fieldName name of the field causing the exception, or {@code null} + * @param message error message + * @param cause cause of the exception + */ + public PropertyException(String propnm, String fieldName, String message, Throwable cause) { + super(makeMessage(propnm, fieldName, message), cause); + + this.propertyName = propnm; + this.fieldName = fieldName; + } + + /** + * + * @return name of the property for which the exception was thrown, or {@code null} if + * no name was provided + */ + public String getPropertyName() { + return propertyName; + } + + /** + * + * @return name of the field for which the exception was thrown, or {@code null} if no + * field was provided + */ + public String getFieldName() { + return fieldName; + } + + /** + * @param propnm name of the property causing the exception, or {@code null} + * @param fieldName name of the field causing the exception, or {@code null} + * @param message error message, never {@code null} + * @return an error message composed of the three items + */ + private static String makeMessage(String propnm, String fieldName, String message) { + return makeMessage(propnm, fieldName) + ": " + message; + } + + /** + * + * @param propnm name of the property causing the exception, or {@code null} + * @param fieldName name of the field causing the exception, or {@code null} + * @return an error message composed of the two items + */ + private static String makeMessage(String propnm, String fieldName) { + StringBuilder bldr = new StringBuilder(50); + + if (propnm == null) { + bldr.append("property exception"); + + } else { + bldr.append("exception for property " + propnm); + } + + if (fieldName != null) { + bldr.append(" with field " + fieldName); + } + + return bldr.toString(); + } + +} -- cgit 1.2.3-korg