Skip to content

Commit 98a3e70

Browse files
committed
update boolean schema support
1 parent 92f36c4 commit 98a3e70

File tree

1 file changed

+11
-10
lines changed

1 file changed

+11
-10
lines changed

modules/swagger-core/src/main/java/io/swagger/v3/core/util/ModelDeserializer.java

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,9 @@ public Schema deserialize(JsonParser jp, DeserializationContext ctxt)
4444
schema = deserializeJsonSchema(node);
4545
return schema;
4646
}
47-
47+
if (node.isBoolean()) {
48+
return new Schema().booleanSchemaValue(node.booleanValue());
49+
}
4850

4951
List<String> composed = Arrays.asList("allOf", "anyOf", "oneOf");
5052
for (String field: composed) {
@@ -98,23 +100,22 @@ private Schema deserializeObjectSchema(JsonNode node) {
98100
JsonNode additionalProperties = node.get("additionalProperties");
99101
Schema schema = null;
100102
if (additionalProperties != null) {
101-
// try first to convert to Schema, if it fails it must be a boolean
102-
try {
103-
Schema innerSchema = Json.mapper().convertValue(additionalProperties, Schema.class);
104-
((ObjectNode)node).remove("additionalProperties");
105-
MapSchema ms = Json.mapper().convertValue(node, MapSchema.class);
106-
ms.setAdditionalProperties(innerSchema);
107-
schema = ms;
108-
} catch (Exception e) {
103+
if (additionalProperties.isBoolean()) {
109104
Boolean additionalPropsBoolean = Json.mapper().convertValue(additionalProperties, Boolean.class);
105+
((ObjectNode)node).remove("additionalProperties");
110106
if (additionalPropsBoolean) {
111107
schema = Json.mapper().convertValue(node, MapSchema.class);
112108
} else {
113109
schema = Json.mapper().convertValue(node, ObjectSchema.class);
114110
}
115111
schema.setAdditionalProperties(additionalPropsBoolean);
112+
} else {
113+
Schema innerSchema = Json.mapper().convertValue(additionalProperties, Schema.class);
114+
((ObjectNode)node).remove("additionalProperties");
115+
MapSchema ms = Json.mapper().convertValue(node, MapSchema.class);
116+
ms.setAdditionalProperties(innerSchema);
117+
schema = ms;
116118
}
117-
118119
} else {
119120
schema = Json.mapper().convertValue(node, ObjectSchema.class);
120121
}

0 commit comments

Comments
 (0)