[Java] Fix generation of POJOs with sets of enums (fixes #19957) (#19960)

This commit is contained in:
Andreas Haessler 2024-10-28 03:19:08 +01:00 committed by GitHub
parent 62c0258e04
commit 836d426d21
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 45 additions and 1 deletions

View File

@ -395,7 +395,7 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens
{{#uniqueItems}} {{#uniqueItems}}
if ({{getter}}() != null) { if ({{getter}}() != null) {
int i = 0; int i = 0;
for ({{{items.dataType}}} _item : {{getter}}()) { for ({{{items.datatypeWithEnum}}} _item : {{getter}}()) {
try { try {
joiner.add(String.format("%s{{baseName}}%s%s=%s", prefix, suffix, joiner.add(String.format("%s{{baseName}}%s%s=%s", prefix, suffix,
"".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, i, containerSuffix), "".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, i, containerSuffix),

View File

@ -90,4 +90,28 @@ public class ApacheHttpClientCodegenTest {
"localVarQueryParams.addAll(apiClient.parameterToPairs(\"multi\", \"values\", queryObject.getValues()))" "localVarQueryParams.addAll(apiClient.parameterToPairs(\"multi\", \"values\", queryObject.getValues()))"
); );
} }
@Test
void testApacheHttpClientQueryParamHandlingUniqueItemsStringEnum() throws IOException {
// Arrange
var output = Files.createTempDirectory("test").toFile();
output.deleteOnExit();
var configurator = new CodegenConfigurator()
.setGeneratorName("java")
.setLibrary(JavaClientCodegen.APACHE)
.setInputSpec("src/test/resources/3_0/unique-items-string-enum.yaml")
.setOutputDir(output.getAbsolutePath().replace("\\", "/"));
final ClientOptInput clientOptInput = configurator.toClientOptInput();
DefaultGenerator generator = new DefaultGenerator();
// Act
var files = generator.opts(clientOptInput).generate();
// Assert
TestUtils.assertFileContains(Paths.get(output + "/src/main/java/org/openapitools/client/model/GetUsersRequestV1.java"),
"for (RolesEnum _item : getRoles()) {"
);
}
} }

View File

@ -0,0 +1,20 @@
openapi: 3.0.1
info:
title: Sample API to test generation of schemas with uniqueItems arrays of enums
description: API description in Markdown.
version: 1.0.0
servers: []
paths: {}
components:
schemas:
GetUsersRequestV1:
type: object
properties:
roles:
uniqueItems: true
type: array
items:
type: string
enum:
- ROLE1
- ROLE2