package Ġcom . kir ak ish ou . photo exchange . service Ċ Ċ import Ġcom . google . gson . Gson Ċ import Ġcore . Shared Constants Ċ import Ġorg . springframework . core . io . buffer . Data Buffer Ċ Ċ open Ġclass ĠJson Converter Service ( ĊĠ Ġval Ġgson : ĠGson Ċ ) Ġ{ ĊĊĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠ Ġ@ Throws ( Packet Size Exceeded :: class ) ĊĠ Ġinline Ġfun Ġ< re ified ĠT > Ġfrom Json ( ĊĠĠĠ Ġdata Buffer List : ĠList < Data Buffer >, ĊĠĠĠ ĠmaxSize : ĠLong Ġ= ĠShared Constants . MAX _ PACKET _ SIZE ĊĠ Ġ): ĠT Ġ{ ĊĠĠĠ Ġreturn Ġgson . fromJson ( ĊĠĠĠĠĠ Ġdata Buffer ToString ( data Buffer List , ĠmaxSize ), ĊĠĠĠĠĠ ĠT :: class . java ĊĠĠĠ Ġ) Ġas ĠT ĊĠ Ġ} ĊĊĠ Ġopen Ġfun Ġ< T > ĠtoJson ( data : ĠT ): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġgson . toJson ( data ) ĊĠ Ġ} ĊĊĠ Ġ@ Throws ( Packet Size Exceeded :: class ) ĊĠ Ġfun Ġdata Buffer ToString ( ĊĠĠĠ Ġdata Buffer List : ĠList < Data Buffer >, ĊĠĠĠ ĠmaxSize : ĠLong ĊĠ Ġ): ĠString Ġ{ ĊĠĠĠ Ġval Ġfull Length Ġ= Ġdata Buffer List . sum By Ġ{ Ġit . readable Byte Count () Ġ} ĊĠĠĠ Ġif Ġ( full Length Ġ> ĠmaxSize ) Ġ{ ĊĠĠĠĠĠ Ġthrow ĠPacket Size Exceeded () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġarray Ġ= ĠByteArray ( full Length ) ĊĠĠĠ Ġvar Ġoffset Ġ= Ġ 0 ĊĊĠĠĠ Ġfor Ġ( data Buffer Ġin Ġdata Buffer List ) Ġ{ ĊĠĠĠĠĠ Ġval Ġarray Length Ġ= Ġdata Buffer . readable Byte Count () ĊĠĠĠĠĠ Ġdata Buffer . read ( array , Ġoffset , Ġarray Length ) ĊĠĠĠĠĠ Ġoffset Ġ+= Ġarray Length ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn ĠString ( array ) ĊĠ Ġ} ĊĊĠ Ġclass ĠPacket Size Exceeded Ġ: ĠException () Ċ }