diff --git a/kogito-build/kogito-dependencies-bom/pom.xml b/kogito-build/kogito-dependencies-bom/pom.xml
index 5afd0f9b953..dd8aca64814 100644
--- a/kogito-build/kogito-dependencies-bom/pom.xml
+++ b/kogito-build/kogito-dependencies-bom/pom.xml
@@ -36,7 +36,6 @@
3.24.2
2.2.14
2.14.2
- 1.14.2
4.18.0
2.33.2
3.22.0
@@ -707,19 +706,12 @@
com.github.java-json-tools
json-schema-validator
${version.com.github.java-json-tools}
- test
com.fasterxml.jackson.datatype
jackson-datatype-json-org
${version.com.fasterxml.jackson.datatype}
-
- com.github.erosb
- everit-json-schema
- ${version.com.github.erosb}
-
-
io.serverlessworkflow
diff --git a/kogito-serverless-workflow/kogito-serverless-workflow-builder/pom.xml b/kogito-serverless-workflow/kogito-serverless-workflow-builder/pom.xml
index f19d46a5307..b7a5000a6d1 100644
--- a/kogito-serverless-workflow/kogito-serverless-workflow-builder/pom.xml
+++ b/kogito-serverless-workflow/kogito-serverless-workflow-builder/pom.xml
@@ -22,10 +22,6 @@
org.kie.kogito
kogito-serverless-workflow-runtime
-
- com.github.erosb
- everit-json-schema
-
org.kie.kogito
kogito-codegen-api
diff --git a/kogito-serverless-workflow/kogito-serverless-workflow-runtime/pom.xml b/kogito-serverless-workflow/kogito-serverless-workflow-runtime/pom.xml
index 7d037dfba77..ee2688e0016 100644
--- a/kogito-serverless-workflow/kogito-serverless-workflow-runtime/pom.xml
+++ b/kogito-serverless-workflow/kogito-serverless-workflow-runtime/pom.xml
@@ -27,8 +27,8 @@
kogito-rest-utils
- com.github.erosb
- everit-json-schema
+ com.github.java-json-tools
+ json-schema-validator
com.fasterxml.jackson.datatype
diff --git a/kogito-serverless-workflow/kogito-serverless-workflow-runtime/src/main/java/org/kie/kogito/serverless/workflow/actions/JsonSchemaValidator.java b/kogito-serverless-workflow/kogito-serverless-workflow-runtime/src/main/java/org/kie/kogito/serverless/workflow/actions/JsonSchemaValidator.java
index aee96420316..c5eed93f3a7 100644
--- a/kogito-serverless-workflow/kogito-serverless-workflow-runtime/src/main/java/org/kie/kogito/serverless/workflow/actions/JsonSchemaValidator.java
+++ b/kogito-serverless-workflow/kogito-serverless-workflow-runtime/src/main/java/org/kie/kogito/serverless/workflow/actions/JsonSchemaValidator.java
@@ -19,18 +19,17 @@
import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;
-import org.everit.json.schema.Schema;
-import org.everit.json.schema.ValidationException;
-import org.everit.json.schema.loader.SchemaClient;
-import org.everit.json.schema.loader.SchemaLoader;
import org.jbpm.workflow.core.WorkflowModelValidator;
-import org.json.JSONObject;
import org.kie.kogito.jackson.utils.ObjectMapperFactory;
import org.kie.kogito.serverless.workflow.SWFConstants;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.NullNode;
+import com.github.fge.jsonschema.core.exceptions.ProcessingException;
+import com.github.fge.jsonschema.core.report.ProcessingReport;
+import com.github.fge.jsonschema.main.JsonSchemaFactory;
import static org.kie.kogito.serverless.workflow.io.URIContentLoaderFactory.readAllBytes;
import static org.kie.kogito.serverless.workflow.io.URIContentLoaderFactory.runtimeLoader;
@@ -43,8 +42,7 @@ public class JsonSchemaValidator implements WorkflowModelValidator {
protected final String schemaRef;
protected final boolean failOnValidationErrors;
-
- private final AtomicReference schemaObject = new AtomicReference<>();
+ private final AtomicReference schemaObject = new AtomicReference<>();
public JsonSchemaValidator(String schema, boolean failOnValidationErrors) {
this.schemaRef = schema;
@@ -54,32 +52,25 @@ public JsonSchemaValidator(String schema, boolean failOnValidationErrors) {
@Override
public void validate(Map model) {
try {
- load().validate(ObjectMapperFactory.get().convertValue(model.getOrDefault(SWFConstants.DEFAULT_WORKFLOW_VAR, NullNode.instance), JSONObject.class));
- } catch (ValidationException ex) {
- handleException(ex, ex.getCausingExceptions().isEmpty() ? ex : ex.getCausingExceptions());
- } catch (IOException ex) {
- handleException(ex, ex);
+ ProcessingReport report = JsonSchemaFactory.byDefault().getJsonSchema(schemaData()).validate((JsonNode) model.getOrDefault(SWFConstants.DEFAULT_WORKFLOW_VAR, NullNode.instance));
+ if (!report.isSuccess()) {
+ final String validationMessage = String.format("Validation errors %s", report.toString());
+ logger.warn(validationMessage);
+ if (failOnValidationErrors) {
+ throw new IllegalArgumentException(validationMessage);
+ }
+ }
+ } catch (ProcessingException | IOException ex) {
+ throw new IllegalStateException("Unexpected error validating schema", ex);
}
}
- public Schema load() throws IOException {
- Schema result = schemaObject.get();
+ public JsonNode schemaData() throws IOException {
+ JsonNode result = schemaObject.get();
if (result == null) {
- result = SchemaLoader.builder()
- .schemaJson(ObjectMapperFactory.get().readValue(readAllBytes(runtimeLoader(schemaRef)), JSONObject.class))
- .resolutionScope(schemaRef)
- .schemaClient(SchemaClient.classPathAwareClient())
- .build().load().build();
+ result = ObjectMapperFactory.get().readTree(readAllBytes(runtimeLoader(schemaRef)));
schemaObject.set(result);
}
return result;
}
-
- private void handleException(Throwable ex, Object toAppend) {
- String validationError = String.format("Error validating schema: %s", toAppend);
- logger.warn(validationError, ex);
- if (failOnValidationErrors) {
- throw new IllegalArgumentException(validationError);
- }
- }
}
diff --git a/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-deployment/src/main/java/org/kie/kogito/serverless/workflow/parser/schema/OpenApiModelSchemaGenerator.java b/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-deployment/src/main/java/org/kie/kogito/serverless/workflow/parser/schema/OpenApiModelSchemaGenerator.java
index 2fd573c56f4..4759f8b5436 100644
--- a/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-deployment/src/main/java/org/kie/kogito/serverless/workflow/parser/schema/OpenApiModelSchemaGenerator.java
+++ b/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-deployment/src/main/java/org/kie/kogito/serverless/workflow/parser/schema/OpenApiModelSchemaGenerator.java
@@ -115,7 +115,7 @@ private static Optional getSchema(Optional valid
private static Schema getSchema(JsonSchemaValidator validator) {
try {
- return ObjectMapperFactory.get().readValue(validator.load().toString(), JsonSchemaImpl.class);
+ return ObjectMapperFactory.get().convertValue(validator.schemaData(), JsonSchemaImpl.class);
} catch (IOException e) {
throw new UncheckedIOException(e);
}