summaryrefslogtreecommitdiffstats
path: root/csarvalidation/src/main
diff options
context:
space:
mode:
authorBartosz Gardziejewski <bartosz.gardziejewski@nokia.com>2020-06-30 10:25:34 +0200
committerBartosz Gardziejewski <bartosz.gardziejewski@nokia.com>2020-06-30 15:01:54 +0200
commitd09497c661ecba8f3dbd2c4d82ba03a48d52efbe (patch)
tree1e503ac7afdf85c798ccfb3245df148d8cd68f5d /csarvalidation/src/main
parent4d94d239aa4f768f5348ac11401fa63d986f963d (diff)
Add multi document Yaml file loading
Issue-ID: VNFSDK-594 Signed-off-by: Bartosz Gardziejewski <bartosz.gardziejewski@nokia.com> Change-Id: Ic4feb908b57bd6ff4f2903559dbc5b92836e2c33
Diffstat (limited to 'csarvalidation/src/main')
-rw-r--r--csarvalidation/src/main/java/org/onap/validation/yaml/YamlLoader.java51
-rw-r--r--csarvalidation/src/main/java/org/onap/validation/yaml/model/YamlDocument.java35
-rw-r--r--csarvalidation/src/main/java/org/onap/validation/yaml/model/YamlDocumentFactory.java42
3 files changed, 128 insertions, 0 deletions
diff --git a/csarvalidation/src/main/java/org/onap/validation/yaml/YamlLoader.java b/csarvalidation/src/main/java/org/onap/validation/yaml/YamlLoader.java
new file mode 100644
index 0000000..804f1ea
--- /dev/null
+++ b/csarvalidation/src/main/java/org/onap/validation/yaml/YamlLoader.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2020 Nokia
+ *
+ * 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.yaml;
+
+import org.onap.validation.yaml.model.YamlDocument;
+import org.onap.validation.yaml.model.YamlDocumentFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.yaml.snakeyaml.Yaml;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+
+public class YamlLoader {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(YamlLoader.class);
+
+ public List<YamlDocument> loadMultiDocumentYamlFile(URL path)
+ throws YamlDocumentFactory.YamlDocumentParsingException {
+ List<YamlDocument> documentsFromFile = new ArrayList<>();
+ try (InputStream yamlStream = path.openStream()) {
+ for (Object yamlDocument : new Yaml().loadAll(yamlStream)) {
+ documentsFromFile.add(
+ new YamlDocumentFactory().createYamlDocument(yamlDocument)
+ );
+ }
+ } catch (IOException e) {
+ LOGGER.error("Failed to load multi document YAML file",e);
+ }
+ return documentsFromFile;
+ }
+
+}
diff --git a/csarvalidation/src/main/java/org/onap/validation/yaml/model/YamlDocument.java b/csarvalidation/src/main/java/org/onap/validation/yaml/model/YamlDocument.java
new file mode 100644
index 0000000..5ed4690
--- /dev/null
+++ b/csarvalidation/src/main/java/org/onap/validation/yaml/model/YamlDocument.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2020 Nokia
+ *
+ * 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.yaml.model;
+
+import java.util.Map;
+
+public class YamlDocument {
+
+ private final Map<String, ?> yaml;
+
+ public YamlDocument(Map<String, ?> yaml) {
+ this.yaml = yaml;
+ }
+
+ public Map<String, ?> getYaml() {
+ return yaml;
+ }
+}
+
+
diff --git a/csarvalidation/src/main/java/org/onap/validation/yaml/model/YamlDocumentFactory.java b/csarvalidation/src/main/java/org/onap/validation/yaml/model/YamlDocumentFactory.java
new file mode 100644
index 0000000..8e571a9
--- /dev/null
+++ b/csarvalidation/src/main/java/org/onap/validation/yaml/model/YamlDocumentFactory.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2020 Nokia
+ *
+ * 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.yaml.model;
+
+import java.util.Map;
+
+public class YamlDocumentFactory {
+
+ public YamlDocument createYamlDocument(Object yaml) throws YamlDocumentParsingException {
+ try {
+ Map<String, ?> parsedYaml = (Map<String, ?>) yaml;
+ return new YamlDocument(parsedYaml);
+ } catch (ClassCastException e) {
+ throw new YamlDocumentParsingException(
+ String.format("Fail to parse given objects: %s as yaml",yaml), e
+ );
+ }
+ }
+
+ public static class YamlDocumentParsingException extends Exception {
+
+ YamlDocumentParsingException(String message, Throwable throwable) {
+ super(message, throwable);
+ }
+ }
+
+}