@@ -114,28 +114,25 @@ private JsonObject lookupObjById(JsonValue val, String idAttrVal) {
114
114
return null ;
115
115
}
116
116
117
+ private Schema .Builder <?> performQueryEvaluation (String mapKey , JsonPointerEvaluator pointerEvaluator ) {
118
+ if (ls .pointerSchemas .containsKey (mapKey )) {
119
+ return ls .pointerSchemas .get (mapKey );
120
+ }
121
+ JsonValue rawInternalReferenced = pointerEvaluator .query ().getQueryResult ();
122
+ ReferenceSchema .Builder refBuilder = ReferenceSchema .builder ()
123
+ .refValue (mapKey );
124
+ ls .pointerSchemas .put (mapKey , refBuilder );
125
+ Schema referredSchema = new SchemaLoader (rawInternalReferenced .ls ).load ().build ();
126
+ refBuilder .build ().setReferredSchema (referredSchema );
127
+ return refBuilder ;
128
+ }
129
+
117
130
/**
118
131
* Returns a schema builder instance after looking up the JSON pointer.
119
132
*/
120
133
Schema .Builder <?> lookup (String relPointerString , JsonObject ctx ) {
121
134
if (isSameDocumentRef (relPointerString )) {
122
- if (ls .pointerSchemas .containsKey (relPointerString )) {
123
- return ls .pointerSchemas .get (relPointerString );
124
- }
125
- JsonValue rawInternalReferenced = JsonPointerEvaluator .forDocument (ls .rootSchemaJson (), relPointerString ).query ()
126
- .getQueryResult ();
127
- Object resultObject ;
128
- if (rawInternalReferenced instanceof JsonObject ) {
129
- resultObject = doExtend (withoutRef (ctx ), ((JsonObject ) rawInternalReferenced ).toMap ());
130
- } else {
131
- resultObject = rawInternalReferenced ;
132
- }
133
- ReferenceSchema .Builder refBuilder = ReferenceSchema .builder ()
134
- .refValue (relPointerString );
135
- ls .pointerSchemas .put (relPointerString , refBuilder );
136
- Schema referredSchema = new SchemaLoader (rawInternalReferenced .ls ).load ().build ();
137
- refBuilder .build ().setReferredSchema (referredSchema );
138
- return refBuilder ;
135
+ return performQueryEvaluation (relPointerString , JsonPointerEvaluator .forDocument (ls .rootSchemaJson (), relPointerString ));
139
136
}
140
137
String absPointerString = ReferenceResolver .resolve (ls .id , relPointerString ).toString ();
141
138
if (ls .pointerSchemas .containsKey (absPointerString )) {
@@ -151,10 +148,10 @@ Schema.Builder<?> lookup(String relPointerString, JsonObject ctx) {
151
148
return refBuilder ;
152
149
}
153
150
154
- boolean isExternal = ! absPointerString . startsWith ( "#" );
155
- JsonPointerEvaluator pointer = isExternal
156
- ? JsonPointerEvaluator .forURL ( httpClient , absPointerString , ls )
157
- : JsonPointerEvaluator .forDocument ( ls . rootSchemaJson () , absPointerString );
151
+ boolean isInternal = isSameDocumentRef ( absPointerString );
152
+ JsonPointerEvaluator pointer = isInternal
153
+ ? JsonPointerEvaluator .forDocument ( ls . rootSchemaJson () , absPointerString )
154
+ : JsonPointerEvaluator .forURL ( httpClient , absPointerString , ls );
158
155
ReferenceSchema .Builder refBuilder = ReferenceSchema .builder ()
159
156
.refValue (relPointerString );
160
157
ls .pointerSchemas .put (absPointerString , refBuilder );
@@ -167,12 +164,14 @@ Schema.Builder<?> lookup(String relPointerString, JsonObject ctx) {
167
164
}
168
165
// JsonValue resultObject = extend(withoutRef(ctx), result.getQueryResult());
169
166
SchemaLoader childLoader = ls .initChildLoader ()
170
- .resolutionScope (isExternal ? withoutFragment (absPointerString ) : ls .id )
167
+ .resolutionScope (! isInternal ? withoutFragment (absPointerString ) : ls .id )
171
168
.schemaJson (resultObject )
172
169
.rootSchemaJson (result .getContainingDocument ()).build ();
173
170
Schema referredSchema = childLoader .load ().build ();
174
171
refBuilder .build ().setReferredSchema (referredSchema );
175
172
return refBuilder ;
173
+
174
+ // return performQueryEvaluation(absPointerString, pointer);
176
175
}
177
176
178
177
private boolean isSameDocumentRef (String ref ) {
0 commit comments