@@ -123,36 +123,25 @@ private Schema.Builder<?> performQueryEvaluation(String mapKey, JsonPointerEvalu
123
123
if (ls .pointerSchemas .containsKey (absolutePointer )) {
124
124
return ls .pointerSchemas .get (absolutePointer );
125
125
}
126
- JsonValue rawInternalReferenced = pointerEvaluator .query ().getQueryResult ();
127
- ReferenceSchema .Builder refBuilder = ReferenceSchema .builder ()
128
- .refValue (mapKey );
129
- ls .pointerSchemas .put (absolutePointer , refBuilder );
130
- Schema referredSchema = new SchemaLoader (rawInternalReferenced .ls ).load ().build ();
131
- refBuilder .build ().setReferredSchema (referredSchema );
132
- return refBuilder ;
126
+ JsonValue referencedRawSchema = pointerEvaluator .query ().getQueryResult ();
127
+ return createReferenceSchema (mapKey , absolutePointer , referencedRawSchema );
133
128
}
134
129
135
130
/**
136
131
* Returns a schema builder instance after looking up the JSON pointer.
137
132
*/
138
133
Schema .Builder <?> lookup (String relPointerString , JsonObject ctx ) {
139
- if (isSameDocumentRef (relPointerString )) {
140
- return performQueryEvaluation (relPointerString , JsonPointerEvaluator .forDocument (ls .rootSchemaJson (), relPointerString ));
141
- }
142
134
String absPointerString = ReferenceResolver .resolve (ls .id , relPointerString ).toString ();
143
135
if (ls .pointerSchemas .containsKey (absPointerString )) {
144
136
return ls .pointerSchemas .get (absPointerString );
145
137
}
146
138
JsonValue rawInternalReferenced = lookupObjById (ls .rootSchemaJson , absPointerString );
147
139
if (rawInternalReferenced != null ) {
148
- ReferenceSchema .Builder refBuilder = ReferenceSchema .builder ()
149
- .refValue (relPointerString );
150
- ls .pointerSchemas .put (absPointerString , refBuilder );
151
- Schema referredSchema = new SchemaLoader (rawInternalReferenced .ls ).load ().build ();
152
- refBuilder .build ().setReferredSchema (referredSchema );
153
- return refBuilder ;
140
+ return createReferenceSchema (relPointerString , absPointerString , rawInternalReferenced );
141
+ }
142
+ if (isSameDocumentRef (relPointerString )) {
143
+ return performQueryEvaluation (relPointerString , JsonPointerEvaluator .forDocument (ls .rootSchemaJson (), relPointerString ));
154
144
}
155
-
156
145
JsonPointerEvaluator pointer = createPointerEvaluator (absPointerString );
157
146
ReferenceSchema .Builder refBuilder = ReferenceSchema .builder ()
158
147
.refValue (relPointerString );
@@ -172,6 +161,14 @@ Schema.Builder<?> lookup(String relPointerString, JsonObject ctx) {
172
161
return refBuilder ;
173
162
}
174
163
164
+ private Schema .Builder <?> createReferenceSchema (String relPointerString , String absPointerString , JsonValue rawReferenced ) {
165
+ ReferenceSchema .Builder refBuilder = ReferenceSchema .builder ().refValue (relPointerString );
166
+ ls .pointerSchemas .put (absPointerString , refBuilder );
167
+ Schema referredSchema = new SchemaLoader (rawReferenced .ls ).load ().build ();
168
+ refBuilder .build ().setReferredSchema (referredSchema );
169
+ return refBuilder ;
170
+ }
171
+
175
172
private JsonObject initJsonObjectById (URI id ) {
176
173
JsonObject o = JsonValue .of (ls .config .schemasByURI .get (id )).requireObject ();
177
174
new LoadingState (ls .config , ls .pointerSchemas , o , o , id , SchemaLocation .parseURI (id .toString ()));
0 commit comments