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
JSONError
lancia 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 ConstraintViolationException
I messaggi degli oggetti ConstraintViolation
400 IllegalArgumentException
Throwable.getMessage()
400 AuthenticationRequiredException
Throwable.getMessage()
401 BannedUserException
La durata del ban, contenuta in BannedUserException.getDuration()
403 AuthorizationException
Throwable.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