forked from loafle/openapi-generator-original
Fix inconsistent parameter names when ensuring uniqueness. (#640)
This commit is contained in:
parent
60c81eae0a
commit
44d419c1a1
@ -2390,6 +2390,13 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
|
|
||||||
CodegenParameter p = fromParameter(param, imports);
|
CodegenParameter p = fromParameter(param, imports);
|
||||||
|
|
||||||
|
// ensure unique params
|
||||||
|
if (ensureUniqueParams) {
|
||||||
|
if (!isParameterNameUnique(p, allParams)) {
|
||||||
|
p.paramName = generateNextName(p.paramName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
allParams.add(p);
|
allParams.add(p);
|
||||||
|
|
||||||
if (param instanceof QueryParameter || "query".equalsIgnoreCase(param.getIn())) {
|
if (param instanceof QueryParameter || "query".equalsIgnoreCase(param.getIn())) {
|
||||||
@ -2418,17 +2425,6 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ensure unique parameter name
|
|
||||||
for (CodegenParameter cp : allParams) {
|
|
||||||
if (ensureUniqueParams) {
|
|
||||||
if (isParameterNameUnique(cp, allParams)) {
|
|
||||||
continue;
|
|
||||||
} else {
|
|
||||||
cp.paramName = generateNextName(cp.paramName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// create optional, required parameters
|
// create optional, required parameters
|
||||||
for (CodegenParameter cp : allParams) {
|
for (CodegenParameter cp : allParams) {
|
||||||
if (cp.required) { //required parameters
|
if (cp.required) { //required parameters
|
||||||
|
@ -26,6 +26,8 @@ import io.swagger.v3.oas.models.media.Content;
|
|||||||
import io.swagger.v3.oas.models.media.MediaType;
|
import io.swagger.v3.oas.models.media.MediaType;
|
||||||
import io.swagger.v3.oas.models.media.ObjectSchema;
|
import io.swagger.v3.oas.models.media.ObjectSchema;
|
||||||
import io.swagger.v3.oas.models.media.Schema;
|
import io.swagger.v3.oas.models.media.Schema;
|
||||||
|
import io.swagger.v3.oas.models.media.StringSchema;
|
||||||
|
import io.swagger.v3.oas.models.parameters.QueryParameter;
|
||||||
import io.swagger.v3.oas.models.parameters.RequestBody;
|
import io.swagger.v3.oas.models.parameters.RequestBody;
|
||||||
import io.swagger.v3.oas.models.responses.ApiResponse;
|
import io.swagger.v3.oas.models.responses.ApiResponse;
|
||||||
import io.swagger.v3.oas.models.responses.ApiResponses;
|
import io.swagger.v3.oas.models.responses.ApiResponses;
|
||||||
@ -42,6 +44,7 @@ import java.util.HashSet;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class DefaultCodegenTest {
|
public class DefaultCodegenTest {
|
||||||
|
|
||||||
@ -235,6 +238,26 @@ public class DefaultCodegenTest {
|
|||||||
Assert.assertEquals(co.produces.get(0).get("mediaType"), "application/json");
|
Assert.assertEquals(co.produces.get(0).get("mediaType"), "application/json");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testConsistentParameterNameAfterUniquenessRename() throws Exception {
|
||||||
|
Operation operation = new Operation()
|
||||||
|
.operationId("opId")
|
||||||
|
.addParametersItem(new QueryParameter().name("myparam").schema(new StringSchema()))
|
||||||
|
.addParametersItem(new QueryParameter().name("myparam").schema(new StringSchema()))
|
||||||
|
.responses(new ApiResponses().addApiResponse("200", new ApiResponse().description("OK")));
|
||||||
|
|
||||||
|
DefaultCodegen codegen = new DefaultCodegen();
|
||||||
|
CodegenOperation co = codegen.fromOperation("p/", "get", operation, Collections.emptyMap());
|
||||||
|
Assert.assertEquals(co.path, "p/");
|
||||||
|
Assert.assertEquals(co.allParams.size(), 2);
|
||||||
|
List<String> allParamsNames = co.allParams.stream().map(p -> p.paramName).collect(Collectors.toList());
|
||||||
|
Assert.assertTrue(allParamsNames.contains("myparam"));
|
||||||
|
Assert.assertTrue(allParamsNames.contains("myparam2"));
|
||||||
|
List<String> queryParamsNames = co.queryParams.stream().map(p -> p.paramName).collect(Collectors.toList());
|
||||||
|
Assert.assertTrue(queryParamsNames.contains("myparam"));
|
||||||
|
Assert.assertTrue(queryParamsNames.contains("myparam2"));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetSchemaTypeWithComposedSchemaWithOneOf() {
|
public void testGetSchemaTypeWithComposedSchemaWithOneOf() {
|
||||||
final OpenAPI openAPI = new OpenAPIParser().readLocation("src/test/resources/3_0/composed-oneof.yaml", null, new ParseOptions()).getOpenAPI();
|
final OpenAPI openAPI = new OpenAPIParser().readLocation("src/test/resources/3_0/composed-oneof.yaml", null, new ParseOptions()).getOpenAPI();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user