public DependenciesValidator(final JsonNode digest) { super("dependencies"); /* * Property dependencies */ final ImmutableMultimap.Builder<String, String> mapBuilder = ImmutableMultimap.builder(); final Map<String, JsonNode> map = JacksonUtils.asMap(digest.get("propertyDeps")); String key; for (final Map.Entry<String, JsonNode> entry: map.entrySet()) { key = entry.getKey(); for (final JsonNode element: entry.getValue()) mapBuilder.put(key, element.textValue()); } propertyDeps = mapBuilder.build(); /* * Schema dependencies */ final ImmutableSet.Builder<String> setBuilder = ImmutableSet.builder(); for (final JsonNode node: digest.get("schemaDeps")) setBuilder.add(node.textValue()); schemaDeps = setBuilder.build(); }
@Override public JsonNode digest(final JsonNode schema) { final ObjectNode ret = FACTORY.objectNode(); final ObjectNode propertyDeps = FACTORY.objectNode(); ret.put("propertyDeps", propertyDeps); final ArrayNode schemaDeps = FACTORY.arrayNode(); ret.put("schemaDeps", schemaDeps); final List<String> list = Lists.newArrayList(); final Map<String, JsonNode> map = JacksonUtils.asMap(schema.get(keyword)); String key; JsonNode value; for (final Map.Entry<String, JsonNode> entry: map.entrySet()) { key = entry.getKey(); value = entry.getValue(); if (value.isObject()) // schema dep list.add(key); else // property dep propertyDeps.put(key, sortedSet(value)); } for (final String s: Ordering.natural().sortedCopy(list)) schemaDeps.add(s); return ret; }
= JacksonUtils.asMap(schema.get(keyword));
public static void main(final String... args) throws IOException, ProcessingException { final JsonNode googleAPI = JsonLoader.fromResource("/other/google-json-api.json"); final Map<String, JsonNode> googleSchemas = JacksonUtils.asMap(googleAPI.get("schemas")); long begin, current; begin = System.currentTimeMillis(); doValidate(googleSchemas, -1); current = System.currentTimeMillis(); System.out.println("Initial validation :" + (current - begin) + " ms"); begin = System.currentTimeMillis(); for (int i = 0; i < 500; i++) { doValidate(googleSchemas, i); if (i % 20 == 0) { current = System.currentTimeMillis(); System.out.println(String.format("Iteration %d (in %d ms)", i, current - begin)); } } final long end = System.currentTimeMillis(); System.out.println("END -- time in ms: " + (end - begin)); System.exit(0); }
@Override protected final void checkValue(final Collection<JsonPointer> pointers, final MessageBundle bundle, final ProcessingReport report, final SchemaTree tree) throws ProcessingException { final JsonNode node = getNode(tree); final Map<String, JsonNode> map = Maps.newTreeMap(); map.putAll(JacksonUtils.asMap(node)); String key; JsonNode value; for (final Map.Entry<String, JsonNode> entry: map.entrySet()) { key = entry.getKey(); value = entry.getValue(); if (value.isObject()) pointers.add(JsonPointer.of(keyword, key)); else checkDependency(report, bundle, entry.getKey(), tree); } }
@Override protected final void checkValue(final Collection<JsonPointer> pointers, final MessageBundle bundle, final ProcessingReport report, final SchemaTree tree) throws ProcessingException { final JsonNode node = getNode(tree); final Map<String, JsonNode> map = Maps.newTreeMap(); map.putAll(JacksonUtils.asMap(node)); String key; JsonNode value; for (final Map.Entry<String, JsonNode> entry: map.entrySet()) { key = entry.getKey(); value = entry.getValue(); if (value.isObject()) pointers.add(JsonPointer.of(keyword, key)); else checkDependency(report, bundle, entry.getKey(), tree); } }
@Override protected final void checkValue(final Collection<JsonPointer> pointers, final MessageBundle bundle, final ProcessingReport report, final SchemaTree tree) throws ProcessingException { final JsonNode node = getNode(tree); final Map<String, JsonNode> map = Maps.newTreeMap(); map.putAll(JacksonUtils.asMap(node)); String key; JsonNode value; for (final Map.Entry<String, JsonNode> entry: map.entrySet()) { key = entry.getKey(); value = entry.getValue(); if (value.isObject()) pointers.add(JsonPointer.of(keyword, key)); else checkDependency(report, bundle, entry.getKey(), tree); } }
@Override protected void extraChecks(final ProcessingReport report, final MessageBundle bundle, final SchemaTree tree) throws ProcessingException { final SortedMap<String, JsonNode> map = Maps.newTreeMap(); map.putAll(JacksonUtils.asMap(tree.getNode().get(keyword))); String member; JsonNode required; NodeType type; for (final Map.Entry<String, JsonNode> entry: map.entrySet()) { member = entry.getKey(); required = entry.getValue().get("required"); if (required == null) continue; type = NodeType.getNodeType(required); if (type != NodeType.BOOLEAN) { report.error(newMsg(tree, bundle, "draftv3.properties.required.incorrectType") .putArgument("property", member).putArgument("found", type) .put("expected", NodeType.BOOLEAN)); } } } }
@Override protected void extraChecks(final ProcessingReport report, final MessageBundle bundle, final SchemaTree tree) throws ProcessingException { final SortedMap<String, JsonNode> map = Maps.newTreeMap(); map.putAll(JacksonUtils.asMap(tree.getNode().get(keyword))); String member; JsonNode required; NodeType type; for (final Map.Entry<String, JsonNode> entry: map.entrySet()) { member = entry.getKey(); required = entry.getValue().get("required"); if (required == null) continue; type = NodeType.getNodeType(required); if (type != NodeType.BOOLEAN) { report.error(newMsg(tree, bundle, "draftv3.properties.required.incorrectType") .putArgument("property", member).putArgument("found", type) .put("expected", NodeType.BOOLEAN)); } } } }
@Override protected void extraChecks(final ProcessingReport report, final MessageBundle bundle, final SchemaTree tree) throws ProcessingException { final SortedMap<String, JsonNode> map = Maps.newTreeMap(); map.putAll(JacksonUtils.asMap(tree.getNode().get(keyword))); String member; JsonNode required; NodeType type; for (final Map.Entry<String, JsonNode> entry: map.entrySet()) { member = entry.getKey(); required = entry.getValue().get("required"); if (required == null) continue; type = NodeType.getNodeType(required); if (type != NodeType.BOOLEAN) { report.error(newMsg(tree, bundle, "draftv3.properties.required.incorrectType") .putArgument("property", member).putArgument("found", type) .put("expected", NodeType.BOOLEAN)); } } } }
final Map<String, JsonNode> tmp = JacksonUtils.asMap(node);
final Map<String, JsonNode> tmp = JacksonUtils.asMap(node);
public ProcessingMessageAssert hasContents(final ObjectNode node) { /* * No need to check if the map is empty */ if (node.size() == 0) return this; /* * Grab the two nodes as maps */ final Map<String, JsonNode> expectedMap = JacksonUtils.asMap(msg); final Map<String, JsonNode> actualMap = JacksonUtils.asMap(node); /* * Check that this message's map contains all keys of the wanted data */ assertTrue(expectedMap.keySet().containsAll(actualMap.keySet())); /* * OK? Let's check contents with Map.equals(). */ expectedMap.keySet().retainAll(actualMap.keySet()); assertEquals(actualMap, expectedMap, "different map contents"); return this; } }
final Map<String, JsonNode> tmp = JacksonUtils.asMap(node);