How to use Swagger @ApiResponses annotation in Kotlin?

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 work:

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

Mistake:

Type input error. Expected Type Mismatch: The type being deduced is List, but ApiResponse was expected

It works when I use only @ApiResponse instead of listOf() , but I need to define more @ApiResponse(s) .

I am using Swagger 2.5.0

+7
java annotations kotlin swagger
source share
1 answer

As stated in the Kotlin Language Reference :

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

So for your example to work, you need to put it like this:

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

All Articles