aboutsummaryrefslogtreecommitdiffstats
path: root/test/mocks/pnfsimulator/src/main/java/org/onap/pnfsimulator/simulator/validation/JSONValidator.java
diff options
context:
space:
mode:
Diffstat (limited to 'test/mocks/pnfsimulator/src/main/java/org/onap/pnfsimulator/simulator/validation/JSONValidator.java')
-rw-r--r--test/mocks/pnfsimulator/src/main/java/org/onap/pnfsimulator/simulator/validation/JSONValidator.java46
1 files changed, 46 insertions, 0 deletions
diff --git a/test/mocks/pnfsimulator/src/main/java/org/onap/pnfsimulator/simulator/validation/JSONValidator.java b/test/mocks/pnfsimulator/src/main/java/org/onap/pnfsimulator/simulator/validation/JSONValidator.java
new file mode 100644
index 000000000..37fd71a81
--- /dev/null
+++ b/test/mocks/pnfsimulator/src/main/java/org/onap/pnfsimulator/simulator/validation/JSONValidator.java
@@ -0,0 +1,46 @@
+package org.onap.pnfsimulator.simulator.validation;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.github.fge.jackson.JsonLoader;
+import com.github.fge.jsonschema.core.exceptions.ProcessingException;
+import com.github.fge.jsonschema.core.report.LogLevel;
+import com.github.fge.jsonschema.core.report.ProcessingMessage;
+import com.github.fge.jsonschema.core.report.ProcessingReport;
+import com.github.fge.jsonschema.main.JsonSchema;
+import com.github.fge.jsonschema.main.JsonSchemaFactory;
+import com.google.gson.JsonParser;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.stream.Collectors;
+import java.util.stream.StreamSupport;
+
+public class JSONValidator {
+
+ public void validate(String data, String jsonSchemaPath)
+ throws ValidationException, ProcessingException, IOException {
+ String jsonSchema = readJsonSchemaAsString(jsonSchemaPath);
+ JsonNode jsonData = JsonLoader.fromString(data);
+ ProcessingReport report = createJsonSchema(jsonSchema).validate(jsonData);
+
+ if (!report.isSuccess()) {
+ throw new ValidationException(constructValidationErrors(report));
+ }
+ }
+
+ private String readJsonSchemaAsString(String schemaPath) throws IOException {
+ try (FileReader reader = new FileReader(schemaPath)) {
+ return new JsonParser().parse(reader).toString();
+ }
+ }
+
+ private JsonSchema createJsonSchema(String schema) throws ProcessingException, IOException {
+ return JsonSchemaFactory.byDefault().getJsonSchema(JsonLoader.fromString(schema));
+ }
+
+ private String constructValidationErrors(ProcessingReport report) {
+ return StreamSupport.stream(report.spliterator(), false)
+ .filter(entry -> entry.getLogLevel() == LogLevel.ERROR)
+ .map(ProcessingMessage::getMessage)
+ .collect(Collectors.joining("\n"));
+ }
+}