diff --git a/core/pom.xml b/core/pom.xml
index 78239db8d..4661f1eb0 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -21,7 +21,7 @@
4.0.0
org.everit.json
org.everit.json.schema
- 0.0.0-develop
+ 1.10.1-afranzi-SNAPSHOT
bundle
UTF-8
diff --git a/core/src/main/java/org/everit/json/schema/ArraySchema.java b/core/src/main/java/org/everit/json/schema/ArraySchema.java
index 6c808091b..f29fd024f 100644
--- a/core/src/main/java/org/everit/json/schema/ArraySchema.java
+++ b/core/src/main/java/org/everit/json/schema/ArraySchema.java
@@ -236,8 +236,8 @@ void describePropertiesTo(final JSONPrinter writer) {
}
}
- @Override void accept(Visitor visitor) {
- visitor.visitArraySchema(this);
+ @Override void accept(Visitor visitor, List path) {
+ visitor.visitArraySchema(this, path);
}
@Override
diff --git a/core/src/main/java/org/everit/json/schema/ArraySchemaValidatingVisitor.java b/core/src/main/java/org/everit/json/schema/ArraySchemaValidatingVisitor.java
index bf92e06cc..c5555b774 100644
--- a/core/src/main/java/org/everit/json/schema/ArraySchemaValidatingVisitor.java
+++ b/core/src/main/java/org/everit/json/schema/ArraySchemaValidatingVisitor.java
@@ -2,7 +2,6 @@
import static java.lang.String.format;
import static java.util.Objects.requireNonNull;
-
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@@ -29,12 +28,12 @@ public ArraySchemaValidatingVisitor(Object subject, ValidatingVisitor owner) {
this.owner = requireNonNull(owner, "owner cannot be null");
}
- @Override void visitArraySchema(ArraySchema arraySchema) {
+ @Override void visitArraySchema(ArraySchema arraySchema, List path) {
if (owner.passesTypeCheck(JSONArray.class, arraySchema.requiresArray(), arraySchema.isNullable())) {
this.arraySubject = (JSONArray) subject;
this.subjectLength = arraySubject.length();
this.arraySchema = arraySchema;
- super.visitArraySchema(arraySchema);
+ super.visitArraySchema(arraySchema, path);
}
}
@@ -67,19 +66,19 @@ public ArraySchemaValidatingVisitor(Object subject, ValidatingVisitor owner) {
}
}
- @Override void visitAllItemSchema(Schema allItemSchema) {
+ @Override void visitAllItemSchema(Schema allItemSchema, List path) {
if (allItemSchema != null) {
- validateItemsAgainstSchema(IntStream.range(0, subjectLength), allItemSchema);
+ validateItemsAgainstSchema(IntStream.range(0, subjectLength), allItemSchema, path);
}
}
- @Override void visitItemSchema(int index, Schema itemSchema) {
+ @Override void visitItemSchema(int index, Schema itemSchema, List path) {
if (index >= subjectLength) {
return;
}
Object subject = arraySubject.get(index);
String idx = String.valueOf(index);
- ifFails(itemSchema, subject)
+ ifFails(itemSchema, subject, path)
.map(exc -> exc.prepend(idx))
.ifPresent(owner::failure);
}
@@ -92,37 +91,37 @@ public ArraySchemaValidatingVisitor(Object subject, ValidatingVisitor owner) {
}
}
- @Override void visitSchemaOfAdditionalItems(Schema schemaOfAdditionalItems) {
+ @Override void visitSchemaOfAdditionalItems(Schema schemaOfAdditionalItems, List path) {
if (schemaOfAdditionalItems == null) {
return;
}
int validationFrom = Math.min(subjectLength, arraySchema.getItemSchemas().size());
- validateItemsAgainstSchema(IntStream.range(validationFrom, subjectLength), schemaOfAdditionalItems);
+ validateItemsAgainstSchema(IntStream.range(validationFrom, subjectLength), schemaOfAdditionalItems, path);
}
- private void validateItemsAgainstSchema(IntStream indices, Schema schema) {
- validateItemsAgainstSchema(indices, i -> schema);
+ private void validateItemsAgainstSchema(IntStream indices, Schema schema, List path) {
+ validateItemsAgainstSchema(indices, i -> schema, path);
}
- private void validateItemsAgainstSchema(IntStream indices, IntFunction schemaForIndex) {
+ private void validateItemsAgainstSchema(IntStream indices, IntFunction schemaForIndex, List path) {
for (int i : indices.toArray()) {
String copyOfI = String.valueOf(i); // i is not effectively final so we copy it
- ifFails(schemaForIndex.apply(i), arraySubject.get(i))
+ ifFails(schemaForIndex.apply(i), arraySubject.get(i), appendPath(path, i))
.map(exc -> exc.prepend(copyOfI))
.ifPresent(owner::failure);
}
}
- private Optional ifFails(Schema schema, Object input) {
- return Optional.ofNullable(owner.getFailureOfSchema(schema, input));
+ private Optional ifFails(Schema schema, Object input, List path) {
+ return Optional.ofNullable(owner.getFailureOfSchema(schema, input, path));
}
- @Override void visitContainedItemSchema(Schema containedItemSchema) {
+ @Override void visitContainedItemSchema(Schema containedItemSchema, List path) {
if (containedItemSchema == null) {
return;
}
for (int i = 0; i < arraySubject.length(); i++) {
- Optional exception = ifFails(containedItemSchema, arraySubject.get(i));
+ Optional exception = ifFails(containedItemSchema, arraySubject.get(i), appendPath(path, i));
if (!exception.isPresent()) {
return;
}
diff --git a/core/src/main/java/org/everit/json/schema/BooleanSchema.java b/core/src/main/java/org/everit/json/schema/BooleanSchema.java
index 67ed7c10f..9f3d3d079 100644
--- a/core/src/main/java/org/everit/json/schema/BooleanSchema.java
+++ b/core/src/main/java/org/everit/json/schema/BooleanSchema.java
@@ -1,7 +1,9 @@
package org.everit.json.schema;
+import java.util.List;
import org.everit.json.schema.internal.JSONPrinter;
+
/**
* Boolean schema validator.
*/
@@ -48,7 +50,7 @@ public boolean equals(final Object o) {
}
}
- @Override void accept(Visitor visitor) {
+ @Override void accept(Visitor visitor, List path) {
visitor.visitBooleanSchema(this);
}
diff --git a/core/src/main/java/org/everit/json/schema/CombinedSchema.java b/core/src/main/java/org/everit/json/schema/CombinedSchema.java
index b1c41c8b8..e7fbfff0e 100644
--- a/core/src/main/java/org/everit/json/schema/CombinedSchema.java
+++ b/core/src/main/java/org/everit/json/schema/CombinedSchema.java
@@ -180,8 +180,8 @@ public Collection getSubschemas() {
return subschemas;
}
- @Override void accept(Visitor visitor) {
- visitor.visitCombinedSchema(this);
+ @Override void accept(Visitor visitor, List path) {
+ visitor.visitCombinedSchema(this, path);
}
@Override
diff --git a/core/src/main/java/org/everit/json/schema/ConditionalSchema.java b/core/src/main/java/org/everit/json/schema/ConditionalSchema.java
index 8e472853a..34a23c4c6 100644
--- a/core/src/main/java/org/everit/json/schema/ConditionalSchema.java
+++ b/core/src/main/java/org/everit/json/schema/ConditionalSchema.java
@@ -1,7 +1,7 @@
package org.everit.json.schema;
import java.util.Optional;
-
+import java.util.List;
import org.everit.json.schema.internal.JSONPrinter;
/**
@@ -66,8 +66,8 @@ public Optional getElseSchema() {
}
@Override
- void accept(Visitor visitor) {
- visitor.visitConditionalSchema(this);
+ void accept(Visitor visitor, List path) {
+ visitor.visitConditionalSchema(this, path);
}
@Override void describePropertiesTo(JSONPrinter writer) {
diff --git a/core/src/main/java/org/everit/json/schema/ConditionalSchemaValidatingVisitor.java b/core/src/main/java/org/everit/json/schema/ConditionalSchemaValidatingVisitor.java
index ff947e494..36a90dbae 100644
--- a/core/src/main/java/org/everit/json/schema/ConditionalSchemaValidatingVisitor.java
+++ b/core/src/main/java/org/everit/json/schema/ConditionalSchemaValidatingVisitor.java
@@ -10,6 +10,8 @@
import org.everit.json.schema.event.ConditionalSchemaMismatchEvent;
import org.everit.json.schema.event.ConditionalSchemaValidationEvent;
+import java.util.List;
+
class ConditionalSchemaValidatingVisitor extends Visitor {
private final Object subject;
@@ -26,19 +28,19 @@ class ConditionalSchemaValidatingVisitor extends Visitor {
}
@Override
- void visitConditionalSchema(ConditionalSchema conditionalSchema) {
+ void visitConditionalSchema(ConditionalSchema conditionalSchema, List path) {
this.conditionalSchema = conditionalSchema;
if (!conditionalSchema.getIfSchema().isPresent() ||
(!conditionalSchema.getThenSchema().isPresent() && !conditionalSchema.getElseSchema().isPresent())) {
return;
}
- super.visitConditionalSchema(conditionalSchema);
+ super.visitConditionalSchema(conditionalSchema, path);
}
@Override
- void visitIfSchema(Schema ifSchema) {
+ void visitIfSchema(Schema ifSchema, List path) {
if (conditionalSchema.getIfSchema().isPresent()) {
- ifSchemaException = owner.getFailureOfSchema(ifSchema, subject);
+ ifSchemaException = owner.getFailureOfSchema(ifSchema, subject, path);
if (ifSchemaException == null) {
owner.validationListener.ifSchemaMatch(createMatchEvent(IF));
} else {
@@ -48,9 +50,9 @@ void visitIfSchema(Schema ifSchema) {
}
@Override
- void visitThenSchema(Schema thenSchema) {
+ void visitThenSchema(Schema thenSchema, List path) {
if (ifSchemaException == null) {
- ValidationException thenSchemaException = owner.getFailureOfSchema(thenSchema, subject);
+ ValidationException thenSchemaException = owner.getFailureOfSchema(thenSchema, subject, path);
if (thenSchemaException != null) {
ValidationException failure = new ValidationException(conditionalSchema,
new StringBuilder(new StringBuilder("#")),
@@ -68,9 +70,9 @@ void visitThenSchema(Schema thenSchema) {
}
@Override
- void visitElseSchema(Schema elseSchema) {
+ void visitElseSchema(Schema elseSchema, List path) {
if (ifSchemaException != null) {
- ValidationException elseSchemaException = owner.getFailureOfSchema(elseSchema, subject);
+ ValidationException elseSchemaException = owner.getFailureOfSchema(elseSchema, subject, path);
if (elseSchemaException != null) {
ValidationException failure = new ValidationException(conditionalSchema,
new StringBuilder(new StringBuilder("#")),
diff --git a/core/src/main/java/org/everit/json/schema/ConstSchema.java b/core/src/main/java/org/everit/json/schema/ConstSchema.java
index 8fb87f9e2..d94964568 100644
--- a/core/src/main/java/org/everit/json/schema/ConstSchema.java
+++ b/core/src/main/java/org/everit/json/schema/ConstSchema.java
@@ -2,6 +2,7 @@
import static org.everit.json.schema.EnumSchema.toJavaValue;
+import java.util.List;
import org.everit.json.schema.internal.JSONPrinter;
public class ConstSchema extends Schema {
@@ -40,6 +41,10 @@ protected ConstSchema(ConstSchemaBuilder builder) {
visitor.visitConstSchema(this);
}
+ @Override void accept(Visitor visitor, List path) {
+ visitor.visitConstSchema(this);
+ }
+
public Object getPermittedValue() {
return permittedValue;
}
diff --git a/core/src/main/java/org/everit/json/schema/EmptySchema.java b/core/src/main/java/org/everit/json/schema/EmptySchema.java
index 8bc8e06ce..5ca8b72d8 100644
--- a/core/src/main/java/org/everit/json/schema/EmptySchema.java
+++ b/core/src/main/java/org/everit/json/schema/EmptySchema.java
@@ -1,5 +1,7 @@
package org.everit.json.schema;
+import java.util.List;
+
/**
* A schema not specifying any restrictions, ie. accepting any values.
*/
@@ -31,6 +33,10 @@ public EmptySchema(Builder builder) {
visitor.visitEmptySchema();
}
+ @Override void accept(Visitor visitor, List path) {
+ visitor.visitEmptySchema();
+ }
+
@Override
public boolean equals(Object o) {
if (this == o)
diff --git a/core/src/main/java/org/everit/json/schema/EnumSchema.java b/core/src/main/java/org/everit/json/schema/EnumSchema.java
index 7c6392a46..936d3ea93 100644
--- a/core/src/main/java/org/everit/json/schema/EnumSchema.java
+++ b/core/src/main/java/org/everit/json/schema/EnumSchema.java
@@ -115,6 +115,10 @@ public int hashCode() {
visitor.visitEnumSchema(this);
}
+ @Override public void accept(Visitor visitor, List path) {
+ visitor.visitEnumSchema(this);
+ }
+
@Override
protected boolean canEqual(Object other) {
return other instanceof EnumSchema;
diff --git a/core/src/main/java/org/everit/json/schema/FalseSchema.java b/core/src/main/java/org/everit/json/schema/FalseSchema.java
index 111132828..ff331c9b3 100644
--- a/core/src/main/java/org/everit/json/schema/FalseSchema.java
+++ b/core/src/main/java/org/everit/json/schema/FalseSchema.java
@@ -1,7 +1,9 @@
package org.everit.json.schema;
+import java.util.List;
import org.everit.json.schema.internal.JSONPrinter;
+
/**
* @author erosb
*/
@@ -31,7 +33,7 @@ public FalseSchema(Builder builder) {
}
@Override
- void accept(Visitor visitor) {
+ void accept(Visitor visitor, List path) {
visitor.visitFalseSchema(this);
}
diff --git a/core/src/main/java/org/everit/json/schema/NotSchema.java b/core/src/main/java/org/everit/json/schema/NotSchema.java
index 0cd4e7c2a..5b0d65763 100644
--- a/core/src/main/java/org/everit/json/schema/NotSchema.java
+++ b/core/src/main/java/org/everit/json/schema/NotSchema.java
@@ -2,8 +2,9 @@
import static java.util.Objects.requireNonNull;
+import java.util.ArrayList;
import java.util.Objects;
-
+import java.util.List;
import org.everit.json.schema.internal.JSONPrinter;
/**
@@ -46,7 +47,11 @@ public Schema getMustNotMatch() {
}
@Override void accept(Visitor visitor) {
- visitor.visitNotSchema(this);
+ visitor.visitNotSchema(this, new ArrayList<>());
+ }
+
+ @Override void accept(Visitor visitor, List path) {
+ visitor.visitNotSchema(this, path);
}
@Override
diff --git a/core/src/main/java/org/everit/json/schema/NullSchema.java b/core/src/main/java/org/everit/json/schema/NullSchema.java
index fadea5854..d0e5e96f6 100644
--- a/core/src/main/java/org/everit/json/schema/NullSchema.java
+++ b/core/src/main/java/org/everit/json/schema/NullSchema.java
@@ -1,5 +1,6 @@
package org.everit.json.schema;
+import java.util.List;
import org.everit.json.schema.internal.JSONPrinter;
/**
@@ -54,6 +55,10 @@ protected boolean canEqual(Object other) {
visitor.visitNullSchema(this);
}
+ @Override void accept(Visitor visitor, List path) {
+ visitor.visitNullSchema(this);
+ }
+
@Override
void describePropertiesTo(JSONPrinter writer) {
writer.key("type");
diff --git a/core/src/main/java/org/everit/json/schema/NumberSchema.java b/core/src/main/java/org/everit/json/schema/NumberSchema.java
index 593526b13..62d31426a 100644
--- a/core/src/main/java/org/everit/json/schema/NumberSchema.java
+++ b/core/src/main/java/org/everit/json/schema/NumberSchema.java
@@ -1,7 +1,7 @@
package org.everit.json.schema;
import java.util.Objects;
-
+import java.util.List;
import org.everit.json.schema.internal.JSONPrinter;
import org.json.JSONException;
@@ -165,7 +165,7 @@ public Number getExclusiveMaximumLimit() {
return exclusiveMaximumLimit;
}
- @Override void accept(Visitor visitor) {
+ @Override void accept(Visitor visitor, List path) {
visitor.visitNumberSchema(this);
}
diff --git a/core/src/main/java/org/everit/json/schema/ObjectSchema.java b/core/src/main/java/org/everit/json/schema/ObjectSchema.java
index ecd11b101..1873c649d 100644
--- a/core/src/main/java/org/everit/json/schema/ObjectSchema.java
+++ b/core/src/main/java/org/everit/json/schema/ObjectSchema.java
@@ -263,8 +263,8 @@ public Schema getPropertyNameSchema() {
return propertyNameSchema;
}
- @Override void accept(Visitor visitor) {
- visitor.visitObjectSchema(this);
+ @Override void accept(Visitor visitor, List path) {
+ visitor.visitObjectSchema(this, path);
}
public boolean permitsAdditionalProperties() {
diff --git a/core/src/main/java/org/everit/json/schema/ObjectSchemaValidatingVisitor.java b/core/src/main/java/org/everit/json/schema/ObjectSchemaValidatingVisitor.java
index e72409335..6e4a3747f 100644
--- a/core/src/main/java/org/everit/json/schema/ObjectSchemaValidatingVisitor.java
+++ b/core/src/main/java/org/everit/json/schema/ObjectSchemaValidatingVisitor.java
@@ -7,7 +7,6 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
-
import org.everit.json.schema.regexp.Regexp;
import org.json.JSONObject;
@@ -28,12 +27,12 @@ public ObjectSchemaValidatingVisitor(Object subject, ValidatingVisitor owner) {
this.owner = requireNonNull(owner, "owner cannot be null");
}
- @Override void visitObjectSchema(ObjectSchema objectSchema) {
+ @Override void visitObjectSchema(ObjectSchema objectSchema, List path) {
if (owner.passesTypeCheck(JSONObject.class, objectSchema.requiresObject(), objectSchema.isNullable())) {
objSubject = (JSONObject) subject;
objectSize = objSubject.length();
this.schema = objectSchema;
- super.visitObjectSchema(objectSchema);
+ super.visitObjectSchema(objectSchema, path);
}
}
@@ -43,14 +42,14 @@ public ObjectSchemaValidatingVisitor(Object subject, ValidatingVisitor owner) {
}
}
- @Override void visitPropertyNameSchema(Schema propertyNameSchema) {
+ @Override void visitPropertyNameSchema(Schema propertyNameSchema, List path) {
if (propertyNameSchema != null) {
String[] names = getNames(objSubject);
if (names == null || names.length == 0) {
return;
}
for (String name : names) {
- ValidationException failure = owner.getFailureOfSchema(propertyNameSchema, name);
+ ValidationException failure = owner.getFailureOfSchema(propertyNameSchema, name, path);
if (failure != null) {
owner.failure(failure.prepend(name));
}
@@ -70,7 +69,7 @@ public ObjectSchemaValidatingVisitor(Object subject, ValidatingVisitor owner) {
}
}
- @Override void visitPropertyDependencies(String ifPresent, Set allMustBePresent) {
+ @Override void visitPropertyDependencies(String ifPresent, Set allMustBePresent, List path) {
if (objSubject.has(ifPresent)) {
for (String mustBePresent : allMustBePresent) {
if (!objSubject.has(mustBePresent)) {
@@ -92,12 +91,12 @@ public ObjectSchemaValidatingVisitor(Object subject, ValidatingVisitor owner) {
}
}
- @Override void visitSchemaOfAdditionalProperties(Schema schemaOfAdditionalProperties) {
+ @Override void visitSchemaOfAdditionalProperties(Schema schemaOfAdditionalProperties, List path) {
if (schemaOfAdditionalProperties != null) {
List additionalPropNames = getAdditionalProperties();
for (String propName : additionalPropNames) {
Object propVal = objSubject.get(propName);
- ValidationException failure = owner.getFailureOfSchema(schemaOfAdditionalProperties, propVal);
+ ValidationException failure = owner.getFailureOfSchema(schemaOfAdditionalProperties, propVal, appendPath(path, propName));
if (failure != null) {
owner.failure(failure.prepend(propName, schema));
}
@@ -129,14 +128,14 @@ private boolean matchesAnyPattern(String key) {
return false;
}
- @Override void visitPatternPropertySchema(Regexp propertyNamePattern, Schema schema) {
+ @Override void visitPatternPropertySchema(Regexp propertyNamePattern, Schema schema, List path) {
String[] propNames = getNames(objSubject);
if (propNames == null || propNames.length == 0) {
return;
}
for (String propName : propNames) {
if (!propertyNamePattern.patternMatchingFailure(propName).isPresent()) {
- ValidationException failure = owner.getFailureOfSchema(schema, objSubject.get(propName));
+ ValidationException failure = owner.getFailureOfSchema(schema, objSubject.get(propName), path);
if (failure != null) {
owner.failure(failure.prepend(propName));
}
@@ -144,18 +143,18 @@ private boolean matchesAnyPattern(String key) {
}
}
- @Override void visitSchemaDependency(String propName, Schema schema) {
+ @Override void visitSchemaDependency(String propName, Schema schema, List path) {
if (objSubject.has(propName)) {
- ValidationException failure = owner.getFailureOfSchema(schema, objSubject);
+ ValidationException failure = owner.getFailureOfSchema(schema, objSubject, path);
if (failure != null) {
owner.failure(failure);
}
}
}
- @Override void visitPropertySchema(String properyName, Schema schema) {
+ @Override void visitPropertySchema(String properyName, Schema schema, List path) {
if (objSubject.has(properyName)) {
- ValidationException failure = owner.getFailureOfSchema(schema, objSubject.get(properyName));
+ ValidationException failure = owner.getFailureOfSchema(schema, objSubject.get(properyName), path);
if (failure != null) {
owner.failure(failure.prepend(properyName));
}
diff --git a/core/src/main/java/org/everit/json/schema/ReferenceSchema.java b/core/src/main/java/org/everit/json/schema/ReferenceSchema.java
index dd2a52e05..983a4029f 100644
--- a/core/src/main/java/org/everit/json/schema/ReferenceSchema.java
+++ b/core/src/main/java/org/everit/json/schema/ReferenceSchema.java
@@ -3,7 +3,7 @@
import static java.util.Objects.requireNonNull;
import java.util.Objects;
-
+import java.util.List;
import org.everit.json.schema.internal.JSONPrinter;
/**
@@ -107,8 +107,8 @@ protected boolean canEqual(Object other) {
return other instanceof ReferenceSchema;
}
- @Override void accept(Visitor visitor) {
- visitor.visitReferenceSchema(this);
+ @Override void accept(Visitor visitor, List path) {
+ visitor.visitReferenceSchema(this, path);
}
@Override void describePropertiesTo(JSONPrinter writer) {
diff --git a/core/src/main/java/org/everit/json/schema/Schema.java b/core/src/main/java/org/everit/json/schema/Schema.java
index f60210afc..307de5777 100644
--- a/core/src/main/java/org/everit/json/schema/Schema.java
+++ b/core/src/main/java/org/everit/json/schema/Schema.java
@@ -3,9 +3,7 @@
import static java.util.Collections.unmodifiableMap;
import java.io.StringWriter;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
import org.everit.json.schema.internal.JSONPrinter;
import org.json.JSONWriter;
@@ -313,7 +311,11 @@ void describePropertiesTo(JSONPrinter writer) {
}
- abstract void accept(Visitor visitor);
+ void accept(Visitor visitor) {
+ accept(visitor, new ArrayList<>());
+ }
+
+ abstract void accept(Visitor visitor, List path);
@Override
public String toString() {
diff --git a/core/src/main/java/org/everit/json/schema/StringSchema.java b/core/src/main/java/org/everit/json/schema/StringSchema.java
index 68ea7099d..efcd7fbfa 100644
--- a/core/src/main/java/org/everit/json/schema/StringSchema.java
+++ b/core/src/main/java/org/everit/json/schema/StringSchema.java
@@ -4,7 +4,7 @@
import static org.everit.json.schema.FormatValidator.NONE;
import java.util.Objects;
-
+import java.util.List;
import org.everit.json.schema.internal.JSONPrinter;
import org.everit.json.schema.regexp.JavaUtilRegexpFactory;
import org.everit.json.schema.regexp.Regexp;
@@ -131,6 +131,10 @@ public java.util.regex.Pattern getPattern() {
visitor.visitStringSchema(this);
}
+ @Override void accept(Visitor visitor, List path) {
+ visitor.visitStringSchema(this);
+ }
+
@Override
public boolean equals(Object o) {
if (this == o)
diff --git a/core/src/main/java/org/everit/json/schema/ValidatingVisitor.java b/core/src/main/java/org/everit/json/schema/ValidatingVisitor.java
index 5b7b419df..b703f170b 100644
--- a/core/src/main/java/org/everit/json/schema/ValidatingVisitor.java
+++ b/core/src/main/java/org/everit/json/schema/ValidatingVisitor.java
@@ -44,12 +44,12 @@ private static boolean isNull(Object obj) {
private final ReadWriteValidator readWriteValidator;
@Override
- void visit(Schema schema) {
+ void visit(Schema schema, List path) {
if (schema.isNullable() == Boolean.FALSE && isNull(subject)) {
failureReporter.failure("value cannot be null", "nullable");
}
readWriteValidator.validate(schema, subject);
- super.visit(schema);
+ super.visit(schema, path);
}
ValidatingVisitor(Object subject, ValidationFailureReporter failureReporter, ReadWriteValidator readWriteValidator,
@@ -69,8 +69,8 @@ void visitNumberSchema(NumberSchema numberSchema) {
}
@Override
- void visitArraySchema(ArraySchema arraySchema) {
- arraySchema.accept(new ArraySchemaValidatingVisitor(subject, this));
+ void visitArraySchema(ArraySchema arraySchema, List path) {
+ arraySchema.accept(new ArraySchemaValidatingVisitor(subject, this), path);
}
@Override
@@ -115,32 +115,32 @@ void visitFalseSchema(FalseSchema falseSchema) {
}
@Override
- void visitNotSchema(NotSchema notSchema) {
+ void visitNotSchema(NotSchema notSchema, List path) {
Schema mustNotMatch = notSchema.getMustNotMatch();
- ValidationException failure = getFailureOfSchema(mustNotMatch, subject);
+ ValidationException failure = getFailureOfSchema(mustNotMatch, subject, path);
if (failure == null) {
failureReporter.failure("subject must not be valid against schema " + mustNotMatch, "not");
}
}
@Override
- void visitReferenceSchema(ReferenceSchema referenceSchema) {
+ void visitReferenceSchema(ReferenceSchema referenceSchema, List path) {
Schema referredSchema = referenceSchema.getReferredSchema();
if (referredSchema == null) {
throw new IllegalStateException("referredSchema must be injected before validation");
}
- ValidationException failure = getFailureOfSchema(referredSchema, subject);
+ ValidationException failure = getFailureOfSchema(referredSchema, subject, path);
if (failure != null) {
failureReporter.failure(failure);
}
- if (validationListener != null) {
- validationListener.schemaReferenced(new SchemaReferencedEvent(referenceSchema, subject, referredSchema));
+ else if (validationListener != null) {
+ validationListener.schemaReferenced(new SchemaReferencedEvent(referenceSchema, subject, referredSchema, path));
}
}
@Override
- void visitObjectSchema(ObjectSchema objectSchema) {
- objectSchema.accept(new ObjectSchemaValidatingVisitor(subject, this));
+ void visitObjectSchema(ObjectSchema objectSchema, List path) {
+ objectSchema.accept(new ObjectSchemaValidatingVisitor(subject, this), path);
}
@Override
@@ -149,16 +149,16 @@ void visitStringSchema(StringSchema stringSchema) {
}
@Override
- void visitCombinedSchema(CombinedSchema combinedSchema) {
+ void visitCombinedSchema(CombinedSchema combinedSchema, List path) {
Collection subschemas = combinedSchema.getSubschemas();
List failures = new ArrayList<>(subschemas.size());
CombinedSchema.ValidationCriterion criterion = combinedSchema.getCriterion();
for (Schema subschema : subschemas) {
- ValidationException exception = getFailureOfSchema(subschema, subject);
+ ValidationException exception = getFailureOfSchema(subschema, subject, path);
if (null != exception) {
failures.add(exception);
}
- reportSchemaMatchEvent(combinedSchema, subschema, exception);
+ reportSchemaMatchEvent(combinedSchema, subschema, exception, path);
}
int matchingCount = subschemas.size() - failures.size();
try {
@@ -174,22 +174,22 @@ void visitCombinedSchema(CombinedSchema combinedSchema) {
}
@Override
- void visitConditionalSchema(ConditionalSchema conditionalSchema) {
- conditionalSchema.accept(new ConditionalSchemaValidatingVisitor(subject, this));
+ void visitConditionalSchema(ConditionalSchema conditionalSchema, List path) {
+ conditionalSchema.accept(new ConditionalSchemaValidatingVisitor(subject, this), path);
}
- private void reportSchemaMatchEvent(CombinedSchema schema, Schema subschema, ValidationException failure) {
+ private void reportSchemaMatchEvent(CombinedSchema schema, Schema subschema, ValidationException failure, List path) {
if (failure == null) {
- validationListener.combinedSchemaMatch(new CombinedSchemaMatchEvent(schema, subschema, subject));
+ validationListener.combinedSchemaMatch(new CombinedSchemaMatchEvent(schema, subschema, subject, path));
} else {
- validationListener.combinedSchemaMismatch(new CombinedSchemaMismatchEvent(schema, subschema, subject, failure));
+ validationListener.combinedSchemaMismatch(new CombinedSchemaMismatchEvent(schema, subschema, subject, failure, path));
}
}
- ValidationException getFailureOfSchema(Schema schema, Object input) {
+ ValidationException getFailureOfSchema(Schema schema, Object input, List path) {
Object origSubject = this.subject;
this.subject = input;
- ValidationException rval = failureReporter.inContextOfSchema(schema, () -> visit(schema));
+ ValidationException rval = failureReporter.inContextOfSchema(schema, () -> visit(schema, path));
this.subject = origSubject;
return rval;
}
diff --git a/core/src/main/java/org/everit/json/schema/Validator.java b/core/src/main/java/org/everit/json/schema/Validator.java
index 5bcf8d852..be9020530 100644
--- a/core/src/main/java/org/everit/json/schema/Validator.java
+++ b/core/src/main/java/org/everit/json/schema/Validator.java
@@ -1,5 +1,8 @@
package org.everit.json.schema;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
import java.util.function.BiFunction;
import org.everit.json.schema.event.ValidationListener;
@@ -40,6 +43,7 @@ static ValidatorBuilder builder() {
}
void performValidation(Schema schema, Object input);
+
}
class DefaultValidator implements Validator {
@@ -63,10 +67,14 @@ class DefaultValidator implements Validator {
}
@Override public void performValidation(Schema schema, Object input) {
+ performValidation(schema, input, Collections.singletonList("#"));
+ }
+
+ public void performValidation(Schema schema, Object input, List path) {
ValidationFailureReporter failureReporter = createFailureReporter(schema);
ReadWriteValidator readWriteValidator = ReadWriteValidator.createForContext(readWriteContext, failureReporter);
ValidatingVisitor visitor = new ValidatingVisitor(input, failureReporter, readWriteValidator, validationListener);
- visitor.visit(schema);
+ visitor.visit(schema, path);
visitor.failIfErrorFound();
}
diff --git a/core/src/main/java/org/everit/json/schema/Visitor.java b/core/src/main/java/org/everit/json/schema/Visitor.java
index 18d5d12a9..bb8ffef57 100644
--- a/core/src/main/java/org/everit/json/schema/Visitor.java
+++ b/core/src/main/java/org/everit/json/schema/Visitor.java
@@ -1,13 +1,21 @@
package org.everit.json.schema;
+import java.util.*;
import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
import org.everit.json.schema.regexp.Regexp;
abstract class Visitor {
+ List appendPath(List path, int index) {
+ return appendPath(path, String.format("[%d]", index));
+ }
+
+ List appendPath(List path, String field) {
+ List newList = new ArrayList<>(path);
+ newList.add(field);
+ return newList;
+ }
+
void visitNumberSchema(NumberSchema numberSchema) {
visitExclusiveMinimum(numberSchema.isExclusiveMinimum());
visitMinimum(numberSchema.getMinimum());
@@ -39,24 +47,24 @@ void visitExclusiveMaximumLimit(Number exclusiveMaximumLimit) {
void visitMultipleOf(Number multipleOf) {
}
- void visit(Schema schema) {
- schema.accept(this);
+ void visit(Schema schema, List path) {
+ schema.accept(this, path);
}
- void visitArraySchema(ArraySchema arraySchema) {
+ void visitArraySchema(ArraySchema arraySchema, List path) {
visitMinItems(arraySchema.getMinItems());
visitMaxItems(arraySchema.getMaxItems());
visitUniqueItems(arraySchema.needsUniqueItems());
- visitAllItemSchema(arraySchema.getAllItemSchema());
+ visitAllItemSchema(arraySchema.getAllItemSchema(), path);
visitAdditionalItems(arraySchema.permitsAdditionalItems());
List itemSchemas = arraySchema.getItemSchemas();
if (itemSchemas != null) {
for (int i = 0; i < itemSchemas.size(); ++i) {
- visitItemSchema(i, itemSchemas.get(i));
+ visitItemSchema(i, itemSchemas.get(i), appendPath(path, i));
}
}
- visitSchemaOfAdditionalItems(arraySchema.getSchemaOfAdditionalItems());
- visitContainedItemSchema(arraySchema.getContainedItemSchema());
+ visitSchemaOfAdditionalItems(arraySchema.getSchemaOfAdditionalItems(), path);
+ visitContainedItemSchema(arraySchema.getContainedItemSchema(), path);
}
void visitMinItems(Integer minItems) {
@@ -68,19 +76,19 @@ void visitMaxItems(Integer maxItems) {
void visitUniqueItems(boolean uniqueItems) {
}
- void visitAllItemSchema(Schema allItemSchema) {
+ void visitAllItemSchema(Schema allItemSchema, List path) {
}
void visitAdditionalItems(boolean additionalItems) {
}
- void visitItemSchema(int index, Schema itemSchema) {
+ void visitItemSchema(int index, Schema itemSchema, List path) {
}
- void visitSchemaOfAdditionalItems(Schema schemaOfAdditionalItems) {
+ void visitSchemaOfAdditionalItems(Schema schemaOfAdditionalItems, List path) {
}
- void visitContainedItemSchema(Schema containedItemSchema) {
+ void visitContainedItemSchema(Schema containedItemSchema, List path) {
}
void visitBooleanSchema(BooleanSchema schema) {
@@ -101,54 +109,54 @@ void visitEnumSchema(EnumSchema enumSchema) {
void visitFalseSchema(FalseSchema falseSchema) {
}
- void visitNotSchema(NotSchema notSchema) {
+ void visitNotSchema(NotSchema notSchema, List path) {
}
- void visitReferenceSchema(ReferenceSchema referenceSchema) {
+ void visitReferenceSchema(ReferenceSchema referenceSchema, List path) {
}
- void visitObjectSchema(ObjectSchema objectSchema) {
+ void visitObjectSchema(ObjectSchema objectSchema, List path) {
for (String requiredPropName : objectSchema.getRequiredProperties()) {
visitRequiredPropertyName(requiredPropName);
}
- visitPropertyNameSchema(objectSchema.getPropertyNameSchema());
+ visitPropertyNameSchema(objectSchema.getPropertyNameSchema(), path);
visitMinProperties(objectSchema.getMinProperties());
visitMaxProperties(objectSchema.getMaxProperties());
for (Map.Entry> entry : objectSchema.getPropertyDependencies().entrySet()) {
- visitPropertyDependencies(entry.getKey(), entry.getValue());
+ visitPropertyDependencies(entry.getKey(), entry.getValue(), appendPath(path, entry.getKey()));
}
visitAdditionalProperties(objectSchema.permitsAdditionalProperties());
- visitSchemaOfAdditionalProperties(objectSchema.getSchemaOfAdditionalProperties());
+ visitSchemaOfAdditionalProperties(objectSchema.getSchemaOfAdditionalProperties(), path);
for (Map.Entry entry : objectSchema.getRegexpPatternProperties().entrySet()) {
- visitPatternPropertySchema(entry.getKey(), entry.getValue());
+ visitPatternPropertySchema(entry.getKey(), entry.getValue(), path);
}
for (Map.Entry schemaDep : objectSchema.getSchemaDependencies().entrySet()) {
- visitSchemaDependency(schemaDep.getKey(), schemaDep.getValue());
+ visitSchemaDependency(schemaDep.getKey(), schemaDep.getValue(), appendPath(path, schemaDep.getKey()));
}
Map propertySchemas = objectSchema.getPropertySchemas();
if (propertySchemas != null) {
for (Map.Entry entry : propertySchemas.entrySet()) {
- visitPropertySchema(entry.getKey(), entry.getValue());
+ visitPropertySchema(entry.getKey(), entry.getValue(), appendPath(path, entry.getKey()));
}
}
}
- void visitPropertySchema(String properyName, Schema schema) {
+ void visitPropertySchema(String properyName, Schema schema, List path) {
}
- void visitSchemaDependency(String propKey, Schema schema) {
+ void visitSchemaDependency(String propKey, Schema schema, List path) {
}
- void visitPatternPropertySchema(Regexp propertyNamePattern, Schema schema) {
+ void visitPatternPropertySchema(Regexp propertyNamePattern, Schema schema, List path) {
}
- void visitSchemaOfAdditionalProperties(Schema schemaOfAdditionalProperties) {
+ void visitSchemaOfAdditionalProperties(Schema schemaOfAdditionalProperties, List path) {
}
void visitAdditionalProperties(boolean additionalProperties) {
}
- void visitPropertyDependencies(String ifPresent, Set allMustBePresent) {
+ void visitPropertyDependencies(String ifPresent, Set allMustBePresent, List path) {
}
void visitMaxProperties(Integer maxProperties) {
@@ -157,7 +165,7 @@ void visitMaxProperties(Integer maxProperties) {
void visitMinProperties(Integer minProperties) {
}
- void visitPropertyNameSchema(Schema propertyNameSchema) {
+ void visitPropertyNameSchema(Schema propertyNameSchema, List path) {
}
void visitRequiredPropertyName(String requiredPropName) {
@@ -182,21 +190,21 @@ void visitMaxLength(Integer maxLength) {
void visitMinLength(Integer minLength) {
}
- void visitCombinedSchema(CombinedSchema combinedSchema) {
+ void visitCombinedSchema(CombinedSchema combinedSchema, List path) {
}
- void visitConditionalSchema(ConditionalSchema conditionalSchema) {
- conditionalSchema.getIfSchema().ifPresent(this::visitIfSchema);
- conditionalSchema.getThenSchema().ifPresent(this::visitThenSchema);
- conditionalSchema.getElseSchema().ifPresent(this::visitElseSchema);
+ void visitConditionalSchema(ConditionalSchema conditionalSchema, List path) {
+ conditionalSchema.getIfSchema().ifPresent(schema -> visitIfSchema(schema, path));
+ conditionalSchema.getThenSchema().ifPresent(schema -> visitThenSchema(schema, path));
+ conditionalSchema.getElseSchema().ifPresent(schema -> visitElseSchema(schema, path));
}
- void visitIfSchema(Schema ifSchema) {
+ void visitIfSchema(Schema ifSchema, List path) {
}
- void visitThenSchema(Schema thenSchema) {
+ void visitThenSchema(Schema thenSchema, List path) {
}
- void visitElseSchema(Schema elseSchema) {
+ void visitElseSchema(Schema elseSchema, List path) {
}
}
diff --git a/core/src/main/java/org/everit/json/schema/event/CombinedSchemaMatchEvent.java b/core/src/main/java/org/everit/json/schema/event/CombinedSchemaMatchEvent.java
index efe5cc3b8..f561981ed 100644
--- a/core/src/main/java/org/everit/json/schema/event/CombinedSchemaMatchEvent.java
+++ b/core/src/main/java/org/everit/json/schema/event/CombinedSchemaMatchEvent.java
@@ -1,5 +1,6 @@
package org.everit.json.schema.event;
+import java.util.List;
import org.everit.json.schema.CombinedSchema;
import org.everit.json.schema.Schema;
import org.json.JSONObject;
@@ -7,7 +8,12 @@
public class CombinedSchemaMatchEvent extends CombinedSchemaValidationEvent {
public CombinedSchemaMatchEvent(CombinedSchema schema, Schema subSchema,
- Object instance) {
+ Object instance, List path) {
+ super(schema, subSchema, instance, path);
+ }
+
+ public CombinedSchemaMatchEvent(CombinedSchema schema, Schema subSchema,
+ Object instance) {
super(schema, subSchema, instance);
}
diff --git a/core/src/main/java/org/everit/json/schema/event/CombinedSchemaMismatchEvent.java b/core/src/main/java/org/everit/json/schema/event/CombinedSchemaMismatchEvent.java
index 5729b33ff..de455aa4f 100644
--- a/core/src/main/java/org/everit/json/schema/event/CombinedSchemaMismatchEvent.java
+++ b/core/src/main/java/org/everit/json/schema/event/CombinedSchemaMismatchEvent.java
@@ -1,7 +1,7 @@
package org.everit.json.schema.event;
import java.util.Objects;
-
+import java.util.List;
import org.everit.json.schema.CombinedSchema;
import org.everit.json.schema.Schema;
import org.everit.json.schema.ValidationException;
@@ -12,6 +12,11 @@ public class CombinedSchemaMismatchEvent extends CombinedSchemaValidationEvent i
private final ValidationException failure;
+ public CombinedSchemaMismatchEvent(CombinedSchema schema, Schema subSchema, Object instance, ValidationException failure, List path) {
+ super(schema, subSchema, instance, path);
+ this.failure = failure;
+ }
+
public CombinedSchemaMismatchEvent(CombinedSchema schema, Schema subSchema, Object instance, ValidationException failure) {
super(schema, subSchema, instance);
this.failure = failure;
diff --git a/core/src/main/java/org/everit/json/schema/event/CombinedSchemaValidationEvent.java b/core/src/main/java/org/everit/json/schema/event/CombinedSchemaValidationEvent.java
index 202785ea7..751856841 100644
--- a/core/src/main/java/org/everit/json/schema/event/CombinedSchemaValidationEvent.java
+++ b/core/src/main/java/org/everit/json/schema/event/CombinedSchemaValidationEvent.java
@@ -1,6 +1,7 @@
package org.everit.json.schema.event;
import java.util.Objects;
+import java.util.List;
import org.everit.json.schema.CombinedSchema;
import org.everit.json.schema.Schema;
@@ -9,6 +10,11 @@ public abstract class CombinedSchemaValidationEvent extends ValidationEvent path) {
+ super(schema, instance, path);
+ this.subSchema = subSchema;
+ }
+
public CombinedSchemaValidationEvent(CombinedSchema schema, Schema subSchema, Object instance) {
super(schema, instance);
this.subSchema = subSchema;
diff --git a/core/src/main/java/org/everit/json/schema/event/SchemaReferencedEvent.java b/core/src/main/java/org/everit/json/schema/event/SchemaReferencedEvent.java
index d8ab07c1c..eeb7aa5f7 100644
--- a/core/src/main/java/org/everit/json/schema/event/SchemaReferencedEvent.java
+++ b/core/src/main/java/org/everit/json/schema/event/SchemaReferencedEvent.java
@@ -1,7 +1,7 @@
package org.everit.json.schema.event;
import java.util.Objects;
-
+import java.util.List;
import org.everit.json.schema.ReferenceSchema;
import org.everit.json.schema.Schema;
import org.json.JSONObject;
@@ -10,11 +10,17 @@ public class SchemaReferencedEvent extends ValidationEvent {
private final Schema referredSchema;
+ public SchemaReferencedEvent(ReferenceSchema schema, Object instance, Schema referredSchema, List path) {
+ super(schema, instance, path);
+ this.referredSchema = referredSchema;
+ }
+
public SchemaReferencedEvent(ReferenceSchema schema, Object instance, Schema referredSchema) {
super(schema, instance);
this.referredSchema = referredSchema;
}
+
@Override
void describeTo(JSONObject obj) {
obj.put("type", "ref");
diff --git a/core/src/main/java/org/everit/json/schema/event/ValidationEvent.java b/core/src/main/java/org/everit/json/schema/event/ValidationEvent.java
index 573e42c75..b04328f2d 100644
--- a/core/src/main/java/org/everit/json/schema/event/ValidationEvent.java
+++ b/core/src/main/java/org/everit/json/schema/event/ValidationEvent.java
@@ -1,7 +1,8 @@
package org.everit.json.schema.event;
+import java.util.ArrayList;
import java.util.Objects;
-
+import java.util.List;
import org.everit.json.schema.Schema;
import org.json.JSONObject;
@@ -11,11 +12,20 @@ public abstract class ValidationEvent {
protected final Object instance;
+ protected final List path;
+
protected ValidationEvent(S schema, Object instance) {
+ this(schema, instance, new ArrayList<>());
+ }
+
+ protected ValidationEvent(S schema, Object instance, List path) {
this.schema = schema;
this.instance = instance;
+ this.path = path;
}
+ public List getPath() { return path; }
+
public S getSchema() {
return schema;
}
diff --git a/core/src/test/java/org/everit/json/schema/ValidatingVisitorTest.java b/core/src/test/java/org/everit/json/schema/ValidatingVisitorTest.java
index 30581cd56..635cb7328 100644
--- a/core/src/test/java/org/everit/json/schema/ValidatingVisitorTest.java
+++ b/core/src/test/java/org/everit/json/schema/ValidatingVisitorTest.java
@@ -9,7 +9,11 @@
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+
+import java.util.List;
import org.everit.json.schema.event.CombinedSchemaMatchEvent;
import org.everit.json.schema.event.CombinedSchemaMismatchEvent;
import org.everit.json.schema.event.ValidationListener;
@@ -131,12 +135,12 @@ public void triggersCombinedSchemaEvents() {
ValidationFailureReporter reporter = new CollectingFailureReporter(combinedSchema);
JSONObject instance = new JSONObject();
- new ValidatingVisitor(instance, reporter, ReadWriteValidator.NONE, listener).visit(combinedSchema);
+ new ValidatingVisitor(instance, reporter, ReadWriteValidator.NONE, listener).visit(combinedSchema, Collections.singletonList("#"));
ValidationException exc = new ValidationException(stringSchema, String.class, instance);
- verify(listener).combinedSchemaMismatch(new CombinedSchemaMismatchEvent(combinedSchema, stringSchema, instance, exc));
- verify(listener).combinedSchemaMatch(new CombinedSchemaMatchEvent(combinedSchema, emptySchema, instance));
- verify(listener).combinedSchemaMatch(new CombinedSchemaMatchEvent(combinedSchema, objectSchema, instance));
+ verify(listener).combinedSchemaMismatch(new CombinedSchemaMismatchEvent(combinedSchema, stringSchema, instance, exc, new ArrayList<>()));
+ verify(listener).combinedSchemaMatch(new CombinedSchemaMatchEvent(combinedSchema, emptySchema, instance, new ArrayList<>()));
+ verify(listener).combinedSchemaMatch(new CombinedSchemaMatchEvent(combinedSchema, objectSchema, instance, new ArrayList<>()));
}
}
diff --git a/core/src/test/java/org/everit/json/schema/event/CombinedSchemaMatchEventTest.java b/core/src/test/java/org/everit/json/schema/event/CombinedSchemaMatchEventTest.java
index 8d5d980b1..c3be9ff48 100644
--- a/core/src/test/java/org/everit/json/schema/event/CombinedSchemaMatchEventTest.java
+++ b/core/src/test/java/org/everit/json/schema/event/CombinedSchemaMatchEventTest.java
@@ -11,6 +11,7 @@ public class CombinedSchemaMatchEventTest {
public void equalsVerifier() {
EqualsVerifier.forClass(CombinedSchemaMatchEvent.class)
.withNonnullFields("subSchema", "schema", "instance")
+ .withIgnoredFields("path")
.withRedefinedSuperclass()
.suppress(Warning.STRICT_INHERITANCE)
.verify();
diff --git a/core/src/test/java/org/everit/json/schema/event/CombinedSchemaMismatchEventTest.java b/core/src/test/java/org/everit/json/schema/event/CombinedSchemaMismatchEventTest.java
index 480428eec..f8bfdfe22 100644
--- a/core/src/test/java/org/everit/json/schema/event/CombinedSchemaMismatchEventTest.java
+++ b/core/src/test/java/org/everit/json/schema/event/CombinedSchemaMismatchEventTest.java
@@ -16,6 +16,7 @@ public void equalsVerifier() {
ValidationException exc2 = new ValidationException(FalseSchema.INSTANCE, "message", "keyword", "#/loca/tion");
EqualsVerifier.forClass(CombinedSchemaMismatchEvent.class)
.withNonnullFields("subSchema", "schema", "instance", "failure")
+ .withIgnoredFields("path")
.withRedefinedSuperclass()
.withPrefabValues(ValidationException.class, exc1, exc2)
.suppress(Warning.STRICT_INHERITANCE)
diff --git a/core/src/test/java/org/everit/json/schema/event/ConditionalSchemaMatchEventTest.java b/core/src/test/java/org/everit/json/schema/event/ConditionalSchemaMatchEventTest.java
index e5c1e0fd3..952c999c2 100644
--- a/core/src/test/java/org/everit/json/schema/event/ConditionalSchemaMatchEventTest.java
+++ b/core/src/test/java/org/everit/json/schema/event/ConditionalSchemaMatchEventTest.java
@@ -11,6 +11,7 @@ public class ConditionalSchemaMatchEventTest {
public void equalsVerifier() {
EqualsVerifier.forClass(ConditionalSchemaMatchEvent.class)
.withNonnullFields("keyword", "schema", "instance")
+ .withIgnoredFields("path")
.withRedefinedSuperclass()
.suppress(Warning.STRICT_INHERITANCE)
.verify();
diff --git a/core/src/test/java/org/everit/json/schema/event/ConditionalSchemaMismatchEventTest.java b/core/src/test/java/org/everit/json/schema/event/ConditionalSchemaMismatchEventTest.java
index c6f73babe..6e0824ec1 100644
--- a/core/src/test/java/org/everit/json/schema/event/ConditionalSchemaMismatchEventTest.java
+++ b/core/src/test/java/org/everit/json/schema/event/ConditionalSchemaMismatchEventTest.java
@@ -16,6 +16,7 @@ public void equalsVerifier() {
ValidationException exc2 = new ValidationException(FalseSchema.INSTANCE, "message", "keyword", "#/loca/tion");
EqualsVerifier.forClass(ConditionalSchemaMismatchEvent.class)
.withNonnullFields("keyword", "schema", "instance", "failure")
+ .withIgnoredFields("path")
.withRedefinedSuperclass()
.withPrefabValues(ValidationException.class, exc1, exc2)
.suppress(Warning.STRICT_INHERITANCE)
diff --git a/core/src/test/java/org/everit/json/schema/event/EventToStringTest.java b/core/src/test/java/org/everit/json/schema/event/EventToStringTest.java
index a5a3994d9..227da9290 100644
--- a/core/src/test/java/org/everit/json/schema/event/EventToStringTest.java
+++ b/core/src/test/java/org/everit/json/schema/event/EventToStringTest.java
@@ -5,6 +5,8 @@
import static org.everit.json.schema.event.ConditionalSchemaValidationEvent.Keyword.IF;
import static org.junit.Assert.assertThat;
+import java.util.ArrayList;
+import java.util.List;
import org.everit.json.schema.CombinedSchema;
import org.everit.json.schema.ConditionalSchema;
import org.everit.json.schema.FalseSchema;
@@ -17,6 +19,8 @@
import org.json.JSONObject;
import org.junit.Test;
+
+
public class EventToStringTest {
private static final ResourceLoader LOADER = new ResourceLoader("/org/everit/jsonvalidator/event/");
@@ -45,7 +49,7 @@ public class EventToStringTest {
INSTANCE.put("hello", new JSONArray("[\"world\"]"));
}
- private static final SchemaReferencedEvent REF_EVENT = new SchemaReferencedEvent(REF_SCHEMA, INSTANCE, REFERRED_SCHEMA);
+ private static final SchemaReferencedEvent REF_EVENT = new SchemaReferencedEvent(REF_SCHEMA, INSTANCE, REFERRED_SCHEMA, new ArrayList<>());
@Test
public void schemaReferenceEventToStringTest() {
@@ -96,7 +100,7 @@ public void conditionalSchemaMismatchEvent() {
@Test
public void combinedSchemaMatchEventToString() {
JSONObject expected = LOADER.readObj("combined-schema-match.json");
- CombinedSchemaMatchEvent subject = new CombinedSchemaMatchEvent(COMBINED_SCHEMA, TrueSchema.INSTANCE, INSTANCE);
+ CombinedSchemaMatchEvent subject = new CombinedSchemaMatchEvent(COMBINED_SCHEMA, TrueSchema.INSTANCE, INSTANCE, new ArrayList<>());
JSONObject actual = new JSONObject(subject.toString());
@@ -107,7 +111,7 @@ public void combinedSchemaMatchEventToString() {
public void combinedSchemaMismatchEventToString() {
JSONObject expected = LOADER.readObj("combined-schema-mismatch.json");
ValidationException exc = new ValidationException(COMBINED_SCHEMA, "message", "anyOf", "#/schema/location");
- CombinedSchemaMismatchEvent subject = new CombinedSchemaMismatchEvent(COMBINED_SCHEMA, FalseSchema.INSTANCE, INSTANCE, exc);
+ CombinedSchemaMismatchEvent subject = new CombinedSchemaMismatchEvent(COMBINED_SCHEMA, FalseSchema.INSTANCE, INSTANCE, exc, new ArrayList());
JSONObject actual = new JSONObject(subject.toJSON(true, true).toString());
diff --git a/core/src/test/java/org/everit/json/schema/event/SchemaReferencedEventTest.java b/core/src/test/java/org/everit/json/schema/event/SchemaReferencedEventTest.java
index 96afc2851..b486c5820 100644
--- a/core/src/test/java/org/everit/json/schema/event/SchemaReferencedEventTest.java
+++ b/core/src/test/java/org/everit/json/schema/event/SchemaReferencedEventTest.java
@@ -11,6 +11,7 @@ public class SchemaReferencedEventTest {
public void equalsVerifier() {
EqualsVerifier.forClass(SchemaReferencedEvent.class)
.withNonnullFields("referredSchema", "schema", "instance")
+ .withIgnoredFields("path")
.withRedefinedSuperclass()
.suppress(Warning.STRICT_INHERITANCE)
.verify();
diff --git a/pom.xml b/pom.xml
index f4dace638..e04d96e73 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
org.everit.json
org.everit.json.schema.parent
- 0.0.0-develop
+ 1.10.1-afranzi-SNAPSHOT
pom
diff --git a/tests/android/pom.xml b/tests/android/pom.xml
index cccb042dd..678bdee60 100644
--- a/tests/android/pom.xml
+++ b/tests/android/pom.xml
@@ -7,7 +7,7 @@
org.everit.json
org.everit.json.schema.tests.parent
- 0.0.0-develop
+ 1.10.1-afranzi-SNAPSHOT
org.everit.json.schema.tests.android
diff --git a/tests/pom.xml b/tests/pom.xml
index 637e3c14b..2200cd1a6 100644
--- a/tests/pom.xml
+++ b/tests/pom.xml
@@ -5,7 +5,7 @@
org.everit.json
org.everit.json.schema.parent
- 0.0.0-develop
+ 1.10.1-afranzi-SNAPSHOT
org.everit.json.schema.tests.parent
diff --git a/tests/vanilla/pom.xml b/tests/vanilla/pom.xml
index 750abb107..20851d62b 100644
--- a/tests/vanilla/pom.xml
+++ b/tests/vanilla/pom.xml
@@ -7,7 +7,7 @@
org.everit.json
org.everit.json.schema.tests.parent
- 0.0.0-develop
+ 1.10.1-afranzi-SNAPSHOT
org.everit.json.schema.tests.vanilla