Simone Tripodi created JOHNZON-191:
--------------------------------------
Summary: [Schema] "patternProperties" does not correctly handle
related property type
Key: JOHNZON-191
URL: https://issues.apache.org/jira/browse/JOHNZON-191
Project: Johnzon
Issue Type: Bug
Affects Versions: 1.1.10
Reporter: Simone Tripodi
Fix For: 1.1.11
In Apache Sling we have been developing a draft-07 compliant schema to define
_Sling Feature files_, which are in JSON format, and of course Johnzon is the
de-facto standard choice to work with JSON structures.
If you want to have a look at the initial draft, have a look at
https://gist.github.com/simonetripodi/c69d2ffebdbd2c4b1355df60568f1ab5
So, in our _Feature_ we have so called _extensions_ where users can define a
custom data set, _extensions_ keys are defined by {{patternProperties}} which
related type, I noticed, are not correctly handled by the
{{JsonSchemaValidator}}: the expected behaviour is that for an input like the
one below:
{noformat}
{
"id":"test/artifacts-extension/1.0.0",
"my-extension1:TEXT|false":{}
}
{noformat}
an error is detected since type is invalid, _string_ or _array_ is expected but
but got _object_, tested on https://www.jsonschemavalidator.net/, but
{{JsonSchemaValidator}} passes all verifications.
I noticed that this behaviour is even present in Johnzon tests ,
i.e.[JsonSchemaValidatorTest.java#L572|https://github.com/apache/johnzon/blob/master/johnzon-jsonschema/src/test/java/org/apache/johnzon/jsonschema/JsonSchemaValidatorTest.java#L572]
where _number_ type is expected for keys identified by _[0-9]+_, but it
succeeds for _string_ type only.
I think it is a bug, unless I misconfigured something, follows below a snippet
of code where the validator is created:
{noformat}
private final JsonSchemaValidator validator;
private FeatureSchemaValidatorProvider() {
JsonReader reader = null;
JsonSchemaValidatorFactory factory = null;
try (InputStream schemaInput =
FeatureJSONReader.class.getResourceAsStream("/META-INF/feature/Feature-1.0.0.schema.json"))
{
reader = Json.createReader(schemaInput);
JsonObject schema = reader.readObject();
factory = new JsonSchemaValidatorFactory();
factory.setRegexFactory(JavaRegex::new);
validator = factory.newInstance(schema);
} catch (IOException ioe) {
// should not happen, /META-INF/feature/Feature-1.0.0.schema.json
is in the classpath
throw new UncheckedIOException(ioe);
} finally {
if (reader != null) {
reader.close();
}
if (factory != null) {
factory.close();
}
}
}
{noformat}
Could you kindly help us? Many thanks in advance!
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)