Closed
Description
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)