У меня есть DTO (OpeningHoursPeriodDTO) и Entity (OpeningHoursPeriod), которые я хочу отобразить с помощью ModelMapper.Пока я не выкидываю исключения в методе конвертера, все работает нормально, как и ожидалось.
Вот код конвертера:
modelMapper
.createTypeMap(OpeningHoursPeriodDTO.class, OpeningHoursPeriod.class)
.setConverter(converter -> {
OpeningHoursPeriodDTO openingHoursPeriodDTO = converter.getSource();
if (openingHoursPeriodDTO == null) {
return null;
}
if (openingHoursPeriodDTO.getOpen() == null || openingHoursPeriodDTO.getClose() == null) {
throw new BadRequestException("Opening hours and closing hours must be present");
}
if (!Objects.equals(
openingHoursPeriodDTO.getOpen().getDay(),
openingHoursPeriodDTO.getClose().getDay())) {
throw new BadRequestException("Opening and close day for a period must be for the same day");
}
return OpeningHoursPeriod.builder()
.id(openingHoursPeriodDTO.getId())
.day(openingHoursPeriodDTO.getOpen().getDay())
.openTime(LocalTime.parse(openingHoursPeriodDTO.getOpen().getTime(), TIME_FORMATTER))
.closeTime(LocalTime.parse(openingHoursPeriodDTO.getClose().getTime(), TIME_FORMATTER))
.build();
});
Проблема в том, что, если случится, выдает исключение, Я получаю код состояния 500 в моем приложении Spring Boot, хотя код состояния BadRequestException
должен быть 400. Любая идея, как лучше обрабатывать такие исключения преобразователя?