package Ġai . d stack . server . j ersey Ċ Ċ import Ġai . d stack . server . chain If NotNull Ċ import Ġmu . K Logging Ċ import Ġjavax . servlet . http . HttpServletRequest Ċ import Ġjavax . ws . rs . Client ErrorException Ċ import Ġjavax . ws . rs . core . Cache Control Ċ import Ġjavax . ws . rs . core . Context Ċ import Ġjavax . ws . rs . core . Response Ċ import Ġjavax . ws . rs . ext . Exception Mapper Ċ Ċ data Ġclass ĠException Info ( val Ġmessage : ĠString ) Ċ Ċ class ĠGeneral Exception Mapper Ġ: ĠException Mapper < Exception > Ġ{ ĊĠĠĠ Ġ@ Context ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrequest : ĠHttpServletRequest ĊĊĠĠĠ Ġcompanion Ġobject Ġ: ĠK Logging () ĊĊĠĠĠ Ġoverride Ġfun Ġto Response ( exception : ĠException ): ĠResponse Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . error ( exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Request Ġfailed Ġ(${ request . method } Ġ${ request . request URL . chain If NotNull ( request . queryString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend (" ? "). append ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. chain If NotNull ( request . getHeader (" refer er ")) Ġ{ Ġappend ("; Ġrefer er : Ġ"). append ( it ) Ġ}} ): Ġ${ exception . message }" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠClient ErrorException Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexception . response ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠResponse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. status ( Response . Status . INTERNAL _ SERVER _ ERROR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. entity ( Exception Info ( exception . message Ġ?: Ġexception . java Class . name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. cache Control ( Cache Control . valueOf (" no - cache , Ġno - store ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ