Skip to content

Commit 896471f

Browse files
committed
Object schema generated for Unit Kotlin type. Fixes #2798
1 parent 3f755ac commit 896471f

File tree

3 files changed

+51
-0
lines changed

3 files changed

+51
-0
lines changed

springdoc-openapi-starter-common/src/main/java/org/springdoc/core/configuration/SpringDocKotlinConfiguration.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import io.swagger.v3.oas.annotations.Parameter
3030
import org.springdoc.core.customizers.KotlinDeprecatedPropertyCustomizer
3131
import org.springdoc.core.customizers.ParameterCustomizer
3232
import org.springdoc.core.providers.ObjectMapperProvider
33+
import org.springdoc.core.service.AbstractRequestService.addRequestWrapperToIgnore
3334
import org.springdoc.core.utils.Constants
3435
import org.springdoc.core.utils.SpringDocUtils
3536
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean
@@ -69,6 +70,7 @@ class SpringDocKotlinConfiguration() {
6970
*/
7071
init {
7172
SpringDocUtils.getConfig()
73+
.addResponseTypeToIgnore(Unit::class.java)
7274
.addRequestWrapperToIgnore(Continuation::class.java)
7375
.addDeprecatedType(Deprecated::class.java)
7476
}

springdoc-openapi-tests/springdoc-openapi-kotlin-webflux-tests/src/test/kotlin/test/org/springdoc/api/app2/SystemStatusController.kt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,15 @@
1818

1919
package test.org.springdoc.api.app2
2020

21+
import jakarta.validation.Valid
2122
import kotlinx.coroutines.reactor.mono
23+
import org.springframework.http.HttpStatus
2224
import org.springframework.web.bind.annotation.GetMapping
25+
import org.springframework.web.bind.annotation.PathVariable
26+
import org.springframework.web.bind.annotation.PostMapping
27+
import org.springframework.web.bind.annotation.RequestBody
2328
import org.springframework.web.bind.annotation.RequestMapping
29+
import org.springframework.web.bind.annotation.ResponseStatus
2430
import org.springframework.web.bind.annotation.RestController
2531

2632
enum class SystemStatus(val status: String) {
@@ -41,4 +47,13 @@ class SystemStatusController {
4147
fun foo() = mono {
4248
SystemStatusResponse(SystemStatus.OK)
4349
}
50+
51+
@PostMapping("{token}/activate")
52+
@ResponseStatus(HttpStatus.NO_CONTENT)
53+
suspend fun activateUser(
54+
@PathVariable token: String,
55+
@RequestBody @Valid request: String
56+
) {
57+
// do something
58+
}
4459
}

springdoc-openapi-tests/springdoc-openapi-kotlin-webflux-tests/src/test/resources/results/app2.json

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,40 @@
1111
}
1212
],
1313
"paths": {
14+
"/status/{token}/activate": {
15+
"post": {
16+
"tags": [
17+
"system-status-controller"
18+
],
19+
"operationId": "activateUser",
20+
"parameters": [
21+
{
22+
"name": "token",
23+
"in": "path",
24+
"required": true,
25+
"schema": {
26+
"type": "string"
27+
}
28+
}
29+
],
30+
"requestBody": {
31+
"content": {
32+
"application/json": {
33+
"schema": {
34+
"type": "string"
35+
}
36+
}
37+
},
38+
"required": true
39+
},
40+
"responses": {
41+
"204": {
42+
"description": "No Content",
43+
"content": {}
44+
}
45+
}
46+
}
47+
},
1448
"/status": {
1549
"get": {
1650
"tags": [

0 commit comments

Comments
 (0)