Skip to content

Commit 8960aec

Browse files
Prefix the json pointer reference with the schema id.
Ensure that two local json pointers in two different schemas will use their own definition that they point to, and not the one that was loaded first. Fixes #182
1 parent 15d190c commit 8960aec

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

core/src/main/java/org/everit/json/schema/loader/ReferenceLookup.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -115,13 +115,14 @@ private JsonObject lookupObjById(JsonValue val, String idAttrVal) {
115115
}
116116

117117
private Schema.Builder<?> performQueryEvaluation(String mapKey, JsonPointerEvaluator pointerEvaluator) {
118-
if (ls.pointerSchemas.containsKey(mapKey)) {
119-
return ls.pointerSchemas.get(mapKey);
118+
String absolutePointer = ReferenceResolver.resolve(ls.id, mapKey).toString();
119+
if (ls.pointerSchemas.containsKey(absolutePointer)) {
120+
return ls.pointerSchemas.get(absolutePointer);
120121
}
121122
JsonValue rawInternalReferenced = pointerEvaluator.query().getQueryResult();
122123
ReferenceSchema.Builder refBuilder = ReferenceSchema.builder()
123124
.refValue(mapKey);
124-
ls.pointerSchemas.put(mapKey, refBuilder);
125+
ls.pointerSchemas.put(absolutePointer, refBuilder);
125126
Schema referredSchema = new SchemaLoader(rawInternalReferenced.ls).load().build();
126127
refBuilder.build().setReferredSchema(referredSchema);
127128
return refBuilder;

0 commit comments

Comments
 (0)