diff --git a/src/main/java/com/networknt/schema/SchemaValidatorsConfig.java b/src/main/java/com/networknt/schema/SchemaValidatorsConfig.java index c9d9b7a4..beb25d7d 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 64125069..f2665bbf 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 acd15af5..8e41110b 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()); + } }