Skip to content

Commit 289113a

Browse files
committed
merging master, resolving conflicts
2 parents 5c7eb40 + 944c129 commit 289113a

File tree

11 files changed

+50
-14
lines changed

11 files changed

+50
-14
lines changed

core/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,5 +177,10 @@
177177
<artifactId>handy-uri-templates</artifactId>
178178
<version>2.1.6</version>
179179
</dependency>
180+
<dependency>
181+
<groupId>com.google.re2j</groupId>
182+
<artifactId>re2j</artifactId>
183+
<version>1.1</version>
184+
</dependency>
180185
</dependencies>
181186
</project>

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,11 @@
1010
import java.util.Map;
1111
import java.util.Objects;
1212
import java.util.Set;
13-
import java.util.regex.Pattern;
1413

1514
import org.everit.json.schema.internal.JSONPrinter;
1615

16+
import com.google.re2j.Pattern;
17+
1718
/**
1819
* Object schema validator.
1920
*/
@@ -88,13 +89,13 @@ public Builder minProperties(Integer minProperties) {
8889
return this;
8990
}
9091

91-
public Builder patternProperty(Pattern pattern, Schema schema) {
92-
this.patternProperties.put(pattern, schema);
92+
public Builder patternProperty(java.util.regex.Pattern pattern, Schema schema) {
93+
this.patternProperties.put(Pattern.compile(pattern.toString()), schema);
9394
return this;
9495
}
9596

9697
public Builder patternProperty(String pattern, Schema schema) {
97-
return patternProperty(Pattern.compile(pattern), schema);
98+
return patternProperty(java.util.regex.Pattern.compile(pattern), schema);
9899
}
99100

100101
/**

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,10 @@
33
import static java.lang.String.format;
44
import static java.util.Objects.requireNonNull;
55

6+
import com.google.re2j.Pattern;
67
import java.util.ArrayList;
78
import java.util.List;
89
import java.util.Set;
9-
import java.util.regex.Pattern;
10-
1110
import org.json.JSONObject;
1211

1312
class ObjectSchemaValidatingVisitor extends Visitor {

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@
44
import static org.everit.json.schema.FormatValidator.NONE;
55

66
import java.util.Objects;
7-
import java.util.regex.Pattern;
87

98
import org.everit.json.schema.internal.JSONPrinter;
109

10+
import com.google.re2j.Pattern;
11+
1112
/**
1213
* {@code String} schema validator.
1314
*/
@@ -114,10 +115,14 @@ public Integer getMinLength() {
114115
return minLength;
115116
}
116117

117-
public Pattern getPattern() {
118+
Pattern getRE2JPattern() {
118119
return pattern;
119120
}
120121

122+
public java.util.regex.Pattern getPattern() {
123+
return java.util.regex.Pattern.compile(pattern.toString());
124+
}
125+
121126
@Override void accept(Visitor visitor) {
122127
visitor.visitStringSchema(this);
123128
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
import static java.lang.String.format;
44
import static java.util.Objects.requireNonNull;
55

6+
import com.google.re2j.Pattern;
67
import java.util.Optional;
7-
import java.util.regex.Pattern;
88

99
public class StringSchemaValidatingVisitor extends Visitor {
1010

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
import java.util.List;
44
import java.util.Map;
55
import java.util.Set;
6-
import java.util.regex.Pattern;
6+
7+
import com.google.re2j.Pattern;
78

89
abstract class Visitor {
910

@@ -165,7 +166,7 @@ void visitRequiredPropertyName(String requiredPropName) {
165166
void visitStringSchema(StringSchema stringSchema) {
166167
visitMinLength(stringSchema.getMinLength());
167168
visitMaxLength(stringSchema.getMaxLength());
168-
visitPattern(stringSchema.getPattern());
169+
visitPattern(stringSchema.getRE2JPattern());
169170
visitFormat(stringSchema.getFormatValidator());
170171
}
171172

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import static org.junit.Assert.assertTrue;
2323
import static org.junit.Assert.fail;
2424

25+
import com.google.re2j.Pattern;
2526
import java.util.List;
2627
import java.util.concurrent.Callable;
2728

@@ -357,6 +358,7 @@ public void equalsVerifier() {
357358
EqualsVerifier.forClass(ObjectSchema.class)
358359
.withRedefinedSuperclass()
359360
.withIgnoredFields("schemaLocation")
361+
.withPrefabValues(Pattern.class, Pattern.compile("red"), Pattern.compile("black"))
360362
.suppress(Warning.STRICT_INHERITANCE)
361363
.verify();
362364
}

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
import org.junit.Assert;
2727
import org.junit.Test;
2828

29+
import com.google.re2j.Pattern;
30+
2931
import nl.jqno.equalsverifier.EqualsVerifier;
3032
import nl.jqno.equalsverifier.Warning;
3133

@@ -118,6 +120,7 @@ public void equalsVerifier() {
118120
EqualsVerifier.forClass(StringSchema.class)
119121
.withRedefinedSuperclass()
120122
.withIgnoredFields("schemaLocation")
123+
.withPrefabValues(Pattern.class, Pattern.compile("red"), Pattern.compile("black"))
121124
.suppress(Warning.STRICT_INHERITANCE)
122125
.verify();
123126
}

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

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,12 +69,19 @@ private void initJetty(final File documentRoot) {
6969
}
7070
}
7171

72+
private static JSONObject fileAsJson(File file) {
73+
try {
74+
return new JSONObject(new JSONTokener(new FileInputStream(file)));
75+
} catch (FileNotFoundException e) {
76+
throw new UncheckedIOException(e);
77+
}
78+
}
79+
7280
private Schema loadSchema() {
7381
Optional<File> schemaFile = fileByName("schema.json");
7482
try {
7583
if (schemaFile.isPresent()) {
76-
JSONObject schemaObj = new JSONObject(
77-
new JSONTokener(new FileInputStream(schemaFile.get())));
84+
JSONObject schemaObj = fileAsJson(schemaFile.get());
7885
return SchemaLoader.load(schemaObj);
7986
}
8087
throw new RuntimeException(issueDir.getCanonicalPath() + "/schema.json is not found");
@@ -99,18 +106,29 @@ public void test() {
99106
stopJetty();
100107
}
101108

109+
private Validator createValidator() {
110+
Validator.ValidatorBuilder builder = Validator.builder();
111+
fileByName("validator-config.json").map(file -> fileAsJson(file))
112+
.map(json -> json.getBoolean("failEarly"))
113+
.filter(bool -> Boolean.TRUE.equals(bool))
114+
.ifPresent(t -> builder.failEarly());
115+
return builder.build();
116+
}
117+
102118
private void validate(final File file, final Schema schema, final boolean shouldBeValid) {
103119
ValidationException thrown = null;
104120

105121
Object subject = loadJsonFile(file);
106122

107123
try {
108-
schema.validate(subject);
124+
Validator validator = createValidator();
125+
validator.performValidation(schema, subject);
109126
} catch (ValidationException e) {
110127
thrown = e;
111128
}
112129

113130
if (shouldBeValid && thrown != null) {
131+
thrown.getAllMessages().forEach(System.out::println);
114132
StringBuilder failureBuilder = new StringBuilder("validation failed with: " + thrown);
115133
for (ValidationException e : thrown.getCausingExceptions()) {
116134
failureBuilder.append("\n\t").append(e.getMessage());
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"type":"object", "properties": {"prop": {"pattern": "a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}}}

0 commit comments

Comments
 (0)