Skip to content

Commit 17420ec

Browse files
committed
Support nullable org.springframework.web.multipart.MultipartFile in Kotlin Spring generator
1 parent d7d21fd commit 17420ec

File tree

35 files changed

+112
-35
lines changed

35 files changed

+112
-35
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{{^isFile}}{{{dataType}}}{{^required}}{{^defaultValue}}?{{/defaultValue}}{{/required}}{{/isFile}}{{#isFile}}{{#isArray}}Array<{{/isArray}}org.springframework.web.multipart.MultipartFile{{#isArray}}>{{/isArray}}{{^required}}?{{/required}}{{/isFile}}
1+
{{^isFile}}{{{dataType}}}{{^required}}{{^defaultValue}}?{{/defaultValue}}{{/required}}{{/isFile}}{{#isFile}}{{#isArray}}Array<{{/isArray}}org.springframework.web.multipart.MultipartFile{{#isArray}}>{{/isArray}}{{#isNullable}}?{{/isNullable}}{{/isFile}}

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -399,9 +399,13 @@ public void testNullableMultipartFile() throws IOException {
399399
generator.opts(input).generate();
400400

401401
assertFileContains(Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/NullableMultipartfileApiController.kt"),
402-
"file: org.springframework.web.multipart.MultipartFile?");
402+
"file: org.springframework.web.multipart.MultipartFile?)");
403403
assertFileContains(Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/NullableMultipartfileArrayApiController.kt"),
404-
"files: Array<org.springframework.web.multipart.MultipartFile>?");
404+
"files: Array<org.springframework.web.multipart.MultipartFile>?)");
405+
assertFileContains(Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/NonNullableMultipartfileApiController.kt"),
406+
"file: org.springframework.web.multipart.MultipartFile)");
407+
assertFileContains(Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/NonNullableMultipartfileArrayApiController.kt"),
408+
"files: Array<org.springframework.web.multipart.MultipartFile>)");
405409
}
406410

407411
@Test

modules/openapi-generator/src/test/resources/3_0/kotlin/feat-multipartfile_nullable.yaml

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ paths:
3131
type: string
3232
description: File to upload
3333
format: binary
34+
nullable: true
3435
jsonPayload:
3536
type: object
3637
description: simple json payload
@@ -67,6 +68,78 @@ paths:
6768
type: string
6869
description: File to upload
6970
format: binary
71+
nullable: true
72+
jsonPayload:
73+
type: object
74+
description: simple json payload
75+
properties:
76+
name:
77+
type: string
78+
required:
79+
- jsonPayload
80+
responses:
81+
'200':
82+
description: successful operation
83+
content:
84+
application/json:
85+
schema:
86+
type: string
87+
'400':
88+
description: Invalid status value
89+
/non-nullable-multipartfile:
90+
post:
91+
tags:
92+
- multipartfile
93+
summary: simple non nullable multipartfile
94+
operationId: testNonNullableMultipartfile
95+
requestBody:
96+
content:
97+
multipart/form-data:
98+
schema:
99+
type: object
100+
properties:
101+
file:
102+
type: string
103+
description: File to upload
104+
format: binary
105+
nullable: false
106+
jsonPayload:
107+
type: object
108+
description: simple json payload
109+
properties:
110+
name:
111+
type: string
112+
required:
113+
- jsonPayload
114+
responses:
115+
'200':
116+
description: successful operation
117+
content:
118+
application/json:
119+
schema:
120+
type: string
121+
'400':
122+
description: Invalid status value
123+
124+
/non-nullable-multipartfile-array:
125+
post:
126+
tags:
127+
- multipartfile
128+
summary: simple non nullable multipartfile
129+
operationId: testNonNullableMultipartfile
130+
requestBody:
131+
content:
132+
multipart/form-data:
133+
schema:
134+
type: object
135+
properties:
136+
files:
137+
type: array
138+
items:
139+
type: string
140+
description: File to upload
141+
format: binary
142+
nullable: false
70143
jsonPayload:
71144
type: object
72145
description: simple json payload

samples/server/petstore/kotlin-spring-cloud/src/main/kotlin/org/openapitools/api/PetApi.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ interface PetApi {
110110
produces = ["application/json"],
111111
consumes = ["multipart/form-data"]
112112
)
113-
fun uploadFile( @PathVariable("petId") petId: kotlin.Long, @Valid @RequestParam(value = "additionalMetadata", required = false) additionalMetadata: kotlin.String? , @Valid @RequestPart("file", required = false) file: org.springframework.web.multipart.MultipartFile?): ResponseEntity<ModelApiResponse> {
113+
fun uploadFile( @PathVariable("petId") petId: kotlin.Long, @Valid @RequestParam(value = "additionalMetadata", required = false) additionalMetadata: kotlin.String? , @Valid @RequestPart("file", required = false) file: org.springframework.web.multipart.MultipartFile): ResponseEntity<ModelApiResponse> {
114114
return ResponseEntity(HttpStatus.NOT_IMPLEMENTED)
115115
}
116116
}

samples/server/petstore/kotlin-spring-default/src/main/kotlin/org/openapitools/api/PetApiController.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ class PetApiController() {
176176
produces = ["application/json"],
177177
consumes = ["multipart/form-data"]
178178
)
179-
fun uploadFile(@Parameter(description = "ID of pet to update", required = true) @PathVariable("petId") petId: kotlin.Long,@Parameter(description = "Additional data to pass to server") @Valid @RequestParam(value = "additionalMetadata", required = false) additionalMetadata: kotlin.String? ,@Parameter(description = "file to upload") @Valid @RequestPart("file", required = false) file: org.springframework.web.multipart.MultipartFile?): ResponseEntity<ModelApiResponse> {
179+
fun uploadFile(@Parameter(description = "ID of pet to update", required = true) @PathVariable("petId") petId: kotlin.Long,@Parameter(description = "Additional data to pass to server") @Valid @RequestParam(value = "additionalMetadata", required = false) additionalMetadata: kotlin.String? ,@Parameter(description = "file to upload") @Valid @RequestPart("file", required = false) file: org.springframework.web.multipart.MultipartFile): ResponseEntity<ModelApiResponse> {
180180
return ResponseEntity(HttpStatus.NOT_IMPLEMENTED)
181181
}
182182
}

samples/server/petstore/kotlin-springboot-3/src/main/kotlin/org/openapitools/api/PetApiController.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ class PetApiController(@Autowired(required = true) val service: PetApiService) {
106106
produces = ["application/json"],
107107
consumes = ["multipart/form-data"]
108108
)
109-
fun uploadFile( @PathVariable("petId") petId: kotlin.Long, @Valid @RequestParam(value = "additionalMetadata", required = false) additionalMetadata: kotlin.String? , @Valid @RequestPart("file", required = false) file: org.springframework.web.multipart.MultipartFile?): ResponseEntity<ModelApiResponse> {
109+
fun uploadFile( @PathVariable("petId") petId: kotlin.Long, @Valid @RequestParam(value = "additionalMetadata", required = false) additionalMetadata: kotlin.String? , @Valid @RequestPart("file", required = false) file: org.springframework.web.multipart.MultipartFile): ResponseEntity<ModelApiResponse> {
110110
return ResponseEntity(service.uploadFile(petId, additionalMetadata, file), HttpStatus.valueOf(200))
111111
}
112112
}

samples/server/petstore/kotlin-springboot-3/src/main/kotlin/org/openapitools/api/PetApiService.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,5 +99,5 @@ interface PetApiService {
9999
* @return successful operation (status code 200)
100100
* @see PetApi#uploadFile
101101
*/
102-
fun uploadFile(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: org.springframework.web.multipart.MultipartFile?): ModelApiResponse
102+
fun uploadFile(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: org.springframework.web.multipart.MultipartFile): ModelApiResponse
103103
}

samples/server/petstore/kotlin-springboot-3/src/main/kotlin/org/openapitools/api/PetApiServiceImpl.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ class PetApiServiceImpl : PetApiService {
3434
TODO("Implement me")
3535
}
3636

37-
override fun uploadFile(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: org.springframework.web.multipart.MultipartFile?): ModelApiResponse {
37+
override fun uploadFile(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: org.springframework.web.multipart.MultipartFile): ModelApiResponse {
3838
TODO("Implement me")
3939
}
4040
}

samples/server/petstore/kotlin-springboot-delegate-nodefaults/src/main/kotlin/org/openapitools/api/PetApi.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ interface PetApi {
199199
produces = ["application/json"],
200200
consumes = ["multipart/form-data"]
201201
)
202-
fun uploadFile(@Parameter(description = "ID of pet to update", required = true) @PathVariable("petId") petId: kotlin.Long,@Parameter(description = "Additional data to pass to server") @Valid @RequestParam(value = "additionalMetadata", required = false) additionalMetadata: kotlin.String? ,@Parameter(description = "file to upload") @Valid @RequestPart("file", required = false) file: org.springframework.web.multipart.MultipartFile?): ResponseEntity<ModelApiResponse> {
202+
fun uploadFile(@Parameter(description = "ID of pet to update", required = true) @PathVariable("petId") petId: kotlin.Long,@Parameter(description = "Additional data to pass to server") @Valid @RequestParam(value = "additionalMetadata", required = false) additionalMetadata: kotlin.String? ,@Parameter(description = "file to upload") @Valid @RequestPart("file", required = false) file: org.springframework.web.multipart.MultipartFile): ResponseEntity<ModelApiResponse> {
203203
return getDelegate().uploadFile(petId, additionalMetadata, file)
204204
}
205205
}

samples/server/petstore/kotlin-springboot-delegate-nodefaults/src/main/kotlin/org/openapitools/api/PetApiDelegate.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,6 @@ interface PetApiDelegate {
6868
*/
6969
fun uploadFile(petId: kotlin.Long,
7070
additionalMetadata: kotlin.String?,
71-
file: org.springframework.web.multipart.MultipartFile?): ResponseEntity<ModelApiResponse>
71+
file: org.springframework.web.multipart.MultipartFile): ResponseEntity<ModelApiResponse>
7272

7373
}

0 commit comments

Comments
 (0)