/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠN icol as ĠMal ta is Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . mal ta is n . notes . model . converter Ċ Ċ import Ġandroidx . room . Type Converter Ċ import Ġcom . mal ta is n . notes . model . entity . Note Metadata Ċ import Ġkotlinx . serialization .* Ċ import Ġkotlinx . serialization . json . Json Ċ import Ġkotlinx . serialization . json . Json Configuration ĊĊ Ċ /** Ċ Ġ* ĠConverter Ġused Ġto Ġstore Ġinstances Ġof Ġ[ Note Metadata ] Ġin Ġthe Ġdatabase Ġand Ġto Ġserialize Ġthem . Ċ Ġ* ĠWhen Ġserialized , Ġmetadata ĠJSON Ġin Ġitself Ġencoded Ġinto Ġa ĠJSON Ġstring . ĠThis Ġwouldn 't Ġbe Ċ Ġ* Ġnecessary Ġbut Ġit Ġsimpl ifies Ġthe Ġserver 's Ġjob . ĠAlso Ġmetadata Ġ* could * Ġeventually Ġnot Ġbe ĠJSON . Ċ Ġ*/ Ċ @ Serializer ( for Class Ġ= ĠNote Metadata :: class ) Ċ object ĠNote Metadata Converter Ġ: ĠK Serializer < Note Metadata > Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġjson Ġ= ĠJson ( Json Configuration . Stable ) ĊĊĠĠĠ Ġ@ Type Converter ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġto Metadata ( str : ĠString ) Ġ= Ġjson . parse ( Note Metadata . serializer (), Ġstr ) ĊĊĠĠĠ Ġ@ Type Converter ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun ĠtoString ( metadata : ĠNote Metadata ) Ġ= Ġjson . stringify ( Note Metadata . serializer (), Ġmetadata ) ĊĊĊĠĠĠ Ġoverride Ġval Ġdescriptor Ġ= ĠPrimitive Descriptor (" Note Metadata ", ĠPrimitive Kind . STRING ) ĊĊĠĠĠ Ġoverride Ġfun Ġserialize ( encoder : ĠEncoder , Ġvalue : ĠNote Metadata ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġencoder . encode String ( toString ( value )) ĊĊĠĠĠ Ġoverride Ġfun Ġdeserialize ( decoder : ĠDecoder ) Ġ= Ġto Metadata ( decoder . decode String ()) Ċ Ċ } Ċ