package Ġorg . ny pl . simpl ified . accounts . json Ċ Ċ import Ġcom . fasterxml . jackson . core . Json Processing Exception Ċ 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 . Account Bund led Credentials Type Ċ import Ġorg . ny pl . simpl ified . accounts . json . Account Authentication Credentials JSON . serialize To JSON Ċ import Ġorg . ny pl . simpl ified . json . core . JSON ParseException Ċ import Ġorg . ny pl . simpl ified . json . core . JSONParser Utilities Ċ import Ġjava . io . IOException Ċ import Ġjava . io . InputStream Ċ import Ġjava . io . OutputStream Ċ import Ġjava . net . URI Ċ import Ġjava . util . concurrent . Concurrent HashMap Ċ Ċ /** Ċ Ġ* ĠFunctions Ġto Ġserialize Ġand Ġdeserialize Ġbundled Ġcredentials . Ċ Ġ*/ Ċ Ċ object ĠAccount Bund led Credentials JSON Ġ{ ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠDeserialize Ġbundled Ġcredentials Ġfrom Ġthe Ġgiven ĠJSON . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġnode ĠThe ĠJSON ĊĠĠ Ġ* Ġ@ return ĠA Ġset Ġof Ġbundled Ġcredentials ĊĠĠ Ġ* Ġ@ throws ĠJSON ParseException ĠOn ĠJSON Ġerrors ĊĠĠ Ġ*/ ĊĊĠ Ġ@ Throws ( JSON ParseException :: class ) ĊĠ Ġfun Ġdeserialize From JSON ( ĊĠĠĠ Ġnode : ĠObject Node ĊĠ Ġ): ĠAccount Bund led Credentials Type Ġ{ ĊĠĠĠ Ġval Ġcredentials By Provider Ġ= ĊĠĠĠĠĠ ĠConcurrent HashMap < URI , ĠAccount Authentication Credentials >() ĊĠĠĠ Ġval Ġby Provider Ġ= ĊĠĠĠĠĠ ĠJSON Parser Utilities . getObject ( node , Ġ" credentials By Provider ") ĊĠĠĠ Ġval Ġiter Ġ= Ġby Provider . field Names () ĊĠĠĠ Ġwhile Ġ( iter . hasNext ()) Ġ{ ĊĠĠĠĠĠ Ġval Ġname Ġ= Ġiter . next () ĊĠĠĠĠĠ Ġval Ġprovider Node Ġ= ĊĠĠĠĠĠĠĠ ĠJSON Parser Utilities . getObject ( by Provider , Ġname ) ĊĠĠĠĠĠ Ġval Ġcredentials Ġ= ĊĠĠĠĠĠĠĠ ĠAccount Authentication Credentials JSON . deserialize From JSON ( provider Node ) ĊĠĠĠĠĠ Ġcredentials By Provider [ URI . create ( name )] Ġ= Ġcredentials ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠBund led Credentials ( credentials By Provider ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠDeserialize Ġbundled Ġcredentials Ġfrom Ġthe Ġgiven ĠJSON . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġnode ĠThe ĠJSON ĊĠĠ Ġ* Ġ@ return ĠA Ġset Ġof Ġbundled Ġcredentials ĊĠĠ Ġ* Ġ@ throws ĠJSON ParseException ĠOn ĠJSON Ġerrors ĊĠĠ Ġ*/ ĊĊĠ Ġ@ Throws ( JSON ParseException :: class ) ĊĠ Ġfun Ġdeserialize From JSON ( ĊĠĠĠ Ġnode : ĠJsonNode ĊĠ Ġ): ĠAccount Bund led Credentials Type Ġ{ ĊĠĠĠ Ġreturn Ġdeserialize From JSON ( JSONParser Utilities . check Object ( null , Ġnode )) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠDeserialize Ġbundled Ġcredentials Ġfrom Ġthe Ġgiven ĠJSON . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġmapper ĠThe ĠJSON Ġmapper ĊĠĠ Ġ* Ġ@ param Ġstream ĠThe Ġinput Ġstream ĊĠĠ Ġ* Ġ@ return ĠA Ġset Ġof Ġbundled Ġcredentials ĊĠĠ Ġ* Ġ@ throws ĠJSON ParseException ĠOn ĠJSON Ġerrors ĊĠĠ Ġ*/ ĊĊĠ Ġ@ Jvm Static ĊĠ Ġ@ Throws ( IOException :: class ) ĊĠ Ġfun Ġdeserialize From Stream ( ĊĠĠĠ Ġmapper : ĠObjectMapper , ĊĠĠĠ Ġstream : ĠInputStream ĊĠ Ġ): ĠAccount Bund led Credentials Type Ġ{ ĊĠĠĠ Ġreturn Ġdeserialize From JSON ( mapper . read Tree ( stream )) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠSerialize Ġthe Ġgiven Ġcredentials Ġto ĠJSON . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġmapper ĠThe ĠJSON Ġmapper ĊĠĠ Ġ* Ġ@ param Ġcredentials ĠThe Ġbundled Ġcredentials ĊĠĠ Ġ* Ġ@ return ĠThe ĠJSON Ġnode ĊĠĠ Ġ*/ ĊĊĠ Ġfun Ġserialize To JSON ( ĊĠĠĠ Ġmapper : ĠObjectMapper , ĊĠĠĠ Ġcredentials : ĠAccount Bund led Credentials Type ĊĠ Ġ): ĠObject Node Ġ{ ĊĠĠĠ Ġval Ġnode Root Ġ= Ġmapper . createObject Node () ĊĠĠĠ Ġval Ġnode By Provider Ġ= Ġmapper . createObject Node () ĊĠĠĠ Ġval Ġby Provider Ġ= ĊĠĠĠĠĠ Ġcredentials . bund led Credentials () ĊĠĠĠ Ġfor Ġ( name Ġin Ġby Provider . keys ) Ġ{ ĊĠĠĠĠĠ Ġval Ġcreds Ġ= Ġby Provider [ name ] ĊĠĠĠĠĠ Ġval Ġnode Cred s Ġ= Ġserialize To JSON ( creds !! ) ĊĠĠĠĠĠ Ġnode By Provider . set < JsonNode >( name . toString (), Ġnode Cred s ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġnode Root . set < JsonNode >(" credentials By Provider ", Ġnode By Provider ) ĊĠĠĠ Ġreturn Ġnode Root ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠSerialize Ġthe Ġgiven Ġcredentials Ġto ĠJSON . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġmapper ĠThe ĠJSON Ġmapper ĊĠĠ Ġ* Ġ@ param Ġcredentials ĠThe Ġbundled Ġcredentials ĊĠĠ Ġ* Ġ@ return ĠThe ĠJSON Ġnode ĊĠĠ Ġ* Ġ@ throws ĠJson Processing Exception ĠOn Ġserialization Ġerrors ĊĠĠ Ġ*/ ĊĊĠ Ġ@ Throws ( Json Processing Exception :: class ) ĊĠ Ġfun Ġserialize ToBytes ( ĊĠĠĠ Ġmapper : ĠObjectMapper , ĊĠĠĠ Ġcredentials : ĠAccount Bund led Credentials Type ĊĠ Ġ): ĠByteArray Ġ{ ĊĠĠĠ Ġreturn Ġmapper . writeValue As Bytes ( serialize To JSON ( mapper , Ġcredentials )) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠSerialize Ġthe Ġgiven Ġcredentials Ġto ĠJSON . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġmapper ĠThe ĠJSON Ġmapper ĊĠĠ Ġ* Ġ@ param Ġcredentials ĠThe Ġbundled Ġcredentials ĊĠĠ Ġ* Ġ@ param Ġstream ĠThe Ġoutput Ġstream ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws ĠIOException ĠOn Ġserialization Ġand ĠI / O Ġerrors ĊĠĠ Ġ*/ ĊĊĠ Ġ@ Jvm Static ĊĠ Ġ@ Throws ( IOException :: class ) ĊĠ Ġfun Ġserialize To Stream ( ĊĠĠĠ Ġmapper : ĠObjectMapper , ĊĠĠĠ Ġcredentials : ĠAccount Bund led Credentials Type , ĊĠĠĠ Ġstream : ĠOutputStream ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġmapper . writeValue ( stream , Ġserialize To JSON ( mapper , Ġcredentials )) ĊĠ Ġ} ĊĊĠ Ġdata Ġclass ĠBund led Credentials Ġinternal Ġconstructor ( ĊĠĠĠ Ġval Ġcredentials By Provider : ĠMap < URI , ĠAccount Authentication Credentials > ĊĠ Ġ) Ġ: ĠAccount Bund led Credentials Type Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġbundled Credentials (): ĠMap < URI , ĠAccount Authentication Credentials > Ġ{ ĊĠĠĠĠĠ Ġreturn Ġcredentials By Provider ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbundled Credentials For ( ĊĠĠĠĠĠ Ġaccount Provider : ĠURI ĊĠĠĠ Ġ): ĠAccount Authentication Credentials ? Ġ{ ĊĠĠĠĠĠ Ġreturn Ġthis . credentials By Provider [ account Provider ] ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ