Skip to content
This repository was archived by the owner on Nov 24, 2022. It is now read-only.

Commit fecc747

Browse files
committed
fix for issue swagger-api#1071
1 parent b5747ca commit fecc747

1 file changed

Lines changed: 27 additions & 19 deletions

File tree

modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/util/OpenAPIDeserializer.java

Lines changed: 27 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import io.swagger.v3.oas.models.media.DateTimeSchema;
2525
import io.swagger.v3.oas.models.media.Discriminator;
2626
import io.swagger.v3.oas.models.media.Encoding;
27+
import io.swagger.v3.oas.models.media.MapSchema;
2728
import io.swagger.v3.oas.models.media.MediaType;
2829
import io.swagger.v3.oas.models.media.Schema;
2930
import io.swagger.v3.oas.models.media.XML;
@@ -2023,7 +2024,7 @@ public Schema getSchema(ObjectNode node, String location, ParseResult result){
20232024
ArrayNode allOfArray = getArray("allOf", node, false, location, result);
20242025
ArrayNode anyOfArray = getArray("anyOf", node, false, location, result);
20252026
ObjectNode itemsNode = getObject("items", node, false, location, result);
2026-
2027+
ObjectNode additionalPropertiesNode = getObject("additionalProperties", node, false, location, result);
20272028

20282029

20292030
if((allOfArray != null )||(anyOfArray != null)|| (oneOfArray != null)) {
@@ -2075,6 +2076,31 @@ public Schema getSchema(ObjectNode node, String location, ParseResult result){
20752076
schema = items;
20762077
}
20772078

2079+
if(additionalPropertiesNode != null){
2080+
MapSchema mapSchema = new MapSchema();
2081+
if (additionalPropertiesNode.getNodeType().equals(JsonNodeType.OBJECT)) {
2082+
ObjectNode additionalPropertiesObj = getObject("additionalProperties", node, false, location, result);
2083+
if (additionalPropertiesObj != null) {
2084+
Schema additionalProperties = getSchema(additionalPropertiesObj, location, result);
2085+
if (additionalProperties != null) {
2086+
mapSchema.setAdditionalProperties(additionalProperties);
2087+
}
2088+
}
2089+
} else if (additionalPropertiesNode.getNodeType().equals(JsonNodeType.BOOLEAN)) {
2090+
Boolean additionalProperties = getBoolean("additionalProperties", node, false, location, result);
2091+
if (additionalProperties != null) {
2092+
if (additionalProperties == true) {
2093+
mapSchema.setAdditionalProperties(additionalProperties);
2094+
}else{
2095+
schema.setAdditionalProperties(additionalProperties);
2096+
}
2097+
}
2098+
}
2099+
schema = mapSchema;
2100+
}
2101+
2102+
2103+
20782104
if (schema == null){
20792105
schema = SchemaTypeUtil.createSchemaByType(node);
20802106
}
@@ -2267,24 +2293,6 @@ public Schema getSchema(ObjectNode node, String location, ParseResult result){
22672293
schema.setProperties(properties);
22682294
}
22692295

2270-
2271-
if (node.get("additionalProperties") != null) {
2272-
if (node.get("additionalProperties").getNodeType().equals(JsonNodeType.OBJECT)) {
2273-
ObjectNode additionalPropertiesObj = getObject("additionalProperties", node, false, location, result);
2274-
if (additionalPropertiesObj != null) {
2275-
Schema additionalProperties = getSchema(additionalPropertiesObj, location, result);
2276-
if (additionalProperties != null) {
2277-
schema.setAdditionalProperties(additionalProperties);
2278-
}
2279-
}
2280-
} else if (node.get("additionalProperties").getNodeType().equals(JsonNodeType.BOOLEAN)) {
2281-
Boolean additionalProperties = getBoolean("additionalProperties", node, false, location, result);
2282-
if (additionalProperties != null) {
2283-
schema.setAdditionalProperties(additionalProperties);
2284-
}
2285-
2286-
}
2287-
}
22882296
value = getString("description",node,false,location,result);
22892297
if (StringUtils.isNotBlank(value)) {
22902298
schema.setDescription(value);

0 commit comments

Comments
 (0)