From d0901b2011deab57576c94e0d3529ebe328fd7f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halvor=20Granskogen=20Bj=C3=B8rnstad?= Date: Wed, 30 Nov 2016 13:19:43 +0100 Subject: [PATCH 1/2] Failing test case for issue 62 Properties w/multiple types and patterns --- .../org/everit/json/schema/issues/issue62/schema.json | 10 ++++++++++ .../json/schema/issues/issue62/subject-invalid.json | 3 +++ 2 files changed, 13 insertions(+) create mode 100644 tests/src/test/resources/org/everit/json/schema/issues/issue62/schema.json create mode 100644 tests/src/test/resources/org/everit/json/schema/issues/issue62/subject-invalid.json diff --git a/tests/src/test/resources/org/everit/json/schema/issues/issue62/schema.json b/tests/src/test/resources/org/everit/json/schema/issues/issue62/schema.json new file mode 100644 index 000000000..82b077018 --- /dev/null +++ b/tests/src/test/resources/org/everit/json/schema/issues/issue62/schema.json @@ -0,0 +1,10 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "properties": { + "only_as_1": { + "pattern": "^a+$", + "type": ["string", "null"] + } + } +} diff --git a/tests/src/test/resources/org/everit/json/schema/issues/issue62/subject-invalid.json b/tests/src/test/resources/org/everit/json/schema/issues/issue62/subject-invalid.json new file mode 100644 index 000000000..f40d94eb6 --- /dev/null +++ b/tests/src/test/resources/org/everit/json/schema/issues/issue62/subject-invalid.json @@ -0,0 +1,3 @@ +{ + "only_as_1": "bbb" +} From 8cf5d952dff956f65ded28a8407dd11e6e8273e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halvor=20Granskogen=20Bj=C3=B8rnstad?= Date: Wed, 30 Nov 2016 13:24:43 +0100 Subject: [PATCH 2/2] Attempt to fix issue 62 Use the loadExplicitForType function to load subschemas --- .../java/org/everit/json/schema/loader/SchemaLoader.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/org/everit/json/schema/loader/SchemaLoader.java b/core/src/main/java/org/everit/json/schema/loader/SchemaLoader.java index 4f7dbe6f3..8a3fd503d 100644 --- a/core/src/main/java/org/everit/json/schema/loader/SchemaLoader.java +++ b/core/src/main/java/org/everit/json/schema/loader/SchemaLoader.java @@ -222,13 +222,11 @@ public SchemaLoader(final SchemaLoaderBuilder builder) { private CombinedSchema.Builder buildAnyOfSchemaForMultipleTypes() { JSONArray subtypeJsons = ls.schemaJson.getJSONArray("type"); - Map dummyJson = new HashMap(); - Collection subschemas = new ArrayList(subtypeJsons.length()); + Collection subschemas = new ArrayList<>(subtypeJsons.length()); for (int i = 0; i < subtypeJsons.length(); ++i) { Object subtypeJson = subtypeJsons.get(i); - dummyJson.put("type", subtypeJson); - JSONObject child = new JSONObject(dummyJson); - subschemas.add(loadChild(child).build()); + Schema.Builder schemaBuilder = loadForExplicitType((String) subtypeJson); + subschemas.add(schemaBuilder.build()); } return CombinedSchema.anyOf(subschemas); }