Skip to content

Commit 90001d4

Browse files
authored
Conditional import of AtomicInteger added to delegate template. fix #21566 (#21597)
1 parent b7fb3b2 commit 90001d4

File tree

3 files changed

+80
-0
lines changed

3 files changed

+80
-0
lines changed

modules/openapi-generator/src/main/resources/JavaSpring/apiDelegate.mustache

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ import java.util.Optional;
2727
{{#async}}
2828
import java.util.concurrent.CompletableFuture;
2929
{{/async}}
30+
{{#returnSuccessCode}}
31+
import java.util.concurrent.atomic.AtomicInteger;
32+
{{/returnSuccessCode}}
3033
import {{javaxPackage}}.annotation.Generated;
3134

3235
{{#operations}}

modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5575,4 +5575,36 @@ public void testGenericReturnTypeWhenNotUsingResponseEntity_issue1096() throws I
55755575
.toFileAssert()
55765576
.assertMethod("findPetsByStatus").hasReturnType("List<Pet>");
55775577
}
5578+
5579+
@Test
5580+
public void testHasRestControllerDoesNotHaveController_issue21156() throws IOException {
5581+
File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
5582+
output.deleteOnExit();
5583+
5584+
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_1/issue_21156.yaml");
5585+
final SpringCodegen codegen = new SpringCodegen();
5586+
codegen.setOpenAPI(openAPI);
5587+
codegen.setOutputDir(output.getAbsolutePath());
5588+
codegen.setLibrary("spring-boot");
5589+
5590+
codegen.additionalProperties().put(INTERFACE_ONLY, "false");
5591+
codegen.additionalProperties().put(DELEGATE_PATTERN, "true");
5592+
codegen.additionalProperties().put(SPRING_CONTROLLER, "true");
5593+
codegen.additionalProperties().put(RETURN_SUCCESS_CODE, "true");
5594+
5595+
ClientOptInput input = new ClientOptInput();
5596+
input.openAPI(openAPI);
5597+
input.config(codegen);
5598+
5599+
DefaultGenerator generator = new DefaultGenerator();
5600+
generator.setGenerateMetadata(false); // skip metadata generation
5601+
generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true");
5602+
5603+
Map<String, File> files = generator.opts(input).generate().stream()
5604+
.collect(Collectors.toMap(File::getName, Function.identity()));
5605+
5606+
JavaFileAssert javaFileAssert = JavaFileAssert.assertThat(files.get("TestApiDelegate.java"));
5607+
javaFileAssert
5608+
.hasImports("java.util.concurrent.atomic.AtomicInteger");
5609+
}
55785610
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
openapi: 3.1.1
2+
info:
3+
title: Test Bug
4+
version: 1.0.0
5+
servers:
6+
- url: https://where.am.i
7+
paths:
8+
/test/bug:
9+
post:
10+
operationId: testRequest
11+
requestBody:
12+
content:
13+
application/x-www-form-urlencoded:
14+
schema:
15+
$ref: '#/components/schemas/TestRequest'
16+
responses:
17+
'200':
18+
description: Test request successful
19+
content:
20+
application/json:
21+
schema:
22+
$ref: '#/components/schemas/TestResponse'
23+
'500':
24+
$ref: '#/components/responses/InternalServerError'
25+
components:
26+
schemas:
27+
TestRequest:
28+
properties:
29+
test:
30+
type: string
31+
TestResponse:
32+
properties:
33+
test:
34+
type: string
35+
ErrorResponse:
36+
properties:
37+
error:
38+
type: string
39+
responses:
40+
InternalServerError:
41+
content:
42+
application/json:
43+
schema:
44+
$ref: '#/components/schemas/ErrorResponse'
45+
description: Internal server error

0 commit comments

Comments
 (0)