Переопределение любого параметра в io.swagger.v3.oas.annotations.media.Схема вызывает исключение

#java #openapi #swagger-3.0

#java #openapi #swagger-3.0

Вопрос:

У меня есть эта аннотация open API

     @GET
    @Operation(method = "Get orders", description = "GetOrdersRoute",
            parameters = {
                    @Parameter(in = ParameterIn.QUERY, name = "batchSize", required = true,
                            schema = @Schema(type = "")),
                    @Parameter(in = ParameterIn.QUERY, name = "fromDate", required = true),
                    @Parameter(in = ParameterIn.QUERY, name = "filter", required = true)},
            responses = {
                    @ApiResponse(description = "The order",
                            content = @Content(mediaType = "application/json",
                                    schema = @Schema(implementation = OrderDto.class)))})
    @Override
    public String handle(@Parameter(hidden = true) Request request, @Parameter(hidden = true) Response response) {
        return api.exec();
    }
 

Это работает. Но когда я добавляю @Parameter к @Schema любому значению, например schema = @Schema(type = "integer")) , я получаю исключение:

 java.lang.NoSuchMethodError: org.apache.commons.lang3.math.NumberUtils.isCreatable(Ljava/lang/String;)Z
 

Другими словами: @Schema(type = "")) работает нормально, но @Schema(type = "integer")) не работает.

И не только type параметр в @Schema аннотации. Любой переопределяющий параметр в @Schema аннотации вызывает это исключение.

Но @Schema in @ApiResponse отлично работает с любым переопределяющим параметром.

Ответ №1:

Сегодня я столкнулся с той же проблемой при использовании

 @ApiResponse(
    responseCode = "200", 
    content = @Content(mediaType = "application/json", schema = @Schema(implementation = MyDto.class)), 
    description = "Returns MyDto.")
 

с io.swagger.v3.oas.annotations.media.Schema помощью from swagger 2.1.9 .

После попытки использования разных версий swagger (которые приводили к другим ошибкам в моей настройке), он работал при понижении до swagger 2.0.10 .