Skip to content

Commit 966e9bb

Browse files
committed
checkstyle fixes
1 parent a47d276 commit 966e9bb

File tree

2 files changed

+84
-49
lines changed

2 files changed

+84
-49
lines changed

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

Lines changed: 69 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public class SchemaLoader {
6161
*/
6262
@FunctionalInterface
6363
private interface CombinedSchemaProvider
64-
extends Function<Collection<Schema>, CombinedSchema.Builder> {
64+
extends Function<Collection<Schema>, CombinedSchema.Builder> {
6565

6666
}
6767

@@ -115,7 +115,7 @@ public static Schema load(final JSONObject schemaJson) {
115115
public static Schema load(final JSONObject schemaJson, final SchemaClient httpClient) {
116116
String schemaId = schemaJson.optString("id");
117117
return new SchemaLoader(schemaId, schemaJson, schemaJson, new HashMap<>(), httpClient)
118-
.load().build();
118+
.load().build();
119119
}
120120

121121
private final SchemaClient httpClient;
@@ -143,29 +143,29 @@ public static Schema load(final JSONObject schemaJson, final SchemaClient httpCl
143143

144144
private void addDependencies(final Builder builder, final JSONObject deps) {
145145
Arrays.stream(JSONObject.getNames(deps))
146-
.forEach(ifPresent -> addDependency(builder, ifPresent, deps.get(ifPresent)));
146+
.forEach(ifPresent -> addDependency(builder, ifPresent, deps.get(ifPresent)));
147147
}
148148

149149
private void addDependency(final Builder builder, final String ifPresent, final Object deps) {
150150
typeMultiplexer(deps)
151-
.ifObject().then(obj -> {
152-
builder.schemaDependency(ifPresent, loadChild(obj).build());
153-
})
154-
.ifIs(JSONArray.class).then(propNames -> {
155-
IntStream.range(0, propNames.length())
156-
.mapToObj(i -> propNames.getString(i))
157-
.forEach(dependency -> builder.propertyDependency(ifPresent, dependency));
158-
}).requireAny();
151+
.ifObject().then(obj -> {
152+
builder.schemaDependency(ifPresent, loadChild(obj).build());
153+
})
154+
.ifIs(JSONArray.class).then(propNames -> {
155+
IntStream.range(0, propNames.length())
156+
.mapToObj(i -> propNames.getString(i))
157+
.forEach(dependency -> builder.propertyDependency(ifPresent, dependency));
158+
}).requireAny();
159159
}
160160

161161
private void addPropertySchemaDefinition(final String keyOfObj, final Object definition,
162162
final ObjectSchema.Builder builder) {
163163
typeMultiplexer(definition)
164-
.ifObject()
165-
.then(obj -> {
166-
builder.addPropertySchema(keyOfObj, loadChild(obj).build());
167-
})
168-
.requireAny();
164+
.ifObject()
165+
.then(obj -> {
166+
builder.addPropertySchema(keyOfObj, loadChild(obj).build());
167+
})
168+
.requireAny();
169169
}
170170

171171
private CombinedSchema.Builder buildAnyOfSchemaForMultipleTypes() {
@@ -188,15 +188,15 @@ private ArraySchema.Builder buildArraySchema() {
188188
ifPresent("uniqueItems", Boolean.class, builder::uniqueItems);
189189
if (schemaJson.has("additionalItems")) {
190190
typeMultiplexer("additionalItems", schemaJson.get("additionalItems"))
191-
.ifIs(Boolean.class).then(builder::additionalItems)
192-
.ifObject().then(jsonObj -> builder.schemaOfAdditionalItems(loadChild(jsonObj).build()))
193-
.requireAny();
191+
.ifIs(Boolean.class).then(builder::additionalItems)
192+
.ifObject().then(jsonObj -> builder.schemaOfAdditionalItems(loadChild(jsonObj).build()))
193+
.requireAny();
194194
}
195195
if (schemaJson.has("items")) {
196196
typeMultiplexer("items", schemaJson.get("items"))
197-
.ifObject().then(itemSchema -> builder.allItemSchema(loadChild(itemSchema).build()))
198-
.ifIs(JSONArray.class).then(arr -> buildTupleSchema(builder, arr))
199-
.requireAny();
197+
.ifObject().then(itemSchema -> builder.allItemSchema(loadChild(itemSchema).build()))
198+
.ifIs(JSONArray.class).then(arr -> buildTupleSchema(builder, arr))
199+
.requireAny();
200200
}
201201
return builder;
202202
}
@@ -205,8 +205,8 @@ private EnumSchema.Builder buildEnumSchema() {
205205
Set<Object> possibleValues = new HashSet<>();
206206
JSONArray arr = schemaJson.getJSONArray("enum");
207207
IntStream.range(0, arr.length())
208-
.mapToObj(arr::get)
209-
.forEach(possibleValues::add);
208+
.mapToObj(arr::get)
209+
.forEach(possibleValues::add);
210210
return EnumSchema.builder().possibleValues(possibleValues);
211211
}
212212

@@ -231,21 +231,21 @@ private ObjectSchema.Builder buildObjectSchema() {
231231
ifPresent("maxProperties", Integer.class, builder::maxProperties);
232232
if (schemaJson.has("properties")) {
233233
typeMultiplexer(schemaJson.get("properties"))
234-
.ifObject().then(propertyDefs -> {
235-
populatePropertySchemas(propertyDefs, builder);
236-
}).requireAny();
234+
.ifObject().then(propertyDefs -> {
235+
populatePropertySchemas(propertyDefs, builder);
236+
}).requireAny();
237237
}
238238
if (schemaJson.has("additionalProperties")) {
239239
typeMultiplexer("additionalProperties", schemaJson.get("additionalProperties"))
240-
.ifIs(Boolean.class).then(builder::additionalProperties)
241-
.ifObject().then(def -> builder.schemaOfAdditionalProperties(loadChild(def).build()))
242-
.requireAny();
240+
.ifIs(Boolean.class).then(builder::additionalProperties)
241+
.ifObject().then(def -> builder.schemaOfAdditionalProperties(loadChild(def).build()))
242+
.requireAny();
243243
}
244244
if (schemaJson.has("required")) {
245245
JSONArray requiredJson = schemaJson.getJSONArray("required");
246246
IntStream.range(0, requiredJson.length())
247-
.mapToObj(requiredJson::getString)
248-
.forEach(builder::addRequiredProperty);
247+
.mapToObj(requiredJson::getString)
248+
.forEach(builder::addRequiredProperty);
249249
}
250250
if (schemaJson.has("patternProperties")) {
251251
JSONObject patternPropsJson = schemaJson.getJSONObject("patternProperties");
@@ -289,11 +289,17 @@ private StringSchema.Builder buildStringSchema() {
289289
private void buildTupleSchema(final ArraySchema.Builder builder, final JSONArray itemSchema) {
290290
for (int i = 0; i < itemSchema.length(); ++i) {
291291
typeMultiplexer(itemSchema.get(i))
292-
.ifObject().then(schema -> builder.addItemSchema(loadChild(schema).build()))
293-
.requireAny();
292+
.ifObject().then(schema -> builder.addItemSchema(loadChild(schema).build()))
293+
.requireAny();
294294
}
295295
}
296296

297+
/**
298+
* Underscore-like extend function. Merges the properties of {@code additional} and
299+
* {@code original}. Neither {@code additional} nor {@code original} will be modified, but the
300+
* returned object may be referentially the same as one of the parameters (in case the other
301+
* parameter is an empty object).
302+
*/
297303
JSONObject extend(final JSONObject additional, final JSONObject original) {
298304
String[] additionalNames = JSONObject.getNames(additional);
299305
if (additionalNames == null) {
@@ -304,10 +310,8 @@ JSONObject extend(final JSONObject additional, final JSONObject original) {
304310
return additional;
305311
}
306312
JSONObject rval = new JSONObject();
307-
Arrays.stream(originalNames)
308-
.forEach(name -> rval.put(name, original.get(name)));
309-
Arrays.stream(additionalNames)
310-
.forEach(name -> rval.put(name, additional.get(name)));
313+
Arrays.stream(originalNames).forEach(name -> rval.put(name, original.get(name)));
314+
Arrays.stream(additionalNames).forEach(name -> rval.put(name, additional.get(name)));
311315
return rval;
312316
}
313317

@@ -390,23 +394,23 @@ private Schema.Builder<?> loadForType(final Object type) {
390394
/**
391395
* Returns a schema builder instance after looking up the JSON pointer.
392396
*/
393-
private Schema.Builder<?> lookupReference(final String relPointerString, final JSONObject context) {
397+
private Schema.Builder<?> lookupReference(final String relPointerString, final JSONObject ctx) {
394398
String absPointerString = ReferenceResolver.resolve(id, relPointerString);
395399
if (pointerSchemas.containsKey(absPointerString)) {
396400
return pointerSchemas.get(absPointerString);
397401
}
398402
JSONPointer pointer = absPointerString.startsWith("#")
399403
? JSONPointer.forDocument(rootSchemaJson, absPointerString)
400-
: JSONPointer.forURL(httpClient, absPointerString);
401-
ReferenceSchema.Builder refBuilder = ReferenceSchema.builder();
402-
pointerSchemas.put(absPointerString, refBuilder);
403-
QueryResult result = pointer.query();
404-
JSONObject resultObject = extend(context, result.getQueryResult());
405-
SchemaLoader childLoader = new SchemaLoader(id, resultObject,
406-
result.getContainingDocument(), pointerSchemas, httpClient);
407-
Schema referredSchema = childLoader.load().build();
408-
refBuilder.build().setReferredSchema(referredSchema);
409-
return refBuilder;
404+
: JSONPointer.forURL(httpClient, absPointerString);
405+
ReferenceSchema.Builder refBuilder = ReferenceSchema.builder();
406+
pointerSchemas.put(absPointerString, refBuilder);
407+
QueryResult result = pointer.query();
408+
JSONObject resultObject = extend(withoutRef(ctx), result.getQueryResult());
409+
SchemaLoader childLoader = new SchemaLoader(id, resultObject,
410+
result.getContainingDocument(), pointerSchemas, httpClient);
411+
Schema referredSchema = childLoader.load().build();
412+
refBuilder.build().setReferredSchema(referredSchema);
413+
return refBuilder;
410414
}
411415

412416
private void populatePropertySchemas(final JSONObject propertyDefs,
@@ -481,4 +485,20 @@ private TypeBasedMultiplexer typeMultiplexer(final String keyOfObj, final Object
481485
});
482486
return multiplexer;
483487
}
488+
489+
/**
490+
* Rerurns a shallow copy of the {@code original} object, but it does not copy the {@code $ref}
491+
* key, in case it is present in {@code original}.
492+
*/
493+
JSONObject withoutRef(final JSONObject original) {
494+
String[] names = JSONObject.getNames(original);
495+
if (names == null) {
496+
return original;
497+
}
498+
JSONObject rval = new JSONObject();
499+
Arrays.stream(names)
500+
.filter(name -> !"$ref".equals(name))
501+
.forEach(name -> rval.put(name, original.get(name)));
502+
return rval;
503+
}
484504
}

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

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,18 @@
1+
/*
2+
* Copyright (C) 2011 Everit Kft. (http://www.everit.org)
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
116
package org.everit.json.schema.loader;
217

318
import java.util.HashMap;

0 commit comments

Comments
 (0)