Skip to content

ConversionFailedException: When accessing v3/api-docs #1097

Closed
@mychalvlcek

Description

@mychalvlcek

Describe the bug
When a want to access v3/api-docs, i got following exception

ConversionFailedException: Failed to convert from type [java.lang.String] to type [xxx.xxx.OrderState] for value 'finished'; nested exception is java.lang.IllegalArgumentException: No enum constant xxx.xxx.OrderState.finished

I have following controller where is:

  • enum as request parameter (with default value),
  • enum has custom mapper dataBinder.registerCustomEditor(OrderState.class, new OrderStateMapper());
@RestController
@RequiredArgsConstructor
class TestController {

    @InitBinder
    public void initBinder(WebDataBinder dataBinder) {
        dataBinder.registerCustomEditor(OrderState.class, new OrderStateMapper());
    }
    
    @GetMapping(value = {"/orders"})
    public Object method(
            @RequestParam(value = "state", defaultValue = "finished") OrderState orderState) {
    }
}

@Getter
@RequiredArgsConstructor
public enum OrderState {
    FINISHED("finished"),
    NEW("new"),
    
    private final String value;
}
public class OrderStateMapper extends PropertyEditorSupport {

    @Override
    public void setAsText(String text) {
        setValue(
                Arrays.stream(OrderState.class.getEnumConstants())
                        .filter(e -> e.getValue().equals(text))
                        .findFirst()
                        .orElseThrow(() -> new MethodArgumentTypeMismatchException(
                                text, OrderState.class, "orderState", null, null)));
    }
}

Expected behavior

  • generator should handle enum params with default values (with custom mapper/binder)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions