X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=dcae-analytics-cdap-common%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fdcae%2Fapod%2Fanalytics%2Fcdap%2Fcommon%2Futils%2FValidationUtils.java;fp=dcae-analytics-cdap-common%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fdcae%2Fapod%2Fanalytics%2Fcdap%2Fcommon%2Futils%2FValidationUtils.java;h=5ab2427957fdb150a781554f923e94a56190d231;hb=c489a2eb22484e798c39a978bc8b61821b92322f;hp=0000000000000000000000000000000000000000;hpb=baaecfc19132034168beb64a0c1e7813c7c17c4a;p=dcaegen2%2Fanalytics%2Ftca.git diff --git a/dcae-analytics-cdap-common/src/main/java/org/onap/dcae/apod/analytics/cdap/common/utils/ValidationUtils.java b/dcae-analytics-cdap-common/src/main/java/org/onap/dcae/apod/analytics/cdap/common/utils/ValidationUtils.java new file mode 100644 index 0000000..5ab2427 --- /dev/null +++ b/dcae-analytics-cdap-common/src/main/java/org/onap/dcae/apod/analytics/cdap/common/utils/ValidationUtils.java @@ -0,0 +1,107 @@ +/* + * ===============================LICENSE_START====================================== + * dcae-analytics + * ================================================================================ + * Copyright © 2017 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.dcae.apod.analytics.cdap.common.utils; + + +import org.onap.dcae.apod.analytics.cdap.common.exception.CDAPSettingsException; +import org.onap.dcae.apod.analytics.cdap.common.settings.CDAPAppSettings; +import org.onap.dcae.apod.analytics.cdap.common.validation.CDAPAppSettingsValidator; +import org.onap.dcae.apod.analytics.common.validation.ValidationResponse; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + +import static com.google.common.base.Preconditions.checkNotNull; + +/** + * Utility methods to validate null checks, empty string etc + * + * @author Rajiv Singla . Creation Date: 10/24/2016. + */ +public abstract class ValidationUtils { + + private static final Logger LOG = LoggerFactory.getLogger(ValidationUtils.class); + + private ValidationUtils() { + + } + + /** + * Checks if String is empty. For null string true is returned + * + * @param stringValue string value + * @return returns true is string is empty or null + */ + public static boolean isEmpty(@Nullable final String stringValue) { + return stringValue == null || stringValue.isEmpty() || stringValue.trim().isEmpty(); + } + + + /** + * Checks if String value is present. A null, empty, or blank values of string + * are considered not present. + * + * @param stringValue string value to check if it is present or not + * + * @return true if string value is not null, empty or blank + */ + public static boolean isPresent(@Nullable final String stringValue) { + return !isEmpty(stringValue); + } + + + /** + * Provides common functionality to Validates CDAP App Settings. Throws Runtime exception if validation fails + * + * @param appSettings app Settings e.g. App Config, App Preferences etc + * @param appSettingsValidator app Settings validator + * + * @param Settings type e.g. AppConfig or AppPreferences + * @param Validation Response type + * @param Validator Type + */ + public static , + V extends CDAPAppSettingsValidator> void validateSettings(@Nonnull final T appSettings, + @Nonnull final V appSettingsValidator) { + checkNotNull(appSettings, "App Settings must not be null"); + checkNotNull(appSettingsValidator, "App Settings validator must not be null"); + + final String appSettingsClassName = appSettings.getClass().getSimpleName(); + final String appSettingsClassValidator = appSettingsValidator.getClass().getSimpleName(); + + LOG.debug("Validating App Settings for: {}, with App Settings Validator: {} ", + appSettingsClassName, appSettingsClassValidator); + + final R validationResponse = appSettingsValidator.validateAppSettings(appSettings); + + // If setting validation fails throw an exception + if (validationResponse.hasErrors()) { + throw new CDAPSettingsException( + validationResponse.getAllErrorMessage(), LOG, new IllegalArgumentException()); + } + + LOG.debug("App Settings Validation Successful for app Settings: {} with validator: {}", appSettingsClassName, + appSettingsClassValidator); + } + +}