/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠGoogle ĠLLC . Ċ Ġ* Ċ Ġ* ĠThis Ġcode Ġmay Ġonly Ġbe Ġused Ġunder Ġthe ĠBSD Ġstyle Ġlicense Ġfound Ġat Ċ Ġ* Ġhttp :// polymer . github . io / LICENSE . txt Ċ Ġ* Ċ Ġ* ĠCode Ġdistributed Ġby ĠGoogle Ġas Ġpart Ġof Ġthis Ġproject Ġis Ġalso Ġsubject Ġto Ġan Ġadditional ĠIP Ġrights Ċ Ġ* Ġgrant Ġfound Ġat Ċ Ġ* Ġhttp :// polymer . github . io / PAT ENTS . txt Ċ Ġ*/ Ċ Ċ package Ġar cs . android . devtools Ċ Ċ import Ġar cs . core . common . Refer enc able Ċ import Ġar cs . core . cr dt . Cr dt Entity Ċ import Ġar cs . core . cr dt . Version Map Ċ import Ġar cs . core . data . Raw Entity Ċ import Ġar cs . core . data . util . Refer enc able List Ċ import Ġar cs . core . data . util . Refer enc able Primitive Ċ import Ġar cs . core . storage . Reference Ċ import Ġar cs . core . util . JsonValue Ċ import Ġar cs . core . util . JsonValue . JsonArray Ċ import Ġar cs . core . util . JsonValue . Json Boolean Ċ import Ġar cs . core . util . JsonValue . Json Null Ċ import Ġar cs . core . util . JsonValue . Json Number Ċ import Ġar cs . core . util . JsonValue . JsonObject Ċ import Ġar cs . core . util . JsonValue . Json String Ċ Ċ /** Ċ Ġ* ĠTurn Ġthe Ġ[ Version Map ] Ġinto Ġa Ġ[ JsonObject ]. Ċ Ġ*/ Ċ fun ĠVersion Map . toJson () Ġ= ĠJsonObject ( ĊĠ Ġactors . map Ġ{ Ġit Ġto ĠJson Number ( this [ it ]. toDouble ()) Ġ}. toMap () Ċ ) Ċ Ċ /** Ċ Ġ* ĠTransform Ġa Ġ[ Refer enc able ] Ġinto Ġa Ġ[ JsonValue ]. Ċ Ġ*/ Ċ fun ĠRefer enc able . toJson (): ĠJson Value < *> Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠ Ġis ĠReference Ġ-> ĠJsonObject ( ĊĠĠĠ Ġ" id " Ġto ĠJson String ( this . id ), ĊĠĠĠ Ġ" storage Key " Ġto ĠJson String ( this . storage Key . toString ()), ĊĠĠĠ Ġ" version " Ġto Ġ( this . version ?. toJson () Ġ?: ĠJson Null ), ĊĠĠĠ Ġ" creation Timestamp " Ġto ĠJson Number ( this . creation Timestamp . toDouble ()), ĊĠĠĠ Ġ" expiration Timestamp " Ġto ĠJson Number ( ĊĠĠĠĠĠ Ġthis . expiration Timestamp . toDouble () ĊĠĠĠ Ġ), ĊĠĠĠ Ġ" is Hard Reference " Ġto ĠJson Boolean ( is Hard Reference ) ĊĠ Ġ) ĊĠ Ġis ĠRaw Entity Ġ-> ĠJsonObject ( ĊĠĠĠ Ġ" id " Ġto ĠJson String ( id ), ĊĠĠĠ Ġ" sing letons " Ġto ĠJsonObject ( ĊĠĠĠĠĠ Ġsing letons . map Values Ġ{ Ġ(_, Ġvalue ) Ġ-> Ġvalue ?. toJson () Ġ?: ĠJson Null Ġ} ĊĠĠĠ Ġ), ĊĠĠĠ Ġ" collections " Ġto ĠJsonObject ( ĊĠĠĠĠĠ Ġcollections . map Values Ġ{ Ġ(_, Ġvalue ) Ġ-> ĠJson Array ( value . map Ġ{ Ġit . toJson () Ġ}) Ġ} ĊĠĠĠ Ġ), ĊĠĠĠ Ġ" creation Timestamp " Ġto ĠJson Number ( creation Timestamp . toDouble ()), ĊĠĠĠ Ġ" expiration Timestamp " Ġto ĠJson Number ( expiration Timestamp . toDouble ()) ĊĠ Ġ) ĊĠ Ġis ĠRefer enc able Primitive < *> Ġ-> Ġ{ ĊĠĠĠ Ġwhen Ġ( val Ġvalue Ġ= Ġthis . value ) Ġ{ ĊĠĠĠĠĠ Ġis ĠString Ġ-> ĠJson String ( value ) ĊĠĠĠĠĠ Ġis ĠBoolean Ġ-> ĠJson Boolean ( value ) ĊĠĠĠĠĠ Ġis ĠDouble Ġ-> ĠJson Number ( value ) ĊĠĠĠĠĠ Ġis ĠByte Ġ-> ĠJson Number ( value . toDouble ()) ĊĠĠĠĠĠ Ġis ĠInt Ġ-> ĠJson Number ( value . toDouble ()) ĊĠĠĠĠĠ Ġis ĠLong Ġ-> ĠJson Number ( value . toDouble ()) ĊĠĠĠĠĠ Ġis ĠFloat Ġ-> ĠJson Number ( value . toDouble ()) ĊĠĠĠĠĠ Ġ// ĠTODO ( b / 1 6 2 9 5 5 8 3 1 ): ĠByteArray Ġand ĠBigInt ĊĠĠĠĠĠ Ġelse Ġ-> ĠJson String ( value Repr ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĠ Ġis ĠRefer enc able List < *> Ġ-> ĠJson Array ( value . map Ġ{ Ġit . toJson () Ġ}) ĊĠ Ġis ĠCr dt Entity . Reference Impl Ġ-> Ġunwrap (). toJson () ĊĠ Ġelse Ġ-> ĠJson String ( this . toString ()) Ċ } Ċ