Skip to content

Commit 85f0909

Browse files
authored
Fix parameter in PathItem (#639)
1 parent 37be47f commit 85f0909

2 files changed

Lines changed: 52 additions & 2 deletions

File tree

modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -896,8 +896,8 @@ private void processOperation(String resourcePath, String httpMethod, Operation
896896
if (path.getParameters() != null) {
897897
for (Parameter parameter : path.getParameters()) {
898898
//skip propagation if a parameter with the same name is already defined at the operation level
899-
if (!operationParameters.contains(generateParameterId(parameter)) && operation.getParameters() != null) {
900-
operation.getParameters().add(parameter);
899+
if (!operationParameters.contains(generateParameterId(parameter))) {
900+
operation.addParametersItem(parameter);
901901
}
902902
}
903903
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package org.openapitools.codegen;
2+
3+
import io.swagger.v3.oas.models.OpenAPI;
4+
import io.swagger.v3.oas.models.Operation;
5+
import io.swagger.v3.oas.models.PathItem;
6+
import io.swagger.v3.oas.models.Paths;
7+
import io.swagger.v3.oas.models.media.IntegerSchema;
8+
import io.swagger.v3.oas.models.media.StringSchema;
9+
import io.swagger.v3.oas.models.parameters.QueryParameter;
10+
import io.swagger.v3.oas.models.responses.ApiResponse;
11+
import io.swagger.v3.oas.models.responses.ApiResponses;
12+
13+
import org.testng.Assert;
14+
import org.testng.annotations.Test;
15+
16+
import java.util.List;
17+
import java.util.Map;
18+
19+
public class DefaultGeneratorTest {
20+
21+
@Test
22+
public void testProcessPaths() throws Exception {
23+
OpenAPI openAPI = TestUtils.createOpenAPI();
24+
openAPI.setPaths(new Paths());
25+
openAPI.getPaths().addPathItem("path1/", new PathItem().get(new Operation().operationId("op1").responses(new ApiResponses().addApiResponse("201", new ApiResponse().description("OK")))));
26+
openAPI.getPaths().addPathItem("path2/", new PathItem().get(new Operation().operationId("op2").addParametersItem(new QueryParameter().name("p1").schema(new StringSchema())).responses(new ApiResponses().addApiResponse("201", new ApiResponse().description("OK")))));
27+
openAPI.getPaths().addPathItem("path3/", new PathItem().addParametersItem(new QueryParameter().name("p1").schema(new StringSchema())).get(new Operation().operationId("op3").addParametersItem(new QueryParameter().name("p2").schema(new IntegerSchema())).responses(new ApiResponses().addApiResponse("201", new ApiResponse().description("OK")))));
28+
openAPI.getPaths().addPathItem("path4/", new PathItem().addParametersItem(new QueryParameter().name("p1").schema(new StringSchema())).get(new Operation().operationId("op4").responses(new ApiResponses().addApiResponse("201", new ApiResponse().description("OK")))));
29+
30+
ClientOptInput opts = new ClientOptInput();
31+
opts.setOpenAPI(openAPI);
32+
opts.setConfig(new DefaultCodegen());
33+
opts.setOpts(new ClientOpts());
34+
35+
DefaultGenerator generator = new DefaultGenerator();
36+
generator.opts(opts);
37+
Map<String, List<CodegenOperation>> result = generator.processPaths(openAPI.getPaths());
38+
Assert.assertEquals(result.size(), 1);
39+
List<CodegenOperation> defaultList = result.get("Default");
40+
Assert.assertEquals(defaultList.size(), 4);
41+
Assert.assertEquals(defaultList.get(0).path, "path1/");
42+
Assert.assertEquals(defaultList.get(0).allParams.size(), 0);
43+
Assert.assertEquals(defaultList.get(1).path, "path2/");
44+
Assert.assertEquals(defaultList.get(1).allParams.size(), 1);
45+
Assert.assertEquals(defaultList.get(2).path, "path3/");
46+
Assert.assertEquals(defaultList.get(2).allParams.size(), 2);
47+
Assert.assertEquals(defaultList.get(3).path, "path4/");
48+
Assert.assertEquals(defaultList.get(3).allParams.size(), 1);
49+
}
50+
}

0 commit comments

Comments
 (0)