package Ġfm . force . quiz . common . http . converter Ċ Ċ import Ġjava . nio . charset . StandardCharsets Ċ import Ġkotlinx . serialization . json . Json Ċ import Ġkotlinx . serialization . json . Json De coding Exception Ċ import Ġorg . springframework . http . Http Input Message Ċ import Ġorg . springframework . http . Http Output Message Ċ import Ġorg . springframework . http . MediaType Ċ import Ġorg . springframework . http . converter . Abstract Http Message Converter Ċ import Ġorg . springframework . http . converter . Http Message Not Readable Exception Ċ import Ġorg . springframework . http . converter . Http Message Not Writable Exception Ċ import Ġorg . springframework . lang . Nullable Ċ import Ġorg . springframework . util . Stream Utils Ċ Ċ /** Ċ Ġ* ĠFor Ġmore Ġinformation Ġvisit Ġthis ĠPR : Ċ Ġ* Ġhttps :// github . com / spring - projects / spring - framework / pull / 2 4 4 3 6 / files Ċ Ġ*/ Ċ class ĠKotlin Serialization Json Http Message Converter ( ĊĠĠĠ Ġprivate Ġval Ġjson : ĠJson Ċ ) Ġ: ĠAbstract Http Message Converter < Any >( MediaType . APPLICATION _ JSON , ĠMediaType (" application ", Ġ"* + json ")) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġresolver : ĠKotlin Serialization Resolver Ġ= ĠKotlin Serialization Resolver () ĊĊĠĠĠ Ġoverride Ġfun Ġsupports ( clazz : ĠClass <* >) Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġresolver . resolve ( clazz ) ĊĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġread Internal ( ĊĠĠĠĠĠĠĠ Ġclazz : ĠClass <* >, ĊĠĠĠĠĠĠĠ Ġinput Message : ĠHttp Input Message ĊĠĠĠ Ġ): ĠAny Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠcontentType Ġ= Ġinput Message . headers . contentType ĊĠĠĠĠĠĠĠ Ġval Ġjson Text Ġ= ĠStream Utils . copy ToString ( input Message . body , Ġget Charset ToUse ( contentType ) !! ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjson . parse ( resolver . resolve ( clazz ), Ġjson Text ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠJson De coding Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠHttp Message Not Readable Exception (" Could Ġnot Ġread ĠJSON : Ġ" Ġ+ Ġex . message , Ġex , Ġinput Message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġwrite Internal ( ĊĠĠĠĠĠĠĠ Ġo : ĠAny , ĊĠĠĠĠĠĠĠ Ġoutput Message : ĠHttp Output Message ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġjson . stringify ( resolver . resolve ( o . java Class ), Ġo ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠcontentType Ġ= Ġoutput Message . headers . contentType ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput Message . body . write ( json . toByteArray ( get Charset ToUse ( contentType ) !! )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput Message . body . flush () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠHttp Message Not Writable Exception (" Could Ġnot Ġwrite ĠJSON : Ġ" Ġ+ Ġex . message , Ġex ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Charset ToUse (@ Nullable ĠcontentType : ĠMediaType ?) Ġ= ĠcontentType ?. charset Ġ?: ĠDEFAULT _ CHARSET ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠDEFAULT _ CHARSET Ġ= ĠStandard Charsets . UTF _ 8 ĊĠĠĠ Ġ} Ċ } Ċ