Skip to content

Commit d8e6554

Browse files
authored
Merge pull request #714 from swagger-api/parameters-order
fix and test for parameter order issue in spring generator
2 parents c6b8eac + 2346915 commit d8e6554

File tree

6 files changed

+381
-18
lines changed

6 files changed

+381
-18
lines changed

src/main/java/io/swagger/codegen/v3/generators/DefaultCodegenConfig.java

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2165,8 +2165,6 @@ public CodegenOperation fromOperation(String path, String httpMethod, Operation
21652165
requiredParams.add(formParameter.copy());
21662166
}
21672167
allParams.add(formParameter);
2168-
2169-
codegenContent.getParameters().add(formParameter.copy());
21702168
}
21712169
codegenContents.add(codegenContent);
21722170
}
@@ -2188,7 +2186,6 @@ public CodegenOperation fromOperation(String path, String httpMethod, Operation
21882186
}
21892187
}
21902188
foundSchemas.add(schema);
2191-
codegenContent.getParameters().add(bodyParam.copy());
21922189
codegenContents.add(codegenContent);
21932190
}
21942191
}
@@ -4282,7 +4279,7 @@ protected void configuresParameterForMediaType(CodegenOperation codegenOperation
42824279
codegenOperation.getContents().add(content);
42834280
return;
42844281
}
4285-
this.addCodegenContentParemeters(codegenOperation, codegenContents);
4282+
this.addCodegenContentParameters(codegenOperation, codegenContents);
42864283
for (CodegenContent content : codegenContents) {
42874284
if (ensureUniqueParams) {
42884285
ensureUniqueParameters(content.getParameters());
@@ -4304,7 +4301,7 @@ protected void configuresParameterForMediaType(CodegenOperation codegenOperation
43044301
codegenOperation.getContents().addAll(codegenContents);
43054302
}
43064303

4307-
protected void addParemeters(CodegenContent codegenContent, List<CodegenParameter> codegenParameters) {
4304+
protected void addParameters(CodegenContent codegenContent, List<CodegenParameter> codegenParameters) {
43084305
if (codegenParameters == null || codegenParameters.isEmpty()) {
43094306
return;
43104307
}
@@ -4313,12 +4310,13 @@ protected void addParemeters(CodegenContent codegenContent, List<CodegenParamete
43134310
}
43144311
}
43154312

4316-
protected void addCodegenContentParemeters(CodegenOperation codegenOperation, List<CodegenContent> codegenContents) {
4313+
protected void addCodegenContentParameters(CodegenOperation codegenOperation, List<CodegenContent> codegenContents) {
43174314
for (CodegenContent content : codegenContents) {
4318-
addParemeters(content, codegenOperation.headerParams);
4319-
addParemeters(content, codegenOperation.queryParams);
4320-
addParemeters(content, codegenOperation.pathParams);
4321-
addParemeters(content, codegenOperation.cookieParams);
4315+
addParameters(content, codegenOperation.bodyParams);
4316+
addParameters(content, codegenOperation.headerParams);
4317+
addParameters(content, codegenOperation.queryParams);
4318+
addParameters(content, codegenOperation.pathParams);
4319+
addParameters(content, codegenOperation.cookieParams);
43224320
}
43234321
}
43244322

src/main/java/io/swagger/codegen/v3/generators/dotnet/AbstractCSharpCodegen.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1073,11 +1073,12 @@ public void addHandlebarHelpers(Handlebars handlebars) {
10731073
}
10741074

10751075
@Override
1076-
protected void addCodegenContentParemeters(CodegenOperation codegenOperation, List<CodegenContent> codegenContents) {
1076+
protected void addCodegenContentParameters(CodegenOperation codegenOperation, List<CodegenContent> codegenContents) {
10771077
for (CodegenContent content : codegenContents) {
1078-
addParemeters(content, codegenOperation.headerParams);
1079-
addParemeters(content, codegenOperation.queryParams);
1080-
addParemeters(content, codegenOperation.pathParams);
1078+
addParameters(content, codegenOperation.bodyParams);
1079+
addParameters(content, codegenOperation.headerParams);
1080+
addParameters(content, codegenOperation.queryParams);
1081+
addParameters(content, codegenOperation.pathParams);
10811082
}
10821083
}
10831084
/*

src/main/java/io/swagger/codegen/v3/generators/java/SpringCodegen.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,17 @@ public SpringCodegen() {
133133

134134
}
135135

136+
@Override
137+
protected void addCodegenContentParameters(CodegenOperation codegenOperation, List<CodegenContent> codegenContents) {
138+
for (CodegenContent content : codegenContents) {
139+
addParameters(content, codegenOperation.headerParams);
140+
addParameters(content, codegenOperation.queryParams);
141+
addParameters(content, codegenOperation.pathParams);
142+
addParameters(content, codegenOperation.cookieParams);
143+
addParameters(content, codegenOperation.bodyParams);
144+
}
145+
}
146+
136147
@Override
137148
public CodegenType getTag() {
138149
return CodegenType.SERVER;

src/main/java/io/swagger/codegen/v3/generators/nodejs/NodeJSServerCodegen.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -445,10 +445,11 @@ protected void configuresParameterForMediaType(CodegenOperation codegenOperation
445445
return;
446446
}
447447
for (CodegenContent content : codegenContents) {
448-
addParemeters(content, codegenOperation.queryParams);
449-
addParemeters(content, codegenOperation.pathParams);
450-
addParemeters(content, codegenOperation.headerParams);
451-
addParemeters(content, codegenOperation.cookieParams);
448+
addParameters(content, codegenOperation.bodyParams);
449+
addParameters(content, codegenOperation.queryParams);
450+
addParameters(content, codegenOperation.pathParams);
451+
addParameters(content, codegenOperation.headerParams);
452+
addParameters(content, codegenOperation.cookieParams);
452453
}
453454
for (CodegenContent content : codegenContents) {
454455
addHasMore(content.getParameters());
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package io.swagger.codegen.v3.generators.java;
2+
3+
import io.swagger.codegen.v3.ClientOptInput;
4+
import io.swagger.codegen.v3.DefaultGenerator;
5+
import io.swagger.codegen.v3.config.CodegenConfigurator;
6+
import io.swagger.codegen.v3.generators.AbstractCodegenTest;
7+
import org.apache.commons.io.FileUtils;
8+
import org.junit.rules.TemporaryFolder;
9+
import org.testng.Assert;
10+
import org.testng.annotations.Test;
11+
12+
import java.io.File;
13+
14+
public class SpringGeneratorCodegenTest extends AbstractCodegenTest {
15+
16+
private TemporaryFolder folder = new TemporaryFolder();
17+
18+
@Test(description = "verify that parameters are listed in following order: header, query, path, cookie, body")
19+
public void testParameterOrders() throws Exception {
20+
this.folder.create();
21+
final File output = this.folder.getRoot();
22+
23+
final CodegenConfigurator configurator = new CodegenConfigurator()
24+
.setLang("spring")
25+
.setInputSpecURL("src/test/resources/3_0_0/parameterOrder.yaml")
26+
.setOutputDir(output.getAbsolutePath());
27+
28+
final ClientOptInput clientOptInput = configurator.toClientOptInput();
29+
new DefaultGenerator().opts(clientOptInput).generate();
30+
31+
final File petControllerFile = new File(output, "/src/main/java/io/swagger/api/AdminApi.java");
32+
final String content = FileUtils.readFileToString(petControllerFile);
33+
34+
35+
Assert.assertTrue(content.contains("ResponseEntity<LocalizedText> updateTest(@ApiParam(value = \"description\",required=true) @PathVariable(\"id\") Long id\n" +
36+
",@ApiParam(value = \"Localized Text object containing updated data.\" ,required=true ) @Valid @RequestBody LocalizedText body\n" +
37+
");"));
38+
39+
this.folder.delete();
40+
}
41+
42+
43+
}

0 commit comments

Comments
 (0)