How to use Swagger @ApiResponses annotation in Kotlin?

Frido :

How to convert the following Swagger annotations from Java to Kotlin?

 @ApiResponses(value = { @ApiResponse(code = 200, message = "Given admin user found"),
            @ApiResponse(code = 404, message = "..."),
            @ApiResponse(code = 500, message = "..."),
            @ApiResponse(code = 400, message = "..."),
            @ApiResponse(code = 412, message = "...") })

This does not works:

@ApiResponses(value = listOf( 
        ApiResponse(code = 200, message = "..."),
        ApiResponse(code = 404, message = "..."),
        ApiResponse(code = 500, message = "..."),
        ApiResponse(code = 400, message = "..."),
        ApiResponse(code = 412, message = "...") ))

The error is:

Type inference failed. Expected type mismatch: inferred type is List but ApiResponse was expected

It works when I use just one @ApiResponse instead of listOf(), but I have to define more @ApiResponse(s).

I use Swagger 2.5.0

Robin :

As stated in the Kotlin Language Reference:

If the value argument [of an Annotation] in Java has an array type, it becomes a vararg parameter in Kotlin

So, to make your example work, you need to put it like so:

@ApiResponses(
    ApiResponse(code = 200, message = "..."),
    ApiResponse(code = 404, message = "..."),
    ApiResponse(code = 500, message = "..."),
    ApiResponse(code = 400, message = "..."),
    ApiResponse(code = 412, message = "...")
)

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=434074&siteId=1