From 442f456d628fd928b95d4b3a0555c673fb101059 Mon Sep 17 00:00:00 2001
From: Justin Tay <49700559+justin-tay@users.noreply.github.com>
Date: Fri, 17 Jan 2025 19:53:45 +0800
Subject: [PATCH] Fix explicit disabling of format assertions
---
.../com/networknt/schema/SchemaValidatorsConfig.java | 2 +-
.../schema/format/BaseFormatJsonValidator.java | 2 ++
.../com/networknt/schema/FormatValidatorTest.java | 12 ++++++++++++
3 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/src/main/java/com/networknt/schema/SchemaValidatorsConfig.java b/src/main/java/com/networknt/schema/SchemaValidatorsConfig.java
index c9d9b7a47..beb25d7d7 100644
--- a/src/main/java/com/networknt/schema/SchemaValidatorsConfig.java
+++ b/src/main/java/com/networknt/schema/SchemaValidatorsConfig.java
@@ -817,7 +817,7 @@ public static class Builder {
private String errorMessageKeyword = null;
private ExecutionContextCustomizer executionContextCustomizer = null;
private boolean failFast = false;
- private Boolean formatAssertionsEnabled = false;
+ private Boolean formatAssertionsEnabled = null;
private boolean nullableKeywordEnabled = false;
private List itemWalkListeners = new ArrayList<>();
private boolean javaSemantics = false;
diff --git a/src/main/java/com/networknt/schema/format/BaseFormatJsonValidator.java b/src/main/java/com/networknt/schema/format/BaseFormatJsonValidator.java
index 64125069e..f2665bbfc 100644
--- a/src/main/java/com/networknt/schema/format/BaseFormatJsonValidator.java
+++ b/src/main/java/com/networknt/schema/format/BaseFormatJsonValidator.java
@@ -49,6 +49,8 @@ protected boolean isFormatAssertionVocabularyEnabled(VersionFlag specification,
protected boolean isAssertionsEnabled(ExecutionContext executionContext) {
if (Boolean.TRUE.equals(executionContext.getExecutionConfig().getFormatAssertionsEnabled())) {
return true;
+ } else if (Boolean.FALSE.equals(executionContext.getExecutionConfig().getFormatAssertionsEnabled())) {
+ return false;
}
return this.assertionsEnabled;
}
diff --git a/src/test/java/com/networknt/schema/FormatValidatorTest.java b/src/test/java/com/networknt/schema/FormatValidatorTest.java
index acd15af58..8e41110be 100644
--- a/src/test/java/com/networknt/schema/FormatValidatorTest.java
+++ b/src/test/java/com/networknt/schema/FormatValidatorTest.java
@@ -233,4 +233,16 @@ void shouldAllowNumberFormat() {
assertTrue(messages.isEmpty());
}
+
+ @Test
+ void draft7DisableFormat() {
+ String schemaData = "{\r\n"
+ + " \"format\":\"uri\"\r\n"
+ + "}";
+ JsonSchema schema = JsonSchemaFactory.getInstance(VersionFlag.V7).getSchema(schemaData);
+ Set messages = schema.validate("\"hello\"", InputFormat.JSON, executionContext -> {
+ executionContext.getExecutionConfig().setFormatAssertionsEnabled(false);
+ });
+ assertEquals(0, messages.size());
+ }
}