Skip to content

Commit 836e619

Browse files
committed
migrating CombinedSchema to visitor model
1 parent e78b80d commit 836e619

File tree

4 files changed

+32
-24
lines changed

4 files changed

+32
-24
lines changed

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

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -180,30 +180,8 @@ private ValidationException getFailure(final Schema schema, final Object subject
180180
}
181181
}
182182

183-
@Override
184-
public void validate(final Object subject) {
185-
List<ValidationException> failures = new ArrayList<>();
186-
for (Schema subschema : subschemas) {
187-
ValidationException exception = getFailure(subschema, subject);
188-
if (null != exception) {
189-
failures.add(exception);
190-
}
191-
}
192-
int matchingCount = subschemas.size() - failures.size();
193-
try {
194-
criterion.validate(subschemas.size(), matchingCount);
195-
} catch (ValidationException e) {
196-
throw new ValidationException(this,
197-
new StringBuilder(e.getPointerToViolation()),
198-
e.getMessage(),
199-
failures,
200-
e.getKeyword(),
201-
getSchemaLocation());
202-
}
203-
}
204-
205183
@Override void accept(Visitor visitor) {
206-
throw new UnsupportedOperationException("not yet implemented");
184+
visitor.visitCombinedSchema(this);
207185
}
208186

209187
@Override

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

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@
33
import static java.lang.String.format;
44
import static org.everit.json.schema.EnumSchema.toJavaValue;
55

6+
import java.util.ArrayList;
7+
import java.util.Collection;
8+
import java.util.List;
9+
610
import org.json.JSONObject;
711

812
class ValidatingVisitor extends Visitor {
@@ -91,6 +95,29 @@ private static boolean isNull(Object obj) {
9195
stringSchema.accept(new StringSchemaValidatingVisitor(subject, failureReporter));
9296
}
9397

98+
@Override void visitCombinedSchema(CombinedSchema combinedSchema) {
99+
List<ValidationException> failures = new ArrayList<>();
100+
Collection<Schema> subschemas = combinedSchema.getSubschemas();
101+
CombinedSchema.ValidationCriterion criterion = combinedSchema.getCriterion();
102+
for (Schema subschema : subschemas) {
103+
ValidationException exception = getFailureOfSchema(subschema, subject);
104+
if (null != exception) {
105+
failures.add(exception);
106+
}
107+
}
108+
int matchingCount = subschemas.size() - failures.size();
109+
try {
110+
criterion.validate(subschemas.size(), matchingCount);
111+
} catch (ValidationException e) {
112+
throw new ValidationException(combinedSchema,
113+
new StringBuilder(e.getPointerToViolation()),
114+
e.getMessage(),
115+
failures,
116+
e.getKeyword(),
117+
combinedSchema.getSchemaLocation());
118+
}
119+
}
120+
94121
ValidationException getFailureOfSchema(Schema schema, Object input) {
95122
Object origSubject = this.subject;
96123
this.subject = input;

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,4 +180,7 @@ void visitMaxLength(Integer maxLength) {
180180

181181
void visitMinLength(Integer minLength) {
182182
}
183+
184+
void visitCombinedSchema(CombinedSchema combinedSchema) {
185+
}
183186
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ private JSONObject readObject(final String fileName) {
1616
@Test
1717
public void test() {
1818
Schema schema = SchemaLoader.load(readObject("schema.json"));
19-
Object subject = readObject("createSubject.json");
19+
Object subject = readObject("subject.json");
2020
try {
2121
schema.validate(subject);
2222
Assert.fail("did not throw exception");

0 commit comments

Comments
 (0)