Comments (5)
I will look into this. But by itself, "0" may be a valid iri reference if it can resolve to an absolute iri given a base iri.
I was hoping to avoid strictly validating $id
because in particular the older drafts were more lax with what it could contain.
from json-schema-validator.
We just tried migration from 1.2.0 to 1.3.0 and tests were broken.
Maybe you can keep previous behaviour for ascending compatibility and run your new code on a configuration basis?
from json-schema-validator.
The specification uses the term SHOULD NOT
instead of MUST NOT
and attempting to perform the validation by ensuring that the $id can resolve to an absolute IRI causes one of the tests in the JSON Schema Test Suite to fail. This particular test seems to have been introduced fairly recently.
What I will likely do is introduce a configurable JsonSchemaIdValidator
into the SchemaValidatorsConfig
and retain the current lax validation as default. I will likely also write a strict implementation of the validator that can be used.
from json-schema-validator.
I have looked at the previous behavior and it looks like it is a semi strict about the $id value. If you loaded your schema from a classpath resource using a URI it doesn't throw in the previous version either. Loading it without a base URI causes it to throw in the previous version. I will try to replicate this previous behavior and set it as the default validator.
from json-schema-validator.
This will be fixed in the next version in the following manner
- Adding a
JsonSchemaIdValidator
interface - Adding a
DefaultJsonSchemaIdValidator
implementation that implements the previous logic - The
DefaultJsonSchemaIdValidator
will be configured as default
This will make the behavior the same as 1.2.0.
That said if you really need the $id to be valid according to the spec, you would need to write your own implementation.
According to the spec
"$id" MUST NOT contain a non-empty fragment, and SHOULD NOT contain an empty fragment
The previous logic since 1.0.33 accepts non-empty fragment ids with the isUriFragmentWithNoContext
check.
The following schema does not throw in 1.2.0 and before.
{
"$id": "#0",
"$schema": "https://json-schema.org/draft/2020-12/schema"
}
from json-schema-validator.
Related Issues (20)
- Additional i18n language(spanish) support related (#847) HOT 8
- We Need Additional Spanish Language support can you please add the spanish langauge our customers need it we already in PROD HOT 7
- Schema from String HOT 1
- change example.com connection error IOException
- improve outputUnits with all assertion fields HOT 3
- V1.4.0 ValidatorTypeCode.getKeywords(SpecVersion.VersionFlag.V201909) has missing keywords HOT 2
- Error occurs if OneOf and AllOf are nested HOT 10
- Do the values of allOf need to be validated as arrays?
- Add an option to toggle debug message HOT 1
- Impossible to construct a SchemaLocation containing a json pointer with an escaped fragment
- Impossible to construct a SchemaLocation containing a json pointer with an escaped fragment HOT 1
- EmailValidator limits the user length to be <= 64 HOT 2
- JsonSchemaFactory.builder().defaultMetaSchemaIri() and new Version4().getInstance().getIri()
- Unknown keyword warning when using meta schema from file HOT 17
- [Bug] IRI References with URL encoded '[' and ']' incorrectly fail validation HOT 1
- How to handle loading of relative refs HOT 2
- Could not find OpenApi30 in release 1.4.0 HOT 9
- "http://" should be considered as a valid iri-reference HOT 1
- Downgrade maven-source-plugin to 3.2.1
- Resolve javadoc warning messages
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from json-schema-validator.