X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=cps-service%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fcps%2Futils%2FCmHandleQueryRestParametersValidator.java;h=7fe47be2da0e16b38a49d64320e7b098ed08c5c2;hb=82a550f6b080cb50912d93f7b13ba0fc97a95470;hp=c3811eb4858ac3ad907d0644e8796b8455214e8c;hpb=054873c7c52bdb9fae718a0d7651d57b1a995dfc;p=cps.git diff --git a/cps-service/src/main/java/org/onap/cps/utils/CmHandleQueryRestParametersValidator.java b/cps-service/src/main/java/org/onap/cps/utils/CmHandleQueryRestParametersValidator.java index c3811eb48..7fe47be2d 100644 --- a/cps-service/src/main/java/org/onap/cps/utils/CmHandleQueryRestParametersValidator.java +++ b/cps-service/src/main/java/org/onap/cps/utils/CmHandleQueryRestParametersValidator.java @@ -22,18 +22,17 @@ package org.onap.cps.utils; import com.google.common.base.Strings; import java.util.Arrays; -import java.util.List; import java.util.Map; import lombok.AccessLevel; import lombok.NoArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.onap.cps.spi.exceptions.DataValidationException; import org.onap.cps.spi.model.CmHandleQueryServiceParameters; +@Slf4j @NoArgsConstructor(access = AccessLevel.PRIVATE) public class CmHandleQueryRestParametersValidator { - private static final List VALID_PROPERTY_NAMES = Arrays.asList("hasAllProperties", "hasAllModules"); - /** * Validate cm handle query parameters. * @param cmHandleQueryServiceParameters name of data to be validated @@ -45,7 +44,8 @@ public class CmHandleQueryRestParametersValidator { if (Strings.isNullOrEmpty(conditionApiProperty.getConditionName())) { throwDataValidationException("Missing 'conditionName' - please supply a valid name."); } - if (!VALID_PROPERTY_NAMES.contains(conditionApiProperty.getConditionName())) { + if (Arrays.stream(ValidQueryProperties.values()).noneMatch(validQueryProperty -> + validQueryProperty.getQueryProperty().equals(conditionApiProperty.getConditionName()))) { throwDataValidationException( String.format("Wrong 'conditionName': %s - please supply a valid name.", conditionApiProperty.getConditionName())); @@ -89,6 +89,34 @@ public class CmHandleQueryRestParametersValidator { throwDataValidationException("Wrong module condition property. - please supply a valid condition property."); } + /** + * Validate CPS path condition properties. + * @param conditionProperty name of data to be validated + */ + public static boolean validateCpsPathConditionProperties(final Map conditionProperty) { + if (conditionProperty.isEmpty()) { + return true; + } + if (conditionProperty.size() > 1) { + throwDataValidationException("Only one condition property is allowed for the CPS path query."); + } + if (!conditionProperty.containsKey("cpsPath")) { + throwDataValidationException( + "Wrong CPS path condition property. - expecting \"cpsPath\" as the condition property."); + } + final String cpsPath = conditionProperty.get("cpsPath"); + if (cpsPath.isBlank()) { + throwDataValidationException( + "Wrong CPS path. - please supply a valid CPS path."); + } + if (cpsPath.contains("/additional-properties")) { + log.debug("{} - Private metadata cannot be queried. Nothing to be returned", + cpsPath); + return false; + } + return true; + } + private static void throwDataValidationException(final String details) { throw new DataValidationException("Invalid Query Parameter.", details); }