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