|
|
@@ -6,10 +6,12 @@ import java.util.regex.Pattern;
|
|
|
|
|
|
import org.leumasjaffe.json.JsonHelper;
|
|
|
import org.leumasjaffe.json.schema.Tester;
|
|
|
+import org.leumasjaffe.json.schema.tester.AllItemsTester;
|
|
|
import org.leumasjaffe.json.schema.tester.AllOfTester;
|
|
|
import org.leumasjaffe.json.schema.tester.AnyOfTester;
|
|
|
import org.leumasjaffe.json.schema.tester.ContainsTester;
|
|
|
import org.leumasjaffe.json.schema.tester.FormatTester;
|
|
|
+import org.leumasjaffe.json.schema.tester.ItemsTester;
|
|
|
import org.leumasjaffe.json.schema.tester.NotTester;
|
|
|
import org.leumasjaffe.json.schema.tester.NumberTester;
|
|
|
import org.leumasjaffe.json.schema.tester.OneOfTester;
|
|
|
@@ -46,23 +48,8 @@ class SchemaV6Factory extends SchemaFactory {
|
|
|
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 j -> j.isTextual() && j.asText().matches(value.asText());
|
|
|
- case "additionalItems": return j -> JsonHelper.toArray(j).stream().allMatch(create(value)::accepts);
|
|
|
- case "items":
|
|
|
- if (value.isArray()) {
|
|
|
- return j -> {
|
|
|
- List<Tester> tests = createArray(value);
|
|
|
- List<JsonNode> data = JsonHelper.toArray(j);
|
|
|
- for (int i = 0; i < Math.min(value.size(), data.size()); ++i) {
|
|
|
- if (!tests.get(i).accepts(data.get(i))) {
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
- return true;
|
|
|
- };
|
|
|
- }
|
|
|
- else {
|
|
|
- return j -> JsonHelper.toArray(j).stream().allMatch(create(value)::accepts);
|
|
|
- }
|
|
|
+ case "additionalItems": return new AllItemsTester(create(value));
|
|
|
+ case "items": return value.isArray() ? new ItemsTester(createArray(value)) : new AllItemsTester(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 "uniqueItems": return value.asBoolean() ? UniqueItemTester.INSTANCE : Tester.ACCEPT;
|