diff options
Diffstat (limited to 'csarvalidation/src/main/java/org/onap/validation/csar/ValidatorSchemaLoader.java')
-rw-r--r-- | csarvalidation/src/main/java/org/onap/validation/csar/ValidatorSchemaLoader.java | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/csarvalidation/src/main/java/org/onap/validation/csar/ValidatorSchemaLoader.java b/csarvalidation/src/main/java/org/onap/validation/csar/ValidatorSchemaLoader.java new file mode 100644 index 0000000..aa68cfb --- /dev/null +++ b/csarvalidation/src/main/java/org/onap/validation/csar/ValidatorSchemaLoader.java @@ -0,0 +1,142 @@ +/** + * Copyright 2017 Huawei Technologies Co., Ltd. + * + * 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. + */ +package org.onap.validation.csar; + + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.*; +import java.net.URISyntaxException; +import java.net.URL; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.*; +import java.util.stream.Stream; + +import org.apache.commons.io.FilenameUtils; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.scanner.ScannerException; + +public class ValidatorSchemaLoader { + + private static final Logger LOG = LoggerFactory.getLogger(ValidatorSchemaLoader.class); + + // Map of Schema files + private static Map<String, ?> toscaMeta; + private static Map<String, ?> csarentryd; + private static Map<String, ?> mrfYaml; + private static Map<String, ?> mrfManifest; + + // List of configured schemas + static List<String> schemaFileList = new ArrayList<String>(); + + // SOL004 rule files + static HashMap<String, String> optionOneSchema; + static HashMap<String, String> optionTwoSchema; + + public ValidatorSchemaLoader() throws Exception { + + + try { + loadResources(); + } catch ( FileNotFoundException e1) { + LOG.error("Schema file not found or schema repository corrupted"); + + } + } + + + private boolean loadResources() throws FileNotFoundException { + + ClassLoader classLoader = getClass().getClassLoader(); + + final InputStream is = classLoader.getResourceAsStream("./schema/"); + final InputStreamReader isr = new InputStreamReader(is, StandardCharsets.UTF_8); + final BufferedReader br = new BufferedReader(isr); + + + br.lines().filter(Objects::nonNull) + .forEach((String e) -> { + + + File file = new File(getClass().getClassLoader().getResource("schema/"+e.toString()).getFile()); + if (!file.isDirectory() && ( + FilenameUtils.isExtension(file.getName(), "yaml") || + FilenameUtils.isExtension(file.getName(), "mf") || + FilenameUtils.isExtension(file.getName(), "meta"))) { + + Yaml yaml = new Yaml(); + + switch (file.getName()) { + case "TOSCA.meta" : + try { + toscaMeta = (Map<String, ?>) yaml.load(new FileInputStream(file)); + } catch (ScannerException | FileNotFoundException e1) { + LOG.error("Schema files %s format is not as per standard prescribed",file.getName()); + } + break; + case "CSAR.meta" : + try { + csarentryd = (Map<String, ?>) yaml.load(new FileInputStream(file)); + } catch (ScannerException | FileNotFoundException e2) { + LOG.error("Schema files %s format is not as per standard prescribed",file.getName()); + } + break; + case "MRF.yaml" : + try { + mrfYaml = (Map<String, ?>) yaml.load(new FileInputStream(file)); + } catch (ScannerException | FileNotFoundException e2) { + LOG.error("Schema files %s format is not as per standard prescribed",file.getName()); + } + break; + case "MRF.mf" : + try { + mrfManifest = (Map<String, ?>) yaml.load(new FileInputStream(file)); + } catch (ScannerException | FileNotFoundException e2) { + LOG.error("Schema files %s format is not as per standard prescribed",file.getName()); + } + break; + } + } + schemaFileList.add(e); + }); + + return true; + } + + public static Map<String, ?> getToscaMeta() { + return toscaMeta; + } + + public static Map<String, ?> getCsarentryd() { + return csarentryd; + } + + public static Map<String, ?> getMrfYaml() { + return mrfYaml; + } + + public static Map<String, ?> getMrfManifest() { + return mrfManifest; + } + + public static List<String> getSchemaFileList() { + return schemaFileList; + } +}
\ No newline at end of file |