Skip to content

Commit eab8bb1

Browse files
committed
initial test for checking validation events; hashCode/equals added
1 parent ff0e317 commit eab8bb1

12 files changed

+126
-53
lines changed

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

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

3+
import static java.util.Objects.requireNonNull;
34

45
import java.util.Arrays;
56

6-
import static java.util.Objects.requireNonNull;
7-
87
class ConditionalSchemaValidatingVisitor extends Visitor {
98

109
private final Object subject;
@@ -35,7 +34,7 @@ void visitIfSchema(Schema ifSchema) {
3534
if (conditionalSchema.getIfSchema().isPresent()) {
3635
ifSchemaException = owner.getFailureOfSchema(ifSchema, subject);
3736
}
38-
owner.reportSchemaMatchEvent(ifSchema, ifSchemaException);
37+
// owner.reportSchemaMatchEvent(ifSchema, ifSchemaException);
3938
}
4039

4140
@Override
@@ -50,10 +49,10 @@ void visitThenSchema(Schema thenSchema) {
5049
"then",
5150
conditionalSchema.getSchemaLocation());
5251

53-
owner.reportSchemaMatchEvent(thenSchema, failure);
52+
// owner.reportSchemaMatchEvent(thenSchema, failure);
5453
owner.failure(failure);
5554
} else {
56-
owner.reportSchemaMatchEvent(thenSchema, null);
55+
// owner.reportSchemaMatchEvent(thenSchema, null);
5756
}
5857
}
5958
}
@@ -70,10 +69,10 @@ void visitElseSchema(Schema elseSchema) {
7069
"else",
7170
conditionalSchema.getSchemaLocation());
7271

73-
owner.reportSchemaMatchEvent(elseSchema, failure);
72+
// owner.reportSchemaMatchEvent(elseSchema, failure);
7473
owner.failure(failure);
7574
}
76-
owner.reportSchemaMatchEvent(elseSchema, null);
75+
// owner.reportSchemaMatchEvent(elseSchema, null);
7776
}
7877
}
7978

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

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@
1010
import java.util.Collection;
1111
import java.util.List;
1212

13+
import org.everit.json.schema.listener.CombinedSchemaMismatchEvent;
14+
import org.everit.json.schema.listener.CombinedSchemaValidationEvent;
1315
import org.everit.json.schema.listener.SchemaReferencedEvent;
14-
import org.everit.json.schema.listener.SubschemaMatchEvent;
15-
import org.everit.json.schema.listener.SubschemaMismatchEvent;
1616
import org.json.JSONArray;
1717
import org.json.JSONObject;
1818

@@ -157,7 +157,7 @@ void visitCombinedSchema(CombinedSchema combinedSchema) {
157157
if (null != exception) {
158158
failures.add(exception);
159159
}
160-
reportSchemaMatchEvent(subschema, exception);
160+
reportSchemaMatchEvent(combinedSchema, subschema, exception);
161161
}
162162
int matchingCount = subschemas.size() - failures.size();
163163
try {
@@ -177,12 +177,14 @@ void visitConditionalSchema(ConditionalSchema conditionalSchema) {
177177
conditionalSchema.accept(new ConditionalSchemaValidatingVisitor(subject, this));
178178
}
179179

180-
void reportSchemaMatchEvent(Schema schema, ValidationException rval) {
180+
void reportSchemaMatchEvent(CombinedSchema schema, Schema subschema, ValidationException failure) {
181181
if (validationListener != null) {
182-
if (rval == null) {
183-
validationListener.subschemaMatch(new SubschemaMatchEvent(schema));
182+
if (failure == null) {
183+
validationListener.combinedSchemaMatch(new CombinedSchemaValidationEvent(schema, subschema, subject));
184+
// validationListener.subschemaMatch(new SubschemaMatchEvent(schema));
184185
} else {
185-
validationListener.subschemaMismatch(new SubschemaMismatchEvent(schema, rval));
186+
validationListener.combinedSchemaMismatch(new CombinedSchemaMismatchEvent(schema, subschema, subject, failure));
187+
// validationListener.subschemaMismatch(new SubschemaMismatchEvent(schema, rval));
186188
}
187189
}
188190
}
Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,35 @@
11
package org.everit.json.schema;
22

3+
import org.everit.json.schema.listener.CombinedSchemaMismatchEvent;
4+
import org.everit.json.schema.listener.CombinedSchemaValidationEvent;
5+
import org.everit.json.schema.listener.ConditionalSchemaMismatchEvent;
6+
import org.everit.json.schema.listener.ConditionalSchemaValidationEvent;
7+
import org.everit.json.schema.listener.MismatchEvent;
38
import org.everit.json.schema.listener.SchemaReferencedEvent;
4-
import org.everit.json.schema.listener.SubschemaMatchEvent;
5-
import org.everit.json.schema.listener.SubschemaMismatchEvent;
69

710
/**
811
* Interface to capture which schemas are matching against a specific event in the {@link ValidatingVisitor}.
912
*/
1013
public interface ValidationListener {
1114

12-
void subschemaMatch(SubschemaMatchEvent matchEvent);
15+
void mismatch(MismatchEvent event);
1316

14-
void subschemaMismatch(SubschemaMismatchEvent mismatchEvent);
17+
void combinedSchemaMatch(CombinedSchemaValidationEvent event);
1518

16-
void schemaReferenced(SchemaReferencedEvent referencedEvent);
19+
void combinedSchemaMismatch(CombinedSchemaMismatchEvent event);
1720

18-
// --
21+
void schemaReferenced(SchemaReferencedEvent event);
1922

20-
void ifSchemaMatch();
23+
void ifSchemaMatch(ConditionalSchemaValidationEvent event);
2124

22-
void ifSchemaMismatch();
25+
void ifSchemaMismatch(ConditionalSchemaMismatchEvent event);
2326

24-
void thenSchemaMatch();
27+
void thenSchemaMatch(ConditionalSchemaValidationEvent event);
2528

26-
void thenSchemaMismatch();
29+
void thenSchemaMismatch(ConditionalSchemaMismatchEvent event);
2730

28-
void elseSchemaMatch();
31+
void elseSchemaMatch(ConditionalSchemaValidationEvent event);
2932

30-
void elseSchemaMismatch();
33+
void elseSchemaMismatch(ConditionalSchemaMismatchEvent event);
3134
}
3235

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,37 @@
11
package org.everit.json.schema.listener;
22

3+
import java.util.Objects;
4+
35
import org.everit.json.schema.CombinedSchema;
6+
import org.everit.json.schema.Schema;
47
import org.everit.json.schema.ValidationException;
58

69
public class CombinedSchemaMismatchEvent extends CombinedSchemaValidationEvent implements MismatchEvent {
710

811
private final ValidationException failure;
912

10-
protected CombinedSchemaMismatchEvent(CombinedSchema schema, Object instance, ValidationException failure) {
11-
super(schema, instance);
13+
public CombinedSchemaMismatchEvent(CombinedSchema schema, Schema subSchema, Object instance, ValidationException failure) {
14+
super(schema, subSchema, instance);
1215
this.failure = failure;
1316
}
1417

1518
@Override public ValidationException getFailure() {
1619
return failure;
1720
}
21+
22+
@Override public boolean equals(Object o) {
23+
if (this == o)
24+
return true;
25+
if (!(o instanceof CombinedSchemaMismatchEvent))
26+
return false;
27+
if (!super.equals(o))
28+
return false;
29+
CombinedSchemaMismatchEvent that = (CombinedSchemaMismatchEvent) o;
30+
return failure.equals(that.failure);
31+
}
32+
33+
@Override public int hashCode() {
34+
return Objects.hash(super.hashCode(), failure);
35+
}
36+
1837
}
Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
11
package org.everit.json.schema.listener;
22

33
import org.everit.json.schema.CombinedSchema;
4+
import org.everit.json.schema.Schema;
45

56
public class CombinedSchemaValidationEvent extends ValidationEvent<CombinedSchema> {
67

7-
protected CombinedSchemaValidationEvent(CombinedSchema schema, Object instance) {
8+
private final Schema subSchema;
9+
10+
public CombinedSchemaValidationEvent(CombinedSchema schema, Schema subSchema, Object instance) {
811
super(schema, instance);
12+
this.subSchema = subSchema;
913
}
1014

15+
public Schema getSubSchema() {
16+
return subSchema;
17+
}
1118
}

core/src/main/java/org/everit/json/schema/listener/ConditionalSchemaMismatchEvent.java

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

3+
import java.util.Objects;
4+
35
import org.everit.json.schema.ConditionalSchema;
46
import org.everit.json.schema.ValidationException;
57

@@ -15,4 +17,19 @@ protected ConditionalSchemaMismatchEvent(ConditionalSchema schema, Object instan
1517
@Override public ValidationException getFailure() {
1618
return failure;
1719
}
20+
21+
@Override public boolean equals(Object o) {
22+
if (this == o)
23+
return true;
24+
if (!(o instanceof ConditionalSchemaMismatchEvent))
25+
return false;
26+
if (!super.equals(o))
27+
return false;
28+
ConditionalSchemaMismatchEvent that = (ConditionalSchemaMismatchEvent) o;
29+
return failure.equals(that.failure);
30+
}
31+
32+
@Override public int hashCode() {
33+
return Objects.hash(super.hashCode(), failure);
34+
}
1835
}

core/src/main/java/org/everit/json/schema/listener/ConditionalSchemaValidationEvent.java

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

55
public class ConditionalSchemaValidationEvent extends ValidationEvent<ConditionalSchema> {
66

7-
protected ConditionalSchemaValidationEvent(ConditionalSchema schema, Object instance) {
7+
public ConditionalSchemaValidationEvent(ConditionalSchema schema, Object instance) {
88
super(schema, instance);
99
}
1010

core/src/main/java/org/everit/json/schema/listener/SubschemaMatchEvent.java

Lines changed: 0 additions & 11 deletions
This file was deleted.

core/src/main/java/org/everit/json/schema/listener/SubschemaMismatchEvent.java

Lines changed: 0 additions & 12 deletions
This file was deleted.

core/src/main/java/org/everit/json/schema/listener/ValidationEvent.java

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

3+
import java.util.Objects;
4+
35
import org.everit.json.schema.Schema;
46

57
public abstract class ValidationEvent<S extends Schema> {
@@ -17,4 +19,17 @@ public S getSchema() {
1719
return schema;
1820
}
1921

22+
@Override public boolean equals(Object o) {
23+
if (this == o)
24+
return true;
25+
if (o == null || getClass() != o.getClass())
26+
return false;
27+
ValidationEvent<?> that = (ValidationEvent<?>) o;
28+
return schema.equals(that.schema) &&
29+
instance.equals(that.instance);
30+
}
31+
32+
@Override public int hashCode() {
33+
return Objects.hash(schema, instance);
34+
}
2035
}

0 commit comments

Comments
 (0)