package Ġorg . ny pl . simpl ified . accounts . json Ċ Ċ import Ġcom . fasterxml . jackson . databind . JsonNode Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġcom . fasterxml . jackson . databind . node . Object Node Ċ import Ġorg . ny pl . simpl ified . accounts . api . Account Authentication Credentials Ċ import Ġorg . ny pl . simpl ified . accounts . api . AccountID Ċ import Ġorg . ny pl . simpl ified . json . core . JSON ParseException Ċ import Ġorg . ny pl . simpl ified . json . core . JSONParser Utilities Ċ import Ġorg . ny pl . simpl ified . json . core . JSON Serializer Utilities Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġjava . io . ByteArray OutputStream Ċ import Ġjava . io . IOException Ċ import Ġjava . util . UUID Ċ Ċ /** Ċ Ġ* ĠFunctions Ġfor Ġserial izing / de serializing Ġaccount Ġcredentials . Ċ Ġ*/ Ċ Ċ object ĠAccount Authentication Credentials Store JSON Ġ{ ĊĊĠ Ġprivate Ġval Ġlogger Ġ= ĊĠĠĠ ĠLoggerFactory . getLogger ( Account Authentication Credentials Store JSON :: class . java ) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠThe Ġversion Ġnumber Ġthat Ġwill Ġbe Ġinferred Ġif Ġno Ġversion Ġnumber Ġis Ġpresent . ĊĠĠ Ġ*/ ĊĊĠ Ġprivate Ġconst Ġval Ġinferred Version Ġ= Ġ 2 0 1 9 0 4 2 4 ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠThe Ġcurrent Ġsupported Ġversion . ĊĠĠ Ġ*/ ĊĊĠ Ġprivate Ġconst Ġval Ġcurrent Supported Version Ġ= Ġ 2 0 1 9 0 4 2 4 ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠSerialize Ġthe Ġgiven Ġcredentials Ġto Ġa ĠJSON Ġobject , Ġand Ġserialize Ġthat Ġto Ġa ĊĠĠ Ġ* ĠUTF - 8 Ġstring . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġcredentials ĠThe Ġcredentials . ĊĠĠ Ġ* Ġ@ return ĠA Ġstring Ġof ĠJSON ĊĠĠ Ġ* Ġ@ throws ĠIOException ĠOn ĠI / O Ġor Ġserialization Ġerrors ĊĠĠ Ġ*/ ĊĊĠ Ġ@ Throws ( IOException :: class ) ĊĠ Ġfun Ġserialize ToText ( ĊĠĠĠ Ġcredentials : ĠMap < AccountID , ĠAccount Authentication Credentials > ĊĠ Ġ): ĠString Ġ{ ĊĠĠĠ Ġval Ġjo Ġ= Ġserialize To JSON ( credentials ) ĊĠĠĠ Ġval Ġb ao Ġ= ĠByteArrayOutputStream ( 1 0 2 4 ) ĊĠĠĠ ĠJSON Serializer Utilities . serialize ( jo , Ġb ao ) ĊĠĠĠ Ġreturn Ġb ao . toString (" UTF - 8 ") ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠSerialize Ġthe Ġgiven Ġcredentials Ġto Ġa ĠJSON Ġobject . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġcredentials ĠThe Ġcredentials . ĊĠĠ Ġ* Ġ@ return ĠA ĠJSON Ġobject ĊĠĠ Ġ*/ ĊĊĠ Ġfun Ġserialize To JSON ( credentials : ĠMap < AccountID , ĠAccount Authentication Credentials >): ĠObject Node Ġ{ ĊĠĠĠ Ġval Ġj om Ġ= ĠObjectMapper () ĊĊĠĠĠ Ġval Ġobj Ġ= Ġj om . createObject Node () ĊĠĠĠ Ġobj . put ("@ version ", Ġcurrent Supported Version ) ĊĊĠĠĠ Ġval Ġcreds Object Ġ= Ġj om . createObject Node () ĊĠĠĠ Ġfor Ġ( key Ġin Ġcredentials . keys ) Ġ{ ĊĠĠĠĠĠ Ġval Ġitem Ġ= Ġcredentials [ key ] !! ĊĠĠĠĠĠ Ġval Ġcreds Obj Ġ= ĠAccount Authentication Credentials JSON . serialize To JSON ( item ) ĊĠĠĠĠĠ Ġcreds Object . set < Object Node >( key . uuid . toString (), Ġcreds Obj ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġobj . set < Object Node >(" credentials ", Ġcreds Object ) ĊĠĠĠ Ġreturn Ġobj ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠDeserialize Ġthe Ġgiven Ġtext , Ġwhich Ġis Ġassumed Ġto Ġbe Ġa ĠJSON Ġobject ĊĠĠ Ġ* Ġrepresenting Ġaccount Ġcredentials . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġtext ĠThe Ġcredentials Ġtext . ĊĠĠ Ġ* Ġ@ return ĠAccount Ġcredentials ĊĠĠ Ġ* Ġ@ throws ĠIOException ĠOn ĠI / O Ġor Ġserialization Ġerrors ĊĠĠ Ġ*/ ĊĊĠ Ġ@ Throws ( IOException :: class ) ĊĠ Ġfun Ġdeserialize FromText ( text : ĠString ): ĠMap < AccountID , ĠAccount Authentication Credentials > Ġ{ ĊĠĠĠ Ġreturn Ġdeserialize From JSON ( ObjectMapper (). read Tree ( text )) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠDeserialize Ġthe Ġgiven ĠJSON Ġnode , Ġwhich Ġis Ġassumed Ġto Ġbe Ġa ĠJSON Ġobject ĊĠĠ Ġ* Ġrepresenting Ġaccount Ġcredentials . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġnode ĠCredentials Ġas Ġa ĠJSON Ġnode . ĊĠĠ Ġ* Ġ@ return ĠAccount Ġcredentials ĊĠĠ Ġ* Ġ@ throws ĠJSON ParseException ĠOn Ġparse Ġerrors ĊĠĠ Ġ*/ ĊĊĠ Ġ@ Throws ( JSON ParseException :: class ) ĊĠ Ġfun Ġdeserialize From JSON ( node : ĠJsonNode ): ĠMap < AccountID , ĠAccount Authentication Credentials > Ġ{ ĊĠĠĠ Ġval Ġobj Ġ= ĠJSON Parser Utilities . check Object ( null , Ġnode ) ĊĊĠĠĠ Ġreturn Ġwhen Ġ( val Ġversion Ġ= ĊĠĠĠĠĠ ĠJSON Parser Utilities . getInteger Default ( obj , Ġ"@ version ", Ġinferred Version )) Ġ{ ĊĠĠĠĠĠĠ 2 0 1 9 0 4 2 4 Ġ-> ĊĠĠĠĠĠĠĠ Ġdeserialize From JSON V 2 0 1 9 0 4 2 4 ( obj ) ĊĠĠĠĠĠ Ġelse Ġ-> ĊĠĠĠĠĠĠĠ Ġthrow ĠJSON ParseException (" Unsupported Ġcredentials Ġversion : Ġ$ version ") ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġdeserialize From JSON V 2 0 1 9 0 4 2 4 ( ĊĠĠĠ Ġobj : ĠObject Node ĊĠ Ġ): ĠMap < AccountID , ĠAccount Authentication Credentials > Ġ{ ĊĊĠĠĠ Ġval Ġcredentials Ġ= ĊĠĠĠĠĠ ĠJSON Parser Utilities . getObject ( obj , Ġ" credentials ") ĊĠĠĠ Ġval Ġresult Ġ= ĊĠĠĠĠĠ Ġmutable Map Of < AccountID , ĠAccount Authentication Credentials >() ĊĊĠĠĠ Ġfor Ġ( key Ġin Ġcredentials . field Names ()) Ġ{ ĊĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaccount ID Ġ= ĊĠĠĠĠĠĠĠĠĠ ĠAccount ID ( UUID . fromString ( key )) ĊĠĠĠĠĠĠĠ Ġresult [ account ID ] Ġ= ĊĠĠĠĠĠĠĠĠĠ ĠAccount Authentication Credentials JSON . deserialize From JSON ( credentials . get ( key )) ĊĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . logger . error (" error Ġde serializing Ġcredential : Ġ", Ġe ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġresult . toMap () ĊĠ Ġ} Ċ } Ċ