@ file : Suppress (" unused ") Ċ package Ġru . touch in . common . spring . web . web client Ċ Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġorg . springframework . web . reactive . function . client . Web Client Ċ import Ġreactor . core . publisher . Mono Ċ import Ġru . touch in . common . spring . web . web client . dto . Request Log Data Ċ import Ġru . touch in . common . spring . web . web client . logger . Web Client Logger Ċ Ċ interface ĠLog Web Client Ġ{ ĊĊĠĠĠ Ġfun Ġget Logger (): ĠWeb Client Logger ĊĊĠĠĠ Ġfun Ġget ObjectMapper (): ĠObjectMapper ĊĊĠĠĠ Ġfun Ġ< T > ĠWeb Client . Request Headers Spec <* >. exchange ( ĊĠĠĠĠĠĠĠ Ġclazz : ĠClass < T >, ĊĠĠĠĠĠĠĠ Ġrequest Log Data : ĠRequest Log Data , ĊĠĠĠ Ġ): ĠMono < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġexchange To Mono Ġ{ Ġclient Response Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient Response . body To Mono ( String :: class . java ) ĊĠĠĠĠĠĠĠ Ġ}. map Ġ{ Ġresponse Body Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Logger (). log ( request Log Data . copy ( response Body Ġ= Ġresponse Body )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġparse Value ( response Body , Ġclazz ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ< T > Ġparse Value ( source : ĠString ?, Ġclazz : ĠClass < T >): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( clazz . canonical Name Ġ!= ĠString :: class . java . canonical Name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget ObjectMapper (). readValue ( source , Ġclazz ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġas ĠT Ġ// ĠT Ġis ĠString ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ