Съберете всички възникнали грешки/изключения и ги изведете

Използвам Jersey, за да разработя моята REST уеб услуга.

Опитвам се да внедря валидации и за това използвах отличните интеграции с офертите на JSR-303 Bean Validation Jersey.

След това дефинирам ExceptionMapper, за да изведа това, което искам от възникналите грешки. Проблемът е, че понякога изключения се случват не в контекста на валидирането на Bean.

Пример:

клиент изпраща невалидна стойност за float (напр. "ABC"). Джаксън хвърля изключение, защото не може да анализира дадения JSON до плаваща стойност. Това се очаква.

Мога да напиша ExceptionMapper за това изключение и да го изведа на клиента. Въпреки това, това, което бих искал, е да събера всички тези различни изключения, идващи от различни източници, и да ги изведа всички. С други думи, бих искал да извеждам грешките, възникнали по време на анализиране и от проверката на Bean в един и същи отговор, а не поотделно.

Има ли някакъв начин да продължите да събирате всички изключения и накрая да ги изведете всичките? Първият проблем, който предполагам, че ще се случи, е, че Bean Validation никога няма да се случи, докато Джаксън не анализира правилно заявката.


person miguelcobain    schedule 21.01.2014    source източник


Отговори (1)


Както предполагате, няма начин да направите това, защото изключенията се случват по различно време. Ако JSON е невалиден, Джърси не може да продължи и така валидирането на компонента не се извършва.

person Community    schedule 22.01.2014
comment
Значи няма начин да направите това? Това е разочароващо. :/ Валидирането от страна на клиента ще трябва да се справи с това по начина, по който трябва... - person miguelcobain; 22.01.2014
comment
Те са много различни неща. Логично, ако JSON не анализира, тогава как бихте очаквали Джърси да продължи? - person ; 22.01.2014
comment
Има смисъл, но самият json е валиден. Това е просто нормален низ. Работата е там, че даденият низ не е валиден float. Надявах се, че мога просто да уловя това изключение, да задам полето на null и да продължа с валидирането на bean и след това да изведа всички грешки в един отговор. Доста предизвикателство, признавам. - person miguelcobain; 22.01.2014