diff --git a/src/main/java/com/networknt/schema/UnevaluatedItemsValidator.java b/src/main/java/com/networknt/schema/UnevaluatedItemsValidator.java index 49419f27..1794ce6b 100644 --- a/src/main/java/com/networknt/schema/UnevaluatedItemsValidator.java +++ b/src/main/java/com/networknt/schema/UnevaluatedItemsValidator.java @@ -44,8 +44,7 @@ public UnevaluatedItemsValidator(SchemaLocation schemaLocation, JsonNodePath eva JsonSchema parentSchema, ValidationContext validationContext) { super(schemaLocation, evaluationPath, schemaNode, parentSchema, ValidatorTypeCode.UNEVALUATED_ITEMS, validationContext); - isMinV202012 = MinV202012.getVersions().contains(SpecVersionDetector - .detectOptionalVersion(validationContext.getMetaSchema().getIri()).orElse(DEFAULT_VERSION)); + isMinV202012 = MinV202012.getVersions().contains(validationContext.activeDialect().orElse(DEFAULT_VERSION)); if (schemaNode.isObject() || schemaNode.isBoolean()) { this.schema = validationContext.newSchema(schemaLocation, evaluationPath, schemaNode, parentSchema); } else { diff --git a/src/main/java/com/networknt/schema/ValidationContext.java b/src/main/java/com/networknt/schema/ValidationContext.java index f4d6e12f..d35b29b9 100644 --- a/src/main/java/com/networknt/schema/ValidationContext.java +++ b/src/main/java/com/networknt/schema/ValidationContext.java @@ -107,7 +107,6 @@ public JsonMetaSchema getMetaSchema() { } public Optional activeDialect() { - String metaSchema = getMetaSchema().getIri(); - return SpecVersionDetector.detectOptionalVersion(metaSchema); + return Optional.of(this.metaSchema.getSpecification()); } } diff --git a/src/main/java/com/networknt/schema/utils/JsonNodeUtil.java b/src/main/java/com/networknt/schema/utils/JsonNodeUtil.java index 07c3b915..d480ee7c 100644 --- a/src/main/java/com/networknt/schema/utils/JsonNodeUtil.java +++ b/src/main/java/com/networknt/schema/utils/JsonNodeUtil.java @@ -131,10 +131,7 @@ public static boolean equalsToSchemaType(JsonNode node, JsonType schemaType, Jso } private static long detectVersion(ValidationContext validationContext) { - String metaSchema = validationContext.getMetaSchema().getIri(); - return SpecVersionDetector.detectOptionalVersion(metaSchema) - .orElse(VersionFlag.V4) - .getVersionFlagValue(); + return validationContext.activeDialect().orElse(VersionFlag.V4).getVersionFlagValue(); } /** diff --git a/src/test/java/com/networknt/schema/VocabularyTest.java b/src/test/java/com/networknt/schema/VocabularyTest.java index 84a9b4ff..3c42ad05 100644 --- a/src/test/java/com/networknt/schema/VocabularyTest.java +++ b/src/test/java/com/networknt/schema/VocabularyTest.java @@ -82,6 +82,7 @@ void noValidation() { messages = schema.validate(inputDataNoValidation, InputFormat.JSON); assertEquals(1, messages.size()); assertEquals("minimum", messages.iterator().next().getType()); + assertEquals(VersionFlag.V202012, schema.getValidationContext().activeDialect().get()); } @Test