Skip to content

Commit 93f3c7b

Browse files
committed
Merge branch 'master' into issue174
2 parents 3780e19 + bc51361 commit 93f3c7b

File tree

8 files changed

+76
-4
lines changed

8 files changed

+76
-4
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;
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"definitions": {
3+
"str": {
4+
"type": "string",
5+
"enum": [
6+
"valueA1",
7+
"valueA2"
8+
]
9+
}
10+
},
11+
"$ref": "#/definitions/str"
12+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"definitions": {
3+
"str": {
4+
"type": "string",
5+
"enum": [
6+
"valueB1",
7+
"valueB2"
8+
]
9+
}
10+
},
11+
"$ref": "#/definitions/str"
12+
}
13+
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"definitions": {
3+
"str": {
4+
"type": "string",
5+
"enum": [
6+
"valueC1",
7+
"valueC2"
8+
]
9+
}
10+
},
11+
"$ref": "#/definitions/str"
12+
}
13+
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"$schema": "http://json-schema.org/draft-07/schema#",
3+
"type": "array",
4+
"items": {
5+
"$id": "http://localhost:1234/neverAccessed",
6+
"oneOf": [
7+
{
8+
"$ref": "http://localhost:1234/schemaA.json#"
9+
},
10+
{
11+
"$ref": "http://localhost:1234/schemaB.json#"
12+
},
13+
{
14+
"$ref": "schemaC.json"
15+
}
16+
]
17+
}
18+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
[
2+
"valueA1",
3+
"valueB1",
4+
"valueC1"
5+
]
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"id": "http://json-schema.org/geo",
3+
"$schema": "http://json-schema.org/draft-06/schema#",
4+
"description": "A geographical coordinate",
5+
"type": "object",
6+
"properties": {
7+
"latitude": { "type": "number" },
8+
"longitude": { "type": "number" }
9+
}
10+
}

tests/src/test/resources/org/everit/json/schema/issues/issue36/schema.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
},
4848
"warehouseLocation": {
4949
"description": "Coordinates of the warehouse with the product",
50-
"$ref": "http://json-schema.org/geo"
50+
"$ref": "http://localhost:1234/geo"
5151
}
5252
},
5353
"required": [

0 commit comments

Comments
 (0)