public Info info(ObjectNode node, String location, ParseResult result) {
if(node == null)
return null;
Info info = new Info();
String value = getString("title", node, true, location, result);
info.title(value);
value = getString("description", node, false, location, result);
info.description(value);
value = getString("termsOfService", node, false, location, result);
info.termsOfService(value);
ObjectNode obj = getObject("contact", node, false, "contact", result);
Contact contact = contact(obj, location, result);
info.contact(contact);
obj = getObject("license", node, false, location, result);
License license = license(obj, location, result);
info.license(license);
value = getString("version", node, false, location, result);
info.version(value);
Set<String> keys = getKeys(node);
for(String key : keys) {
if(key.startsWith("x-")) {
info.setVendorExtension(key, extension(node.get(key)));
}
else if(!INFO_KEYS.contains(key)) {
result.extra(location, key, node.get(key));
}
}
return info;
}