Package common.http.error
Annotation Type JSONError
-
@Target({METHOD,TYPE}) @Retention(RUNTIME) public @interface JSONError
L'annotazione consente di impostare in modo dichiarativo se inviare eventuali errori in formato JSON nel corpo della risposta
Affinché funzioni, è necessario che la servlet su cui applicare l'annotazione estenda
InterceptableServletÈ possibile applicare l'annotazione ai singoli metodi "doX" implementati (es. doGet). Applicare l'annotazione direttamente alla classe equivale ad applicarla su tutti i metodi "doX" implementati.
Quando un metodo "doX" annotato con
JSONErrorlancia una particolare eccezione (elencata in basso), si verificano le seguenti azioni:- Viene catturata l'eccezione allo scopo di recuperare i messaggi di errore rilevanti
per inserirli nell'attributo di richiesta
errors
- I messaggi raccolti vengono inclusi in un array JSON con chiave
errors
- Viene impostato l'apposito status code a seconda dell'eccezione catturata
- Il JSON risultante viene scritto sulla risposta
Le eccezioni catturate sono le seguenti:
Eccezione Messaggi di errore Status code ConstraintViolationExceptionI messaggi degli oggetti ConstraintViolation400 IllegalArgumentExceptionThrowable.getMessage()400 AuthenticationRequiredExceptionThrowable.getMessage()401 BannedUserExceptionLa durata del ban, contenuta in BannedUserException.getDuration()403 AuthorizationExceptionThrowable.getMessage()403 RuntimeException{ Throwable.getMessage()}4500 ServletException{ Throwable.getMessage()}500 IOException{ Throwable.getMessage()}500 - Viene catturata l'eccezione allo scopo di recuperare i messaggi di errore rilevanti
per inserirli nell'attributo di richiesta