Skip to content

Commit 35a5357

Browse files
author
Naveen Gurram
committed
[259] fix to support populating unprocessedProperties for elements having external schema.
1 parent 63d7a1b commit 35a5357

File tree

4 files changed

+66
-0
lines changed

4 files changed

+66
-0
lines changed

core/src/main/java/org/everit/json/schema/ReferenceSchema.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ public ReferenceSchema build() {
3434
if (retval == null) {
3535
retval = new ReferenceSchema(this);
3636
}
37+
// adding unprocessed properties from the parent to the actual referenced schema
38+
retval.appendUnprocessedProperties(new ReferenceSchema(this).getUnprocessedProperties());
3739
return retval;
3840
}
3941

core/src/main/java/org/everit/json/schema/Schema.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,14 @@ public Map<String, Object> getUnprocessedProperties() {
272272
return unmodifiableMap(unprocessedProperties);
273273
}
274274

275+
/**
276+
* Append properties to unprocessed properties.
277+
* @param unprocessedProperties
278+
*/
279+
public void appendUnprocessedProperties(Map<String, Object> unprocessedProperties){
280+
this.unprocessedProperties.putAll(unprocessedProperties);
281+
}
282+
275283
/**
276284
* Describes the instance as a JSONObject to {@code writer}.
277285
* <p>

core/src/test/java/org/everit/json/schema/loader/SchemaLoaderTest.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -745,4 +745,22 @@ public void commonPropsAreNotUnprocessedProps() {
745745
assertThat(new JSONObject(subject.toString()), sameJsonAs(schemaJson));
746746
}
747747

748+
@Test
749+
public void unprocessedPropertiesAreLoadedForRefElement() {
750+
SchemaLoader loader = SchemaLoader.builder()
751+
.draftV7Support()
752+
.useDefaults(true)
753+
.schemaJson(get("schemaRefWithUnprocessedProperties"))
754+
.build();
755+
ObjectSchema actual = (ObjectSchema) loader.load().build();
756+
757+
assertEquals(ImmutableMap.of(
758+
"unproc8", false
759+
), ((ReferenceSchema)actual.getPropertySchemas().get("prop4")).getReferredSchema().getUnprocessedProperties());
760+
761+
assertEquals(ImmutableMap.of(
762+
"unproc7", JSONObject.NULL
763+
), actual.getPropertySchemas().get("prop4").getUnprocessedProperties());
764+
}
765+
748766
}

core/src/test/resources/org/everit/jsonvalidator/testschemas.json

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -686,5 +686,43 @@
686686
"unproc6": false
687687
}
688688
}
689+
},
690+
"schemaRefWithUnprocessedProperties": {
691+
"title": "ttt",
692+
"description": "descr",
693+
"$id": "http://example.org",
694+
"default": 22,
695+
"nullable": false,
696+
"readOnly": false,
697+
"writeOnly": false,
698+
"definitions": {
699+
"dateMonthDayYear": {
700+
"description": "(MM/dd/yyyy)",
701+
"type": "string",
702+
"maxLength": 10,
703+
"pattern": "^\\d{2}/\\d{2}/\\d{4}$",
704+
"unproc8": false
705+
}
706+
},
707+
"type": "object",
708+
"unproc0": 1,
709+
"unproc1": "asdasd",
710+
"properties": {
711+
"prop": {
712+
"type": "string"
713+
},
714+
"prop2": {
715+
"unproc4": true,
716+
"unproc5": null
717+
},
718+
"prop3": {
719+
"$ref": "#",
720+
"unproc6": false
721+
},
722+
"prop4": {
723+
"$ref": "#/definitions/dateMonthDayYear",
724+
"unproc7": null
725+
}
726+
}
689727
}
690728
}

0 commit comments

Comments
 (0)