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

Reply via email to