From 8f06a604763fe440ffad5507ebe7171819e81298 Mon Sep 17 00:00:00 2001 From: fjtirado Date: Wed, 29 Oct 2025 14:52:11 +0100 Subject: [PATCH] Upgrade to schema.nt 2.0 Signed-off-by: fjtirado --- .../api/ValidationReader.java | 23 ++++++++----------- .../jackson/schema/JsonSchemaValidator.java | 17 +++++++------- pom.xml | 2 +- 3 files changed, 20 insertions(+), 22 deletions(-) diff --git a/api/src/main/java/io/serverlessworkflow/api/ValidationReader.java b/api/src/main/java/io/serverlessworkflow/api/ValidationReader.java index 25481d5c5..d3d3123f4 100644 --- a/api/src/main/java/io/serverlessworkflow/api/ValidationReader.java +++ b/api/src/main/java/io/serverlessworkflow/api/ValidationReader.java @@ -16,22 +16,21 @@ package io.serverlessworkflow.api; import com.fasterxml.jackson.databind.JsonNode; +import com.networknt.schema.Error; import com.networknt.schema.InputFormat; -import com.networknt.schema.JsonSchema; -import com.networknt.schema.JsonSchemaFactory; -import com.networknt.schema.SchemaValidatorsConfig; -import com.networknt.schema.SpecVersion.VersionFlag; -import com.networknt.schema.ValidationMessage; +import com.networknt.schema.Schema; +import com.networknt.schema.SchemaRegistry; +import com.networknt.schema.SpecificationVersion; import io.serverlessworkflow.api.types.Workflow; import java.io.IOException; import java.io.InputStream; import java.io.Reader; import java.io.UncheckedIOException; -import java.util.Set; +import java.util.Collection; import java.util.stream.Collectors; class ValidationReader implements WorkflowReaderOperations { - private final JsonSchema schemaObject; + private final Schema schemaObject; ValidationReader() { try (InputStream input = @@ -39,8 +38,8 @@ class ValidationReader implements WorkflowReaderOperations { .getContextClassLoader() .getResourceAsStream("schema/workflow.yaml")) { this.schemaObject = - JsonSchemaFactory.getInstance(VersionFlag.V7) - .getSchema(input, InputFormat.YAML, SchemaValidatorsConfig.builder().build()); + SchemaRegistry.withDefaultDialect(SpecificationVersion.DRAFT_7) + .getSchema(input, InputFormat.YAML); } catch (IOException e) { throw new UncheckedIOException(e); } @@ -67,12 +66,10 @@ public Workflow read(String input, WorkflowFormat format) throws IOException { } private Workflow validate(JsonNode value, WorkflowFormat format) { - Set validationErrors = schemaObject.validate(value); + Collection validationErrors = schemaObject.validate(value); if (!validationErrors.isEmpty()) { throw new IllegalArgumentException( - validationErrors.stream() - .map(ValidationMessage::toString) - .collect(Collectors.joining("\n"))); + validationErrors.stream().map(Error::toString).collect(Collectors.joining("\n"))); } return format.mapper().convertValue(value, Workflow.class); } diff --git a/impl/validation/src/main/java/io/serverlessworkflow/impl/jackson/schema/JsonSchemaValidator.java b/impl/validation/src/main/java/io/serverlessworkflow/impl/jackson/schema/JsonSchemaValidator.java index 99cea32ba..d01047d08 100644 --- a/impl/validation/src/main/java/io/serverlessworkflow/impl/jackson/schema/JsonSchemaValidator.java +++ b/impl/validation/src/main/java/io/serverlessworkflow/impl/jackson/schema/JsonSchemaValidator.java @@ -16,25 +16,26 @@ package io.serverlessworkflow.impl.jackson.schema; import com.fasterxml.jackson.databind.JsonNode; -import com.networknt.schema.JsonSchema; -import com.networknt.schema.JsonSchemaFactory; -import com.networknt.schema.SpecVersion.VersionFlag; -import com.networknt.schema.ValidationMessage; +import com.networknt.schema.Error; +import com.networknt.schema.Schema; +import com.networknt.schema.SchemaRegistry; +import com.networknt.schema.SpecificationVersion; import io.serverlessworkflow.impl.WorkflowModel; import io.serverlessworkflow.impl.schema.SchemaValidator; -import java.util.Set; +import java.util.Collection; public class JsonSchemaValidator implements SchemaValidator { - private final JsonSchema schemaObject; + private final Schema schemaObject; public JsonSchemaValidator(JsonNode jsonNode) { - this.schemaObject = JsonSchemaFactory.getInstance(VersionFlag.V7).getSchema(jsonNode); + this.schemaObject = + SchemaRegistry.withDefaultDialect(SpecificationVersion.DRAFT_7).getSchema(jsonNode); } @Override public void validate(WorkflowModel node) { - Set report = + Collection report = schemaObject.validate( node.as(JsonNode.class) .orElseThrow( diff --git a/pom.xml b/pom.xml index eae663c65..8e9bc2d1e 100644 --- a/pom.xml +++ b/pom.xml @@ -82,7 +82,7 @@ 1.5.20 2.20.0 2.20 - 1.5.9 + 2.0.0 5.2.1 4.0.1 3.1.1