Исключения проверки спящего режима Quarkus не отображаются на консоли - PullRequest
1 голос
/ 07 мая 2020

У меня есть простой проект с использованием quarkus 1.4.2. Когда я использую аннотацию @Valid и проверка завершается неудачно со статусом 500, исключение не отображается на консоли. Только в swagger ui. Что мне делать, чтобы распечатать его на консоли?

@ApplicationScoped
public class ProductService {
    public void validateProduct(@Valid Product product) {

    }
}

Возникающее исключение:

javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 

Ошибка верна, она просто не отображается на консоли.

Ответы [ 2 ]

2 голосов
/ 07 мая 2020

Я ожидаю, что ошибка будет зарегистрирована, поскольку это определенно проблема удобства использования. И я ожидаю, что он будет регистрироваться при запуске, когда мы собираем метаданные Hibernate Validator, а не для каждого вызова.

Есть шанс создать репродуктор и открыть проблему GitHub в трекере Quarkus здесь https://github.com/quarkusio/quarkus/issues?

Я проверю и посмотрю, нужно ли что-нибудь исправить.

Спасибо!

0 голосов
/ 07 мая 2020

Если я правильно понимаю, вам нужно использовать объект Validator, чтобы перехватить возможное исключение

    @Inject
    Validator validator;

    public void validateProduct(Product product) {
        // should throw error
        Set<ConstraintViolation<Product>> violations = validator.validate(product);
        if(violations.isEmpty()) {
            return;
        }
        for (ConstraintViolation<Product> violation : violations) { // or log whole set as json
            System.out.println(violation.toString()); //TODO prettify
        }
        throw new ValidationException(JsonbBuilder.create().toJson(violations));
    }

Если вы получите ошибку 500, вы можете поймать ее и записать

Обновление:

Или просто поймайте UnexpectedTypeException там, где вы звоните в службу поддержки, это может быть лучше

...