|
@@ -2,7 +2,10 @@ package com.provectus.kafka.ui.util.jsonschema;
|
|
|
|
|
|
import com.fasterxml.jackson.databind.JsonNode;
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
+import com.fasterxml.jackson.databind.node.ArrayNode;
|
|
|
+import com.fasterxml.jackson.databind.node.BooleanNode;
|
|
|
import com.fasterxml.jackson.databind.node.ObjectNode;
|
|
|
+import com.fasterxml.jackson.databind.node.TextNode;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.stream.Collectors;
|
|
@@ -12,11 +15,18 @@ import reactor.util.function.Tuples;
|
|
|
public class ObjectFieldSchema implements FieldSchema {
|
|
|
private final Map<String, FieldSchema> properties;
|
|
|
private final List<String> required;
|
|
|
+ private final boolean nullable;
|
|
|
|
|
|
public ObjectFieldSchema(Map<String, FieldSchema> properties,
|
|
|
List<String> required) {
|
|
|
+ this(properties, required, false);
|
|
|
+ }
|
|
|
+
|
|
|
+ public ObjectFieldSchema(Map<String, FieldSchema> properties,
|
|
|
+ List<String> required, boolean nullable) {
|
|
|
this.properties = properties;
|
|
|
this.required = required;
|
|
|
+ this.nullable = nullable;
|
|
|
}
|
|
|
|
|
|
public Map<String, FieldSchema> getProperties() {
|
|
@@ -36,7 +46,18 @@ public class ObjectFieldSchema implements FieldSchema {
|
|
|
Tuple2::getT2
|
|
|
));
|
|
|
final ObjectNode objectNode = mapper.createObjectNode();
|
|
|
- objectNode.setAll(new SimpleJsonType(JsonType.Type.OBJECT).toJsonNode(mapper));
|
|
|
+ if (this.nullable) {
|
|
|
+ objectNode.set(
|
|
|
+ "type",
|
|
|
+ mapper.createArrayNode()
|
|
|
+ .add(JsonType.Type.OBJECT.getName())
|
|
|
+ .add(JsonType.Type.NULL.getName())
|
|
|
+ );
|
|
|
+ } else {
|
|
|
+ objectNode.setAll(
|
|
|
+ new SimpleJsonType(JsonType.Type.OBJECT).toJsonNode(mapper)
|
|
|
+ );
|
|
|
+ }
|
|
|
objectNode.set("properties", mapper.valueToTree(nodes));
|
|
|
if (!required.isEmpty()) {
|
|
|
objectNode.set("required", mapper.valueToTree(required));
|