|
|
@@ -1,5 +1,7 @@
|
|
|
package org.leumasjaffe.json.schema.factory;
|
|
|
|
|
|
+import static com.fasterxml.jackson.databind.node.JsonNodeType.*;
|
|
|
+
|
|
|
import java.util.List;
|
|
|
import java.util.function.Predicate;
|
|
|
|
|
|
@@ -23,7 +25,6 @@ import org.leumasjaffe.json.schema.tester.TypeTester;
|
|
|
import org.leumasjaffe.json.schema.tester.UniqueItemTester;
|
|
|
|
|
|
import com.fasterxml.jackson.databind.JsonNode;
|
|
|
-import com.fasterxml.jackson.databind.node.JsonNodeType;
|
|
|
|
|
|
class SchemaV6Factory extends SchemaFactory {
|
|
|
@Override
|
|
|
@@ -46,22 +47,22 @@ class SchemaV6Factory extends SchemaFactory {
|
|
|
case "exclusiveMaximum": return new NumberTester(d -> d < value.asDouble());
|
|
|
case "minimum": return new NumberTester(d -> d >= value.asDouble());
|
|
|
case "exclusiveMinimum": return new NumberTester(d -> d > value.asDouble());
|
|
|
- case "maxLength": return new SizeTester(JsonNodeType.STRING, i -> i < value.asInt());
|
|
|
- case "minLength": return new SizeTester(JsonNodeType.STRING, i -> i >= value.asInt(0));
|
|
|
- case "pattern": return new SimpleTester(JsonNodeType.STRING, j -> j.asText().matches(value.asText()));
|
|
|
- case "additionalItems": return new AllItemsTester(JsonNodeType.ARRAY, create(value));
|
|
|
- case "items": return value.isArray() ? new ItemsTester(createArray(value)) : new AllItemsTester(JsonNodeType.ARRAY, create(value));
|
|
|
- case "maxItems": return new SizeTester(JsonNodeType.ARRAY, i -> i < value.asInt());
|
|
|
- case "minItems": return new SizeTester(JsonNodeType.ARRAY, i -> i >= value.asInt(0));
|
|
|
+ case "maxLength": return new SizeTester(STRING, i -> i < value.asInt());
|
|
|
+ case "minLength": return new SizeTester(STRING, i -> i >= value.asInt(0));
|
|
|
+ case "pattern": return new SimpleTester(STRING, j -> j.asText().matches(value.asText()));
|
|
|
+ case "additionalItems": return new AllItemsTester(ARRAY, create(value));
|
|
|
+ case "items": return value.isArray() ? new ItemsTester(createArray(value)) : new AllItemsTester(ARRAY, create(value));
|
|
|
+ case "maxItems": return new SizeTester(ARRAY, i -> i < value.asInt());
|
|
|
+ case "minItems": return new SizeTester(ARRAY, i -> i >= value.asInt(0));
|
|
|
case "uniqueItems": return value.asBoolean() ? UniqueItemTester.INSTANCE : FixedTester.ACCEPT;
|
|
|
case "contains": return new ContainsTester(create(value));
|
|
|
- case "maxProperties": return new SizeTester(JsonNodeType.OBJECT, i -> i < value.asInt());
|
|
|
- case "minProperties": return new SizeTester(JsonNodeType.OBJECT, i -> i >= value.asInt(0));
|
|
|
+ case "maxProperties": return new SizeTester(OBJECT, i -> i < value.asInt());
|
|
|
+ case "minProperties": return new SizeTester(OBJECT, i -> i >= value.asInt(0));
|
|
|
case "required": {
|
|
|
final List<String> reqKeys = JsonHelper.toArray(value, JsonNode::asText);
|
|
|
- return new SimpleTester(JsonNodeType.OBJECT, json -> reqKeys.stream().allMatch(json::has));
|
|
|
+ return new SimpleTester(OBJECT, json -> reqKeys.stream().allMatch(json::has));
|
|
|
}
|
|
|
- case "additionalProperties": return new AllItemsTester(JsonNodeType.OBJECT, create(value));
|
|
|
+ case "additionalProperties": return new AllItemsTester(OBJECT, create(value));
|
|
|
// case "definitions": ; // TODO Implement definitions creation
|
|
|
case "properties": return new PropertyTester(JsonHelper.values(value,
|
|
|
(k, v) -> new PropertyTester.Pair(stringEqual(k), create(v))));
|