Skip to content

Commit 7208a54

Browse files
authored
Merge pull request #1713 from RockyMM/master
Changes form-data schema to ObjectSchema
2 parents 0b2dfac + 9dd3036 commit 7208a54

File tree

3 files changed

+103
-16
lines changed

3 files changed

+103
-16
lines changed

modules/swagger-parser-v2-converter/src/main/java/io/swagger/v3/parser/converter/SwaggerConverter.java

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,7 @@
3737
import io.swagger.v3.oas.models.info.Contact;
3838
import io.swagger.v3.oas.models.info.Info;
3939
import io.swagger.v3.oas.models.info.License;
40-
import io.swagger.v3.oas.models.media.ArraySchema;
41-
import io.swagger.v3.oas.models.media.ComposedSchema;
42-
import io.swagger.v3.oas.models.media.Content;
43-
import io.swagger.v3.oas.models.media.Discriminator;
44-
import io.swagger.v3.oas.models.media.FileSchema;
45-
import io.swagger.v3.oas.models.media.MediaType;
46-
import io.swagger.v3.oas.models.media.Schema;
40+
import io.swagger.v3.oas.models.media.*;
4741
import io.swagger.v3.oas.models.parameters.Parameter;
4842
import io.swagger.v3.oas.models.parameters.RequestBody;
4943
import io.swagger.v3.oas.models.responses.ApiResponse;
@@ -66,7 +60,6 @@
6660

6761
import java.math.BigDecimal;
6862
import java.util.ArrayList;
69-
import java.util.Arrays;
7063
import java.util.HashMap;
7164
import java.util.LinkedHashMap;
7265
import java.util.List;
@@ -679,7 +672,7 @@ private Schema convertFormDataToSchema(io.swagger.models.parameters.Parameter fo
679672
private RequestBody convertFormDataToRequestBody(List<io.swagger.models.parameters.Parameter> formParams, List<String> consumes) {
680673
RequestBody body = new RequestBody();
681674

682-
Schema formSchema = new Schema();
675+
Schema<Object> formSchema = new ObjectSchema();
683676

684677
for (io.swagger.models.parameters.Parameter param : formParams) {
685678
SerializableParameter sp;
@@ -702,7 +695,7 @@ private RequestBody convertFormDataToRequestBody(List<io.swagger.models.paramete
702695
formSchema.addRequiredItem(sp.getName());
703696
}
704697

705-
formSchema.addProperties(name, schema);
698+
formSchema.addProperty(name, schema);
706699
}
707700

708701
List<String> mediaTypes = new ArrayList<>(globalConsumes);

modules/swagger-parser-v2-converter/src/test/java/io/swagger/parser/test/V2ConverterTest.java

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,7 @@
77
import io.swagger.v3.oas.models.PathItem;
88
import io.swagger.v3.oas.models.headers.Header;
99
import io.swagger.v3.oas.models.info.Info;
10-
import io.swagger.v3.oas.models.media.ArraySchema;
11-
import io.swagger.v3.oas.models.media.BooleanSchema;
12-
import io.swagger.v3.oas.models.media.ComposedSchema;
13-
import io.swagger.v3.oas.models.media.IntegerSchema;
14-
import io.swagger.v3.oas.models.media.StringSchema;
15-
import io.swagger.v3.oas.models.media.Schema;
10+
import io.swagger.v3.oas.models.media.*;
1611
import io.swagger.v3.oas.models.parameters.Parameter;
1712
import io.swagger.v3.oas.models.parameters.RequestBody;
1813
import io.swagger.v3.oas.models.responses.ApiResponse;
@@ -900,4 +895,22 @@ public void testInlineDefinitionProperty() throws Exception {
900895
assertNotNull(petCategoryInline);
901896

902897
}
898+
899+
@Test()
900+
public void testConvertFormDataAsObjectSchema() throws Exception {
901+
OpenAPI oas = getConvertedOpenAPIFromJsonFile("issue-1529.json");
902+
assertNotNull(oas);
903+
904+
Schema companiesSchema = oas.getPaths()
905+
.get("/companies/")
906+
.getPost()
907+
.getRequestBody()
908+
.getContent()
909+
.get("multipart/form-data")
910+
.getSchema();
911+
912+
assertEquals(companiesSchema.getType(), "object");
913+
assertEquals(companiesSchema.getClass(), ObjectSchema.class);
914+
915+
}
903916
}
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
{
2+
"basePath": "/external-api/v3",
3+
"consumes": [
4+
"application/json"
5+
],
6+
7+
"host": "host.systems",
8+
"info": {
9+
"description": "test form data",
10+
"title": "test form data",
11+
"version": "v0"
12+
},
13+
"paths": {
14+
"/companies/": {
15+
"post": {
16+
"consumes": [
17+
"multipart/form-data"
18+
],
19+
"description": "Create company.",
20+
"operationId": "companies_create",
21+
"parameters": [
22+
{
23+
"description": "Accessible extensions are: `.jpg`, `.png`, maximum size is: `5.0` Mb",
24+
"in": "formData",
25+
"name": "profile_image",
26+
"required": true,
27+
"type": "file"
28+
},
29+
{
30+
"format": "date",
31+
"in": "formData",
32+
"name": "expiry",
33+
"required": false,
34+
"type": "string",
35+
"x-nullable": true
36+
},
37+
{
38+
"in": "formData",
39+
"maxLength": 250,
40+
"minLength": 1,
41+
"name": "name",
42+
"required": true,
43+
"type": "string"
44+
},
45+
{
46+
"description": "Accessible extensions are: `.svg`, `.png`, maximum size is: `5.0` Mb",
47+
"in": "formData",
48+
"name": "logo",
49+
"required": false,
50+
"type": "file",
51+
"x-nullable": true
52+
}
53+
],
54+
"responses": {
55+
"201": {
56+
"description": "response",
57+
"schema": {
58+
"type": "object",
59+
"properties": {
60+
"status" : {
61+
"type": "string"
62+
}
63+
}
64+
}
65+
}
66+
},
67+
"summary": "Create company.",
68+
"tags": [
69+
"companies"
70+
]
71+
}
72+
}
73+
},
74+
"produces": [
75+
"application/json"
76+
],
77+
"schemes": [
78+
"http"
79+
],
80+
"swagger": "2.0"
81+
}

0 commit comments

Comments
 (0)