diff options
Diffstat (limited to 'csarvalidation/src/main/java/org')
-rw-r--r-- | csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR816745.java | 37 |
1 files changed, 30 insertions, 7 deletions
diff --git a/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR816745.java b/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR816745.java index a929418..b43dbba 100644 --- a/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR816745.java +++ b/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR816745.java @@ -29,6 +29,7 @@ import org.yaml.snakeyaml.error.YAMLException; import java.nio.file.Path; import java.util.List; import java.util.Map; +import java.util.Optional; @OnapCommandSchema(schema = "vtp-validate-csar-r816745.yaml") public class VTPValidateCSARR816745 extends VTPValidateCSARBase { @@ -65,18 +66,32 @@ public class VTPValidateCSARR816745 extends VTPValidateCSARBase { } private static final String PM_DICTIONARY = "onap_pm_dictionary"; + private static final String SOURCE_ELEMENT_TAG = "Source"; @Override protected void validateCSAR(CSARArchive csar) { Map<String, Map<String, List<String>>> nonManoFields = csar.getManifest().getNonMano(); String rootPath = csar.getWorkspace().getPathToCsarFolder().map(Path::toString).orElse("/"); if (nonManoFields.containsKey(PM_DICTIONARY)) { - validateYamlFile(rootPath+"/",getLocationOfPmDictionaryFile(nonManoFields)); + getLocationOfPmDictionaryFile(nonManoFields, csar.getManifestMfFile().getName()).ifPresent(pmDictionary -> + validateYamlFile(rootPath+"/",pmDictionary) + ); } } - private String getLocationOfPmDictionaryFile(Map<String, Map<String, List<String>>> nonManoFields) { - return nonManoFields.get(PM_DICTIONARY).get("source").get(0); + private Optional<String> getLocationOfPmDictionaryFile(Map<String, Map<String, List<String>>> nonManoFields, String manifestFileName) { + if(nonManoFields.get(PM_DICTIONARY).containsKey(SOURCE_ELEMENT_TAG)) { + return getPathToPmDictionary(nonManoFields, SOURCE_ELEMENT_TAG); + } else if(nonManoFields.get(PM_DICTIONARY).containsKey(SOURCE_ELEMENT_TAG.toLowerCase())) { + return getPathToPmDictionary(nonManoFields, SOURCE_ELEMENT_TAG.toLowerCase()); + } else { + addPmDictionaryLoadingError(manifestFileName, PM_DICTIONARY +" in manifest does not contains key 'Source'"); + return Optional.empty(); + } + } + + private Optional<String> getPathToPmDictionary(Map<String, Map<String, List<String>>> nonManoFields, String sourceElementTag) { + return Optional.ofNullable(nonManoFields.get(PM_DICTIONARY).get(sourceElementTag).get(0)); } private void validateYamlFile(String rootPath, String artifactPath) { @@ -86,14 +101,22 @@ public class VTPValidateCSARR816745 extends VTPValidateCSARBase { addAllErrorsReportedByVaidator(artifactPath, validationErrors); } catch (YamlProcessingException | YAMLException e) { LOGGER.error("Failed to load PM_Dictionary file.", e); - errors.add(new CSARPmDictionaryLoadingError( - artifactPath, - e.getMessage() - )); + addPmDictionaryLoadingError(artifactPath, e); } } + private void addPmDictionaryLoadingError(String artifactPath, Exception e) { + addPmDictionaryLoadingError(artifactPath,e.getMessage()); + } + + private void addPmDictionaryLoadingError(String artifactPath, String message) { + errors.add(new CSARPmDictionaryLoadingError( + artifactPath, + message + )); + } + private void addAllErrorsReportedByVaidator(String artifactPath, List<YamlDocumentValidationError> validationErrors) { for(YamlDocumentValidationError validationError: validationErrors) { addPmDictionaryValidationError(artifactPath, validationError); |