Skip to content

Commit 55f5aaa

Browse files
committed
implemented uri-reference format
1 parent 67fcdb3 commit 55f5aaa

File tree

5 files changed

+64
-31
lines changed

5 files changed

+64
-31
lines changed

core/src/main/java/org/everit/json/schema/internal/URIReferenceFormatValidator.java

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

3+
import static java.lang.String.format;
4+
5+
import java.net.URI;
6+
import java.net.URISyntaxException;
37
import java.util.Optional;
48

59
import org.everit.json.schema.FormatValidator;
610

711
public class URIReferenceFormatValidator implements FormatValidator {
812

913
@Override public Optional<String> validate(String subject) {
10-
throw new UnsupportedOperationException("not yet implemented");
14+
try {
15+
new URI(subject);
16+
return Optional.empty();
17+
} catch (URISyntaxException e) {
18+
return Optional.of(format("[%s] is not a valid URI reference", subject));
19+
}
1120
}
1221

1322
@Override public String formatName() {

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

Lines changed: 2 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,9 @@
1515
*/
1616
package org.everit.json.schema.internal;
1717

18-
import static org.junit.Assert.assertTrue;
18+
import static org.everit.json.schema.internal.ValidatorTestSupport.assertFailure;
19+
import static org.everit.json.schema.internal.ValidatorTestSupport.assertSuccess;
1920

20-
import java.util.Optional;
21-
22-
import org.everit.json.schema.FormatValidator;
23-
import org.junit.Assert;
2421
import org.junit.Test;
2522

2623
public class DefaultFormatValidatorTest {
@@ -29,20 +26,6 @@ public class DefaultFormatValidatorTest {
2926

3027
private static final String IPV6_ADDR = "2001:db8:85a3:0:0:8a2e:370:7334";
3128

32-
private void assertFailure(final String subject, final FormatValidator format,
33-
final String expectedFailure) {
34-
Optional<String> opt = format.validate(subject);
35-
Assert.assertNotNull("the optional is not null", opt);
36-
assertTrue("failure exists", opt.isPresent());
37-
Assert.assertEquals(expectedFailure, opt.get());
38-
}
39-
40-
private void assertSuccess(final String subject, final FormatValidator format) {
41-
Optional<String> opt = format.validate(subject);
42-
Assert.assertNotNull("the optional is not null", opt);
43-
Assert.assertFalse("failure not exist", opt.isPresent());
44-
}
45-
4629
@Test
4730
public void dateTimeExceedingLimits() {
4831
assertFailure("1996-60-999T16:39:57-08:00", new DateTimeFormatValidator(),
Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
package org.everit.json.schema.internal;
22

3-
import static org.junit.Assert.assertEquals;
4-
import static org.junit.Assert.assertSame;
5-
6-
import java.util.Optional;
3+
import static org.everit.json.schema.internal.ValidatorTestSupport.assertFailure;
4+
import static org.everit.json.schema.internal.ValidatorTestSupport.assertSuccess;
75

86
import org.junit.Test;
97

@@ -13,21 +11,17 @@ public class JsonPointerFormatValidatorTest {
1311

1412
@Test
1513
public void uriSuccess() {
16-
assertEmpty(subject.validate("#/hello"));
17-
}
18-
19-
private void assertEmpty(Optional<String> actual) {
20-
assertSame(Optional.empty(), actual);
14+
assertSuccess("#/hello", subject);
2115
}
2216

2317
@Test
2418
public void stringSuccess() {
25-
assertEmpty(subject.validate("/hello"));
19+
assertSuccess("/hello", subject);
2620
}
2721

2822
@Test
2923
public void illegalLeadingCharFailure() {
30-
assertEquals(Optional.of("[aaa] is not a valid JSON pointer"), subject.validate("aaa"));
24+
assertFailure("aaa", subject, "[aaa] is not a valid JSON pointer");
3125
}
3226

3327
}

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

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

3+
import static org.everit.json.schema.internal.ValidatorTestSupport.assertFailure;
4+
import static org.everit.json.schema.internal.ValidatorTestSupport.assertSuccess;
5+
36
import org.junit.Test;
47

58
public class URIReferenceFormatValidatorTest {
@@ -8,6 +11,22 @@ public class URIReferenceFormatValidatorTest {
811

912
@Test
1013
public void success() {
14+
assertSuccess("http://foo.bar/?baz=qux#quux", subject);
15+
}
16+
17+
@Test
18+
public void protocolRelativeRef() {
19+
assertSuccess("//foo.bar/?baz=qux#quux", subject);
20+
}
1121

22+
@Test
23+
public void pathSuccess() {
24+
assertSuccess("/abc", subject);
1225
}
26+
27+
@Test
28+
public void illegalCharFailure() {
29+
assertFailure("\\\\WINDOWS\\fileshare", subject, "[\\\\WINDOWS\\fileshare] is not a valid URI reference");
30+
}
31+
1332
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package org.everit.json.schema.internal;
2+
3+
import static org.junit.Assert.assertTrue;
4+
5+
import java.util.Optional;
6+
7+
import org.everit.json.schema.FormatValidator;
8+
import org.junit.Assert;
9+
10+
public final class ValidatorTestSupport {
11+
12+
static void assertSuccess(final String subject, final FormatValidator format) {
13+
Optional<String> opt = format.validate(subject);
14+
Assert.assertNotNull("the optional is not null", opt);
15+
Assert.assertFalse("failure not exist", opt.isPresent());
16+
}
17+
18+
static void assertFailure(final String subject, final FormatValidator format,
19+
final String expectedFailure) {
20+
Optional<String> opt = format.validate(subject);
21+
Assert.assertNotNull("the optional is not null", opt);
22+
assertTrue("failure exists", opt.isPresent());
23+
Assert.assertEquals(expectedFailure, opt.get());
24+
}
25+
26+
private ValidatorTestSupport() {
27+
}
28+
}

0 commit comments

Comments
 (0)