Skip to content

Commit a3ff80e

Browse files
committed
added form data
1 parent f7139dc commit a3ff80e

File tree

4 files changed

+264
-1
lines changed

4 files changed

+264
-1
lines changed

src/main/java/io/swagger/codegen/v3/generators/scala/AkkaHttpServerCodegen.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,10 @@ public static void addAllParamsWithSupportedTypes(CodegenOperation codegenOperat
188188
if(!primitiveParamTypes.contains(parameter.dataType)){
189189
parameterCopy.dataType = FALLBACK_DATA_TYPE;
190190
}
191+
} else if(containsParam(codegenOperation.formParams, parameter)){
192+
if(!primitiveParamTypes.contains(parameter.dataType)){
193+
parameterCopy.dataType = FALLBACK_DATA_TYPE;
194+
}
191195
}
192196
allParamsWithSupportedType.add(parameterCopy);
193197
}

src/main/resources/v2/scala/akka-http-server/api.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class {{classname}}(
1717
{{vendorExtensions.lowercaseHttpMethod}} {
1818
{{^queryParams.isEmpty}}parameters({{#vendorExtensions.queryParamsWithSupportedType}}"{{paramName}}".as[{{dataType}}]{{^required}}.?{{/required}}{{#hasMore}}, {{/hasMore}}{{/vendorExtensions.queryParamsWithSupportedType}}) { ({{#queryParams}}{{paramName}}{{#hasMore}}, {{/hasMore}}{{/queryParams}}) =>{{/queryParams.isEmpty}}
1919
{{#headerParams}}{{#required}}headerValueByName{{/required}}{{^required}}optionalHeaderValueByName{{/required}}("{{paramName}}") { {{paramName}} => {{/headerParams}}
20-
{{^formParams.isEmpty}}formFields({{#formParams}}"{{paramName}}".as[{{dataType}}]{{^required}}.?{{/required}}{{#hasMore}}, {{/hasMore}}{{/formParams}}) { ({{#formParams}}{{paramName}}{{#hasMore}}, {{/hasMore}}{{/formParams}}) =>{{/formParams.isEmpty}}
20+
{{^formParams.isEmpty}}formFields({{#formParams}}"{{paramName}}".as[{{#isPrimitiveType}}{{dataType}}{{/isPrimitiveType}}{{^isPrimitiveType}}String{{/isPrimitiveType}}]{{^required}}.?{{/required}}{{#hasMore}}, {{/hasMore}}{{/formParams}}) { ({{#formParams}}{{paramName}}{{#hasMore}}, {{/hasMore}}{{/formParams}}) =>{{/formParams.isEmpty}}
2121
{{classVarName}}Service.{{operationId}}({{#allParams}}{{paramName}} = {{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}})
2222
{{^formParams.isEmpty}} }{{/formParams.isEmpty}}
2323
{{#headerParams}} }{{/headerParams}}

src/test/java/io/swagger/codegen/v3/generators/scala/AkkaHttpServerCodegenTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,20 +113,32 @@ public void testAddAllParamsWithSupportedTypes() {
113113
CodegenParameter petInfos = CodegenModelFactory.newInstance(CodegenModelType.PARAMETER);
114114
petInfos.paramName = "petInfos";
115115
petInfos.dataType = "Object";
116+
CodegenParameter petForm1 = CodegenModelFactory.newInstance(CodegenModelType.PARAMETER);
117+
petForm1.paramName = "petForm1";
118+
petForm1.dataType = "String";
119+
CodegenParameter petForm2 = CodegenModelFactory.newInstance(CodegenModelType.PARAMETER);
120+
petForm2.paramName = "petForm2";
121+
petForm2.dataType = "Object";
116122
codegenOperation.pathParams.add(petId);
117123
codegenOperation.pathParams.add(petName);
118124
codegenOperation.pathParams.add(unknownMatcher);
119125
codegenOperation.queryParams.add(petAge);
120126
codegenOperation.queryParams.add(petInfos);
127+
codegenOperation.formParams.add(petForm1);
128+
codegenOperation.formParams.add(petForm2);
121129
codegenOperation.allParams.add(petId.copy());
122130
codegenOperation.allParams.add(petName.copy());
123131
codegenOperation.allParams.add(unknownMatcher.copy());
124132
codegenOperation.allParams.add(petAge.copy());
125133
codegenOperation.allParams.add(petInfos.copy());
134+
codegenOperation.allParams.add(petForm1.copy());
135+
codegenOperation.allParams.add(petForm2.copy());
126136
CodegenParameter unknownMatcherWithString = unknownMatcher.copy();
127137
unknownMatcherWithString.dataType = AkkaHttpServerCodegen.FALLBACK_DATA_TYPE;
128138
CodegenParameter petInfosWithString = petInfos.copy();
129139
petInfosWithString.dataType = AkkaHttpServerCodegen.FALLBACK_DATA_TYPE;
140+
CodegenParameter petForm2WithString = petForm2.copy();
141+
petForm2WithString.dataType = AkkaHttpServerCodegen.FALLBACK_DATA_TYPE;
130142

131143
AkkaHttpServerCodegen.addAllParamsWithSupportedTypes(codegenOperation);
132144

@@ -136,6 +148,8 @@ public void testAddAllParamsWithSupportedTypes() {
136148
add(unknownMatcherWithString);
137149
add(petAge);
138150
add(petInfosWithString);
151+
add(petForm1);
152+
add(petForm2WithString);
139153
}};
140154
Assert.assertEquals((LinkedList<CodegenParameter>) codegenOperation.getVendorExtensions().get(AkkaHttpServerCodegen.PARAMS_WITH_SUPPORTED_TYPE), expectedMatchedPathParams);
141155
}
Lines changed: 245 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,245 @@
1+
{
2+
"openapi": "3.0.0",
3+
"servers": [],
4+
"info": {
5+
"title": "Request Bodies",
6+
"version": "1.0"
7+
},
8+
"paths": {
9+
"/pet/{petId}": {
10+
"post": {
11+
"tags": [
12+
"pet"
13+
],
14+
"summary": "Updates a pet in the store with form data",
15+
"operationId": "updatePetWithForm",
16+
"parameters": [
17+
{
18+
"name": "petId",
19+
"in": "path",
20+
"description": "ID of pet that needs to be updated",
21+
"required": true,
22+
"schema": {
23+
"type": "integer",
24+
"format": "int64"
25+
}
26+
}
27+
],
28+
"responses": {
29+
"405": {
30+
"description": "Invalid input"
31+
}
32+
},
33+
"requestBody": {
34+
"content": {
35+
"application/x-www-form-urlencoded": {
36+
"schema": {
37+
"type": "object",
38+
"properties": {
39+
"name": {
40+
"description": "Updated name of the pet",
41+
"type": "string"
42+
},
43+
"status": {
44+
"description": "Updated status of the pet",
45+
"type": "string"
46+
}
47+
}
48+
}
49+
}
50+
}
51+
}
52+
}
53+
},
54+
"/random": {
55+
"post": {
56+
"tags": [
57+
"pet"
58+
],
59+
"operationId": "goRandom",
60+
"responses": {
61+
"200": {
62+
"description": "success"
63+
}
64+
},
65+
"requestBody": {
66+
"content": {
67+
"application/x-www-form-urlencoded": {
68+
"schema": {
69+
"$ref": "#/components/schemas/RandomObject"
70+
}
71+
}
72+
}
73+
}
74+
}
75+
}
76+
},
77+
"components": {
78+
"schemas": {
79+
"Category": {
80+
"type": "object",
81+
"properties": {
82+
"id": {
83+
"type": "integer",
84+
"format": "int64"
85+
},
86+
"name": {
87+
"type": "string"
88+
}
89+
},
90+
"xml": {
91+
"name": "Category"
92+
}
93+
},
94+
"User": {
95+
"type": "object",
96+
"properties": {
97+
"id": {
98+
"type": "integer",
99+
"format": "int64"
100+
},
101+
"username": {
102+
"type": "string"
103+
},
104+
"firstName": {
105+
"type": "string"
106+
},
107+
"lastName": {
108+
"type": "string"
109+
},
110+
"email": {
111+
"type": "string"
112+
},
113+
"password": {
114+
"type": "string"
115+
},
116+
"phone": {
117+
"type": "string"
118+
},
119+
"userStatus": {
120+
"type": "integer",
121+
"format": "int32",
122+
"description": "User Status"
123+
}
124+
},
125+
"xml": {
126+
"name": "User"
127+
}
128+
},
129+
"Tag": {
130+
"type": "object",
131+
"properties": {
132+
"id": {
133+
"type": "integer",
134+
"format": "int64"
135+
},
136+
"name": {
137+
"type": "string"
138+
}
139+
},
140+
"xml": {
141+
"name": "Tag"
142+
}
143+
},
144+
"Pet": {
145+
"type": "object",
146+
"required": [
147+
"name",
148+
"photoUrls"
149+
],
150+
"properties": {
151+
"id": {
152+
"type": "integer",
153+
"format": "int64"
154+
},
155+
"category": {
156+
"$ref": "#/components/schemas/Category"
157+
},
158+
"name": {
159+
"type": "string",
160+
"example": "doggie"
161+
},
162+
"photoUrls": {
163+
"type": "array",
164+
"xml": {
165+
"name": "photoUrl",
166+
"wrapped": true
167+
},
168+
"items": {
169+
"type": "string"
170+
}
171+
},
172+
"tags": {
173+
"type": "array",
174+
"xml": {
175+
"name": "tag",
176+
"wrapped": true
177+
},
178+
"items": {
179+
"$ref": "#/components/schemas/Tag"
180+
}
181+
},
182+
"status": {
183+
"type": "string",
184+
"description": "pet status in the store",
185+
"enum": [
186+
"available",
187+
"pending",
188+
"sold"
189+
]
190+
}
191+
},
192+
"xml": {
193+
"name": "Pet"
194+
}
195+
},
196+
"Cat": {
197+
"allOf": [
198+
{
199+
"$ref": "#/components/schemas/Pet"
200+
},
201+
{
202+
"type": "object",
203+
"properties": {
204+
"name": {
205+
"type": "string"
206+
}
207+
}
208+
}
209+
]
210+
},
211+
"Dog": {
212+
"allOf": [
213+
{
214+
"$ref": "#/components/schemas/Pet"
215+
},
216+
{
217+
"type": "object",
218+
"properties": {
219+
"bark": {
220+
"type": "string"
221+
}
222+
}
223+
}
224+
]
225+
},
226+
"RandomObject": {
227+
"type": "object",
228+
"properties": {
229+
"randomField": {
230+
"type": "string"
231+
},
232+
"cat": {
233+
"$ref": "#/components/schemas/Pet"
234+
},
235+
"dog": {
236+
"$ref": "#/components/schemas/Dog"
237+
},
238+
"user": {
239+
"$ref": "#/components/schemas/User"
240+
}
241+
}
242+
}
243+
}
244+
}
245+
}

0 commit comments

Comments
 (0)