|
|
@@ -2,8 +2,6 @@ package org.leumasjaffe.json.schema.tester;
|
|
|
|
|
|
import java.util.function.Predicate;
|
|
|
|
|
|
-import org.leumasjaffe.json.schema.Tester;
|
|
|
-
|
|
|
import com.fasterxml.jackson.databind.JsonNode;
|
|
|
import com.fasterxml.jackson.databind.node.JsonNodeType;
|
|
|
|
|
|
@@ -13,23 +11,29 @@ import lombok.experimental.FieldDefaults;
|
|
|
|
|
|
@RequiredArgsConstructor(access=AccessLevel.PRIVATE)
|
|
|
@FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
|
|
|
-public class TypeTester implements Tester {
|
|
|
+public class TypeTester extends SimpleValidationTester {
|
|
|
|
|
|
public static TypeTester fromType(final String type) {
|
|
|
switch (type) {
|
|
|
- case "array": return new TypeTester(JsonNode::isArray);
|
|
|
- case "boolean": return new TypeTester(JsonNode::isBoolean);
|
|
|
- case "integer": return new TypeTester(JsonNode::isInt);
|
|
|
- case "null": return new TypeTester(JsonNode::isNull);
|
|
|
- case "number": return new TypeTester(JsonNode::isNumber);
|
|
|
- case "object": return new TypeTester(JsonNode::isObject);
|
|
|
- case "string": return new TypeTester(JsonNode::isTextual);
|
|
|
+ case "array": return new TypeTester("array", JsonNode::isArray);
|
|
|
+ case "boolean": return new TypeTester("boolean", JsonNode::isBoolean);
|
|
|
+ case "integer": return new TypeTester("integer", JsonNode::isInt);
|
|
|
+ case "null": return new TypeTester("null", JsonNode::isNull);
|
|
|
+ case "number": return new TypeTester("number", JsonNode::isNumber);
|
|
|
+ case "object": return new TypeTester("object", JsonNode::isObject);
|
|
|
+ case "string": return new TypeTester("string", JsonNode::isTextual);
|
|
|
default: throw new IllegalArgumentException("Invalid type: " + type);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ String name;
|
|
|
Predicate<JsonNode> test;
|
|
|
|
|
|
+ @Override
|
|
|
+ public String errorMessage(final JsonNode node) {
|
|
|
+ return "type mismatch. expected: " + name + " got: " + node.getNodeType();
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public JsonNodeType[] acceptedTypes() {
|
|
|
return ANY;
|