Skip to content

Commit 45c8584

Browse files
committed
fixing failing oneOf and anyOf tests, which were caused by a bug introduced in version 1.7.0
1 parent d16b8ea commit 45c8584

File tree

4 files changed

+47
-36
lines changed

4 files changed

+47
-36
lines changed

core/src/main/java/org/everit/json/schema/ValidatingVisitor.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
package org.everit.json.schema;
22

3-
import org.json.JSONObject;
3+
import static java.lang.String.format;
4+
import static org.everit.json.schema.EnumSchema.toJavaValue;
45

56
import java.util.ArrayList;
67
import java.util.Collection;
78
import java.util.List;
89

9-
import static java.lang.String.format;
10-
import static org.everit.json.schema.EnumSchema.toJavaValue;
10+
import org.json.JSONObject;
1111

1212
class ValidatingVisitor extends Visitor {
1313

@@ -150,10 +150,9 @@ void visitConditionalSchema(ConditionalSchema conditionalSchema) {
150150
ValidationException getFailureOfSchema(Schema schema, Object input) {
151151
Object origSubject = this.subject;
152152
this.subject = input;
153-
return failureReporter.inContextOfSchema(schema, () -> {
154-
visit(schema);
155-
this.subject = origSubject;
156-
});
153+
ValidationException rval = failureReporter.inContextOfSchema(schema, () -> visit(schema));
154+
this.subject = origSubject;
155+
return rval;
157156
}
158157

159158
void failIfErrorFound() {

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

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,20 @@
11
package org.everit.json.schema.loader;
22

3-
import org.everit.json.schema.CombinedSchema;
4-
import org.everit.json.schema.Schema;
5-
import org.everit.json.schema.SchemaException;
6-
import org.json.JSONArray;
3+
import static java.lang.String.format;
4+
import static java.util.Arrays.asList;
5+
import static java.util.Objects.requireNonNull;
76

8-
import java.util.*;
7+
import java.util.ArrayList;
8+
import java.util.Collection;
9+
import java.util.HashMap;
10+
import java.util.List;
11+
import java.util.Map;
12+
import java.util.Optional;
913
import java.util.function.Function;
1014
import java.util.stream.Collectors;
11-
import java.util.stream.IntStream;
1215

13-
import static java.lang.String.format;
14-
import static java.util.Arrays.asList;
15-
import static java.util.Objects.requireNonNull;
16-
import static java.util.stream.Collectors.joining;
16+
import org.everit.json.schema.CombinedSchema;
17+
import org.everit.json.schema.Schema;
1718

1819
/**
1920
* @author erosb

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

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -258,18 +258,6 @@ public static Schema load(final JSONObject schemaJson, final SchemaClient httpCl
258258

259259
private final ExclusiveLimitHandler exclusiveLimitHandler;
260260

261-
private URI extractURIFromIdAttribute(JsonObject obj) {
262-
return obj.maybe(config.specVersion.idKeyword()).map(JsonValue::requireString)
263-
.map(rawId -> {
264-
try {
265-
return new URI(rawId);
266-
} catch (URISyntaxException e) {
267-
throw new RuntimeException(e);
268-
}
269-
})
270-
.orElse(null);
271-
}
272-
273261
/**
274262
* Constructor.
275263
*

core/src/test/java/org/everit/json/schema/CombinedSchemaTest.java

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,18 @@
1515
*/
1616
package org.everit.json.schema;
1717

18-
import nl.jqno.equalsverifier.EqualsVerifier;
19-
import nl.jqno.equalsverifier.Warning;
18+
import static java.util.Arrays.asList;
19+
import static org.junit.Assert.assertEquals;
20+
import static org.junit.Assert.assertTrue;
21+
22+
import java.util.List;
23+
2024
import org.json.JSONObject;
2125
import org.junit.Assert;
2226
import org.junit.Test;
2327

24-
import java.util.List;
25-
26-
import static java.util.Arrays.asList;
27-
import static org.junit.Assert.assertEquals;
28-
import static org.junit.Assert.assertTrue;
28+
import nl.jqno.equalsverifier.EqualsVerifier;
29+
import nl.jqno.equalsverifier.Warning;
2930

3031
public class CombinedSchemaTest {
3132

@@ -134,4 +135,26 @@ public void toStringTest() {
134135
+ "]}"), actual));
135136
}
136137

138+
@Test
139+
public void oneOfEarlyFailureTest() {
140+
CombinedSchema subject = CombinedSchema
141+
.oneOf(asList(ObjectSchema.builder()
142+
.addPropertySchema("bar", NumberSchema.builder().requiresInteger(true).build())
143+
.addRequiredProperty("bar")
144+
.build(),
145+
ObjectSchema.builder()
146+
.addPropertySchema("foo", StringSchema.builder().requiresString(true).build())
147+
.addRequiredProperty("foo")
148+
.build()))
149+
.build();
150+
Validator validator = Validator.builder().failEarly().build();
151+
validator.performValidation(subject, new JSONObject("{\"foo\":\"a\"}"));
152+
validator.performValidation(subject, new JSONObject("{\"bar\":2}"));
153+
TestSupport.failureOf(subject)
154+
.validator(validator)
155+
.input(new JSONObject("{\"bar\":\"quux\", \"foo\":2}"))
156+
.expectedSchemaLocation(null)
157+
.expect();
158+
}
159+
137160
}

0 commit comments

Comments
 (0)