json-schema-validator icon indicating copy to clipboard operation
json-schema-validator copied to clipboard

Warning when validating a schema

Open rhwood opened this issue 6 years ago • 12 comments

I am using this library to validate a service's JSON outputs and one of the outputs are the JSON schema (against which everything is validated) themselves.

When validating the schema, I get this warning:

WARN  - Unknown keyword exclusiveMinimum - you should define your own Meta Schema. If the keyword is irrelevant for validation, just use a NonValidationKeyword [main] com.networknt.schema.JsonMetaSchema.newValidator()

The only place I see exclusiveMinimum is in the JSON Schema (Draft 4) itself. What is the best way to avoid this warning, since I am not using it anywhere in my own schemas?

rhwood avatar Apr 03 '18 10:04 rhwood

@rhwood That warning message can be ignored. We are loading the JSON schema draft v4 for validation and that particular keyword is not supported yet. We are planning to refactor the library to support both v4 and v6 in the near future and this issue will be resolved at the same time. Let's keep this open until it is resolved. Thanks for bringing it up.

stevehu avatar Apr 04 '18 15:04 stevehu

Has this been resolved yet?

alisrael avatar Feb 11 '19 18:02 alisrael

@alisrael I just mark the issue with help wanted and hope someone from the community can pick it up and get it resolved. Thanks for bringing it up.

stevehu avatar Feb 11 '19 18:02 stevehu

Can the warning be suppressed? (I suppose I could maybe just configure my logger to only show errors from this library, but then I wouldn't see other warnings...)

markgitset avatar Oct 14 '20 20:10 markgitset

If exclusiveMinimum is the keyword in draft 4 only, we can map this keyword to TrueValidator for v6, v7 and 2019-09. Let's wait for the test result on this issue and make the same change if it works.

https://github.com/networknt/json-schema-validator/issues/333

stevehu avatar Oct 14 '20 23:10 stevehu

Since this issue was raised, we have added a lot more NonValidationKeyword to each version of specifications. Here is an example. https://github.com/networknt/json-schema-validator/blob/master/src/main/java/com/networknt/schema/JsonMetaSchema.java#L172

I am wondering if you guys could try it again and add your warned keyword to the list. Just be sure that don't add anything that is a validation keyword but not implemented yet. Thanks.

stevehu avatar Dec 30 '20 14:12 stevehu

still not fixed?

2021-11-30 18:09:38.189 [main] WARN com.networknt.schema.JsonMetaSchema - Unknown keyword $defs - you should define your own Meta Schema. If the keyword is irrelevant for validation, just use a NonValidationKeyword 2021-11-30 18:09:39.192 [main] WARN com.networknt.schema.JsonMetaSchema - Could not load validator maxLength

bomzheg avatar Nov 30 '21 15:11 bomzheg

@bomzheg I think people are fixing the issue in a particular version they are using. That is why you might still see this. Which version are you using?

stevehu avatar Dec 02 '21 01:12 stevehu

@stevehu could we have the "else" keyword also added to the NonValidationKeywork list for V2019, or V2020, just like it was done for "then" in https://github.com/networknt/json-schema-validator/pull/418/files ? Currently there is no version on which none of the "if", "then", "else" keywords trigger the warning message.

ionutalex88 avatar Jul 15 '22 10:07 ionutalex88

@ionutalex88 Yes. I think we can do it safely. Would you like to open a PR?

stevehu avatar Jul 16 '22 17:07 stevehu

@ionutalex88 Yes. I think we can do it safely. Would you like to open a PR?

@stevehu I could do that. Should I be added to the contributors list?

ionutalex88 avatar Jul 18 '22 09:07 ionutalex88

@ionutalex88 I have sent you an invite to grant you the write permission. Please create a branch for your PR. Thanks.

stevehu avatar Jul 18 '22 12:07 stevehu

I would expect there to be some way to, given SchemaValidatorsConfig or JsonSchema, add a keyword.

I have a custom keyword in my schema that I use in a JsonSchemaWalkListener:

   @Override
   public WalkFlow onWalkStart(WalkEvent walkEvent)
   {
      JsonNode schemaNode = walkEvent.getSchemaNode();
      JsonNode kindNode = schemaNode.get("MY_CUSTOM_KEYWORD");
      do stuff with kindNode....

It works totally fine (great job with this library!) but I keep getting this warn-logging.

tomasbjerre avatar May 09 '23 10:05 tomasbjerre

@stevehu resolved the original issue regarding exclusiveMinimum with a commit on 2019-11-14. @ionutalex88 added then and else in #592 @[email protected] Added $defs in #539

@tomasbjerre We have many open requests to support custom keywords. Please add your requirements to one of those or open a new one.

fdutton avatar May 23 '23 00:05 fdutton