Skip to content

Commit 7b489c5

Browse files
committed
merging master, resolving conflict in SpecificationVersion
2 parents f0b4644 + 86c2943 commit 7b489c5

File tree

10 files changed

+89
-24
lines changed

10 files changed

+89
-24
lines changed

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

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

3-
public class EarlyFailingFailureReporter extends ValidationFailureReporter {
3+
class EarlyFailingFailureReporter extends ValidationFailureReporter {
44

55
public EarlyFailingFailureReporter(Schema schema) {
66
super(schema);
@@ -13,4 +13,12 @@ public EarlyFailingFailureReporter(Schema schema) {
1313
@Override public void validationFinished() {
1414

1515
}
16+
17+
@Override ValidationException inContextOfSchema(Schema schema, Runnable task) {
18+
try {
19+
return super.inContextOfSchema(schema, task);
20+
} catch (ValidationException e) {
21+
return e;
22+
}
23+
}
1624
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
import org.json.JSONObject;
1212

13-
public class ObjectSchemaValidatingVisitor extends Visitor {
13+
class ObjectSchemaValidatingVisitor extends Visitor {
1414

1515
private final Object subject;
1616

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package org.everit.json.schema.internal;
2+
3+
import java.net.URI;
4+
import java.net.URISyntaxException;
5+
import java.util.Optional;
6+
import org.everit.json.schema.FormatValidator;
7+
8+
public class URIV4FormatValidator implements FormatValidator {
9+
10+
@Override
11+
public Optional<String> validate(final String subject) {
12+
try {
13+
URI uri = new URI(subject);
14+
return Optional.empty();
15+
} catch (URISyntaxException | NullPointerException e) {
16+
return failure(subject);
17+
}
18+
}
19+
20+
protected Optional<String> failure(String subject) {
21+
return Optional.of(String.format("[%s] is not a valid URI", subject));
22+
}
23+
24+
@Override public String formatName() {
25+
return "uri";
26+
}
27+
}

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,18 @@
1111
import java.util.Map;
1212

1313
import org.everit.json.schema.FormatValidator;
14+
import org.everit.json.schema.internal.DateFormatValidator;
1415
import org.everit.json.schema.internal.DateTimeFormatValidator;
1516
import org.everit.json.schema.internal.EmailFormatValidator;
1617
import org.everit.json.schema.internal.HostnameFormatValidator;
1718
import org.everit.json.schema.internal.IPV4Validator;
1819
import org.everit.json.schema.internal.IPV6Validator;
1920
import org.everit.json.schema.internal.JsonPointerFormatValidator;
21+
import org.everit.json.schema.internal.TimeFormatValidator;
2022
import org.everit.json.schema.internal.URIFormatValidator;
2123
import org.everit.json.schema.internal.URIReferenceFormatValidator;
2224
import org.everit.json.schema.internal.URITemplateFormatValidator;
23-
import org.everit.json.schema.internal.DateFormatValidator;
24-
import org.everit.json.schema.internal.TimeFormatValidator;
25+
import org.everit.json.schema.internal.URIV4FormatValidator;
2526

2627
/**
2728
* @author erosb
@@ -131,7 +132,7 @@ private static final List<String> keywords(String... keywords) {
131132
static {
132133
Map<String, FormatValidator> formatValidators = new HashMap<>();
133134
formatValidators.put("date-time", new DateTimeFormatValidator());
134-
formatValidators.put("uri", new URIFormatValidator());
135+
formatValidators.put("uri", new URIV4FormatValidator());
135136
formatValidators.put("email", new EmailFormatValidator());
136137
formatValidators.put("ipv4", new IPV4Validator());
137138
formatValidators.put("ipv6", new IPV6Validator());
@@ -144,6 +145,7 @@ private static final List<String> keywords(String... keywords) {
144145
static {
145146
Map<String, FormatValidator> v6Validators = new HashMap<>(V4_VALIDATORS);
146147
v6Validators.put("json-pointer", new JsonPointerFormatValidator());
148+
v6Validators.put("uri", new URIFormatValidator());
147149
v6Validators.put("uri-reference", new URIReferenceFormatValidator());
148150
v6Validators.put("uri-template", new URITemplateFormatValidator());
149151
V6_VALIDATORS = unmodifiableMap(v6Validators);

core/src/test/java/org/everit/json/schema/internal/DefaultFormatValidatorTest.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -266,9 +266,14 @@ public void uriFailure() {
266266
}
267267

268268
@Test
269-
public void relativeURIRefFails() {
269+
public void relativeURIRefFailsInDraft6() {
270270
assertFailure("abc", new URIFormatValidator(), "[abc] is not a valid URI");
271271
}
272+
273+
@Test
274+
public void relativeURIRefSucceedsInDraft4() {
275+
assertSuccess("abc", new URIV4FormatValidator());
276+
}
272277
//
273278
// @Test
274279
// public void protocolRelativeUriSuccess() {

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import static org.everit.json.schema.TestSupport.asStream;
55
import static org.everit.json.schema.TestSupport.loadAsV6;
66
import static org.everit.json.schema.TestSupport.v6Loader;
7+
import org.everit.json.schema.internal.URIV4FormatValidator;
78
import static org.everit.json.schema.loader.SpecificationVersion.DRAFT_6;
89
import static org.junit.Assert.assertEquals;
910
import static org.junit.Assert.assertFalse;
@@ -70,7 +71,7 @@ public void booleanSchema() {
7071
public void builderhasDefaultFormatValidators() {
7172
SchemaLoader actual = SchemaLoader.builder().schemaJson(get("booleanSchema")).build();
7273
assertTrue(actual.getFormatValidator("date-time").get() instanceof DateTimeFormatValidator);
73-
assertTrue(actual.getFormatValidator("uri").get() instanceof URIFormatValidator);
74+
assertTrue(actual.getFormatValidator("uri").get() instanceof URIV4FormatValidator);
7475
assertTrue(actual.getFormatValidator("email").get() instanceof EmailFormatValidator);
7576
assertTrue(actual.getFormatValidator("ipv4").get() instanceof IPV4Validator);
7677
assertTrue(actual.getFormatValidator("ipv6").get() instanceof IPV6Validator);

tests/src/test/java/org/everit/json/schema/TestCase.java

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ static List<Object[]> loadAsParamsFromPackage(String packageName) {
5757

5858
final boolean expectedToBeValid;
5959

60+
private Schema schema;
61+
6062
private TestCase(JSONObject input, JSONObject schemaTest, String fileName) {
6163
schemaDescription = "[" + fileName + "]/" + schemaTest.getString("description");
6264
schemaJson = schemaTest.get("schema");
@@ -65,28 +67,36 @@ private TestCase(JSONObject input, JSONObject schemaTest, String fileName) {
6567
inputData = input.get("data");
6668
}
6769

68-
private void testInEarlyFailureMode(Schema schema) {
69-
// validator = new ValidatorBuilder().failEarly().build();
70-
// validator = new ValidatorBuilder().failEarly().loadDefaultValues().build();
71-
// validator.performValidation(schema, inputData);
70+
public void runTestInEarlyFailureMode() {
71+
testWithValidator(Validator.builder().failEarly().build(), schema);
7272
}
7373

74-
public void runTest(SchemaLoader.SchemaLoaderBuilder loaderBuilder) {
74+
private void testWithValidator(Validator validator, Schema schema) {
7575
try {
76-
SchemaLoader loader = loaderBuilder.schemaJson(schemaJson).build();
77-
Schema schema = loader.load().build();
78-
schema.validate(inputData);
76+
validator.performValidation(schema, inputData);
7977
if (!expectedToBeValid) {
8078
throw new AssertionError("false success for " + inputDescription);
8179
}
8280
} catch (ValidationException e) {
8381
if (expectedToBeValid) {
8482
throw new AssertionError("false failure for " + inputDescription, e);
8583
}
84+
}
85+
}
86+
87+
public void loadSchema(SchemaLoader.SchemaLoaderBuilder loaderBuilder) {
88+
try {
89+
SchemaLoader loader = loaderBuilder.schemaJson(schemaJson).build();
90+
this.schema = loader.load().build();
8691
} catch (SchemaException e) {
8792
throw new AssertionError("schema loading failure for " + schemaDescription, e);
8893
} catch (JSONException e) {
8994
throw new AssertionError("schema loading error for " + schemaDescription, e);
9095
}
9196
}
97+
98+
public void runTestInCollectingMode() {
99+
testWithValidator(Validator.builder().build(), schema);
100+
}
101+
92102
}

tests/src/test/java/org/everit/json/schema/TestSuiteTest.java

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

3+
import java.util.List;
4+
35
import org.everit.json.schema.loader.SchemaLoader;
4-
import org.json.JSONException;
56
import org.junit.AfterClass;
67
import org.junit.BeforeClass;
78
import org.junit.Test;
89
import org.junit.runner.RunWith;
910
import org.junit.runners.Parameterized;
1011
import org.junit.runners.Parameterized.Parameters;
1112

12-
import java.util.List;
13-
1413
@RunWith(Parameterized.class)
1514
public class TestSuiteTest {
1615

@@ -35,10 +34,17 @@ public static void stopJetty() throws Exception {
3534

3635
public TestSuiteTest(TestCase testcase, String descr) {
3736
this.tc = testcase;
37+
tc.loadSchema(SchemaLoader.builder());
3838
}
3939

4040
@Test
41-
public void test() {
42-
tc.runTest(SchemaLoader.builder());
41+
public void testInCollectingMode() {
42+
tc.runTestInCollectingMode();
4343
}
44+
45+
@Test
46+
public void testInEarlyFailingMode() {
47+
tc.runTestInEarlyFailureMode();
48+
}
49+
4450
}

tests/src/test/java/org/everit/json/schema/V6TestSuiteTest.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,17 @@ public static void stopJetty() throws Exception {
3636

3737
public V6TestSuiteTest(TestCase testcase, String descr) {
3838
this.tc = testcase;
39+
tc.loadSchema(SchemaLoader.builder().draftV6Support());
3940
}
4041

4142
@Test
42-
public void test() {
43-
tc.runTest(SchemaLoader.builder().draftV6Support());
43+
public void testInCollectingMode() {
44+
tc.runTestInCollectingMode();
45+
}
46+
47+
@Test
48+
public void testInEarlyFailingMode() {
49+
tc.runTestInEarlyFailureMode();
4450
}
4551

4652
}

tests/src/test/resources/org/everit/json/schema/draft4/format.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@
4545
},
4646
{
4747
"data": "abc",
48-
"description": "an invalid URI though valid URI reference",
49-
"valid": false
48+
"description": "a URI that actually is a valid URI reference",
49+
"valid": true
5050
}
5151
]
5252
},

0 commit comments

Comments
 (0)