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()); + } }