[ 
https://issues.apache.org/jira/browse/JOHNZON-191?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Romain Manni-Bucau updated JOHNZON-191:
---------------------------------------
    Fix Version/s:     (was: 1.1.11)
                   1.1.12

> [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.12
>
>
> 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)

Reply via email to