johnzon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Romain Manni-Bucau (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (JOHNZON-191) [Schema] "patternProperties" does not correctly handle related property type
Date Tue, 09 Oct 2018 05:53:00 GMT

    [ https://issues.apache.org/jira/browse/JOHNZON-191?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16642020#comment-16642020
] 

Romain Manni-Bucau edited comment on JOHNZON-191 at 10/9/18 5:52 AM:
---------------------------------------------------------------------

[~simone.tripodi] if type is not a string value current code fails, i'll ensure it does not
fail but i wonder if you have a model/schema where it is something else? You can debug in
TypeValidation class, it should be faily easy to check the array value you have for type and
enrich the support.

edit: added the support for arrays of string as the spec mentions. Our implementation always
considers NULL as valid (compared to the spec) and relies on required to validate the presence
(means type=STRING is equivalent to type=STRING or NULL). Not sure it is an issue, we can
introduce a flag to prevent it if so.


was (Author: romain.manni-bucau):
[~simone.tripodi] if type is not a string value current code fails, i'll ensure it does not
fail but i wonder if you have a model/schema where it is something else? You can debug in
TypeValidation class, it should be faily easy to check the array value you have for type and
enrich the support.

> [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
>            Priority: Major
>             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 as well.
> 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)

Mime
View raw message