|
@@ -1,5 +1,7 @@
|
|
|
package org.leumasjaffe.json.schema;
|
|
package org.leumasjaffe.json.schema;
|
|
|
|
|
|
|
|
|
|
+import static org.leumasjaffe.json.schema.tester.FixedTester.ACCEPT;
|
|
|
|
|
+
|
|
|
import java.util.Arrays;
|
|
import java.util.Arrays;
|
|
|
import java.util.HashMap;
|
|
import java.util.HashMap;
|
|
|
import java.util.HashSet;
|
|
import java.util.HashSet;
|
|
@@ -29,6 +31,7 @@ public class Schema implements Tester {
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public JsonNodeType[] acceptedTypes() {
|
|
public JsonNodeType[] acceptedTypes() {
|
|
|
|
|
+ if (children.isEmpty()) return ANY;
|
|
|
final Set<JsonNodeType> set = new HashSet<>();
|
|
final Set<JsonNodeType> set = new HashSet<>();
|
|
|
children.values().stream().map(Tester::acceptedTypes)
|
|
children.values().stream().map(Tester::acceptedTypes)
|
|
|
.forEach(a -> set.addAll(Arrays.asList(a)));
|
|
.forEach(a -> set.addAll(Arrays.asList(a)));
|
|
@@ -41,8 +44,14 @@ public class Schema implements Tester {
|
|
|
return true;
|
|
return true;
|
|
|
} else if (children.containsKey(SELF)) {
|
|
} else if (children.containsKey(SELF)) {
|
|
|
return children.get(SELF).accepts(node);
|
|
return children.get(SELF).accepts(node);
|
|
|
|
|
+ } else if (!canProcess(node)) {
|
|
|
|
|
+ return false;
|
|
|
}
|
|
}
|
|
|
// TODO
|
|
// TODO
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ private boolean canProcess(JsonNode node) {
|
|
|
|
|
+ return Arrays.asList(acceptedTypes()).contains(node.getNodeType());
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|