in smithy-jsonschema/src/main/java/software/amazon/smithy/jsonschema/Schema.java [327:414]
public Node toNode() {
if (asNode != null) {
return asNode;
}
ObjectNode.Builder result = Node.objectNodeBuilder()
.withOptionalMember("type", getType().map(Node::from))
.withOptionalMember("$ref", getRef().map(Node::from))
.withOptionalMember("const", getConstValue())
.withOptionalMember("default", getDefaultValue())
.withOptionalMember("multipleOf", getMultipleOf().map(Node::from))
.withOptionalMember("maximum", getMaximum().map(Node::from))
.withOptionalMember("exclusiveMaximum", getExclusiveMaximum().map(Node::from))
.withOptionalMember("minimum", getMinimum().map(Node::from))
.withOptionalMember("exclusiveMinimum", getExclusiveMinimum().map(Node::from))
.withOptionalMember("items", getItems().map(ToNode::toNode))
.withOptionalMember("maxItems", getMaxItems().map(Node::from))
.withOptionalMember("minItems", getMinItems().map(Node::from))
.withOptionalMember("uniqueItems", uniqueItems ? Optional.of(Node.from(true)) : Optional.empty())
.withOptionalMember("maxLength", getMaxLength().map(Node::from))
.withOptionalMember("minLength", getMinLength().map(Node::from))
.withOptionalMember("pattern", getPattern().map(Node::from))
.withOptionalMember("additionalProperties", getAdditionalProperties().map(Schema::toNode))
.withOptionalMember("propertyNames", getPropertyNames().map(Schema::toNode))
.withOptionalMember("maxProperties", getMaxProperties().map(Node::from))
.withOptionalMember("minProperties", getMinProperties().map(Node::from))
.withOptionalMember("not", getNot().map(Schema::toNode))
.withOptionalMember("comment", getComment().map(Node::from))
.withOptionalMember("examples", getExamples())
.withOptionalMember("title", getTitle().map(Node::from))
.withOptionalMember("description", getDescription().map(Node::from))
.withOptionalMember("format", getFormat().map(Node::from))
.withOptionalMember("contentEncoding", getContentEncoding().map(Node::from))
.withOptionalMember("contentMediaType", getContentMediaType().map(Node::from));
if (!properties.isEmpty()) {
result.withMember("properties", properties.entrySet().stream()
.collect(ObjectNode.collectStringKeys(Map.Entry::getKey, e -> e.getValue().toNode())));
}
if (!patternProperties.isEmpty()) {
result.withMember("patternProperties", patternProperties.entrySet().stream()
.collect(ObjectNode.collectStringKeys(Map.Entry::getKey, e -> e.getValue().toNode())));
}
if (!required.isEmpty()) {
result.withMember("required", required.stream().sorted().map(Node::from).collect(ArrayNode.collect()));
}
if (!enumValues.isEmpty()) {
result.withOptionalMember("enum", getEnumValues()
.map(v -> v.stream().map(Node::from).collect(ArrayNode.collect())));
}
if (!allOf.isEmpty()) {
result.withMember("allOf", allOf.stream().collect(ArrayNode.collect()));
}
if (!anyOf.isEmpty()) {
result.withMember("anyOf", anyOf.stream().collect(ArrayNode.collect()));
}
if (!oneOf.isEmpty()) {
result.withMember("oneOf", oneOf.stream().collect(ArrayNode.collect()));
}
if (readOnly) {
result.withMember("readOnly", Node.from(true));
}
if (writeOnly) {
result.withMember("writeOnly", Node.from(true));
}
for (Map.Entry<String, ToNode> entry : extensions.entrySet()) {
result.withMember(entry.getKey(), entry.getValue().toNode());
}
asNode = result.build();
return asNode;
}