package Ġde . ge sel lix . docker . compose . adapters Ċ Ċ import Ġcom . squareup . mos hi . FromJson Ċ import Ġcom . squareup . mos hi . Json Reader Ċ import Ġcom . squareup . mos hi . ToJson Ċ import Ġde . ge sel lix . docker . compose . types . Service Network Ċ Ċ class ĠString To Service Networks Adapter Ġ{ ĊĊĠĠĠ Ġ@ ToJson ĊĠĠĠ Ġfun ĠtoJson (@ Service Networks Type Ġnetworks : ĠMap < String , ĠService Network >): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow Ġ ĠUnsupportedOperationException () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ FromJson ĊĠĠĠ Ġ@ Service Networks Type ĊĠĠĠ Ġfun Ġfrom Json ( reader : ĠJson Reader ): ĠMap < String , ĠService Network ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġhash Map Of < String , ĠService Network ?> () ĊĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= Ġreader . peek () ĊĠĠĠĠĠĠĠ Ġif Ġ( token Ġ== ĠJson Reader . Token . BEGIN _ OBJECT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreader . begin Object () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( reader . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġreader . next Name () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Type Ġ= Ġreader . peek () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( valueType Ġ== ĠJson Reader . Token . NULL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult [ name ] Ġ= Ġreader . next Null () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( valueType Ġ== ĠJson Reader . Token . STRING ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException (" did n 't Ġexpect Ġa ĠString Ġvalue Ġfor Ġnetwork Ġ$ name ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult [ name ] Ġ= Ġreader . next String () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( valueType Ġ== ĠJson Reader . Token . BEGIN _ OBJECT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġservice Network Ġ= ĠService Network () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreader . begin Object () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( reader . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġattr Ġ= Ġreader . next Name () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( attr Ġ== Ġ" ipv 4 _ address ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice Network . ipv 4 Address Ġ= Ġreader . next String () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( attr Ġ== Ġ" ipv 6 _ address ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice Network . ipv 6 Address Ġ= Ġreader . next String () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( attr Ġ== Ġ" aliases ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaliases Ġ= Ġarray ListOf < String >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreader . begin Array () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( reader . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaliases . add ( reader . next String ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreader . end Array () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice Network . aliases Ġ= Ġaliases ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ... ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreader . end Object () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult [ name ] Ġ= Ġservice Network ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ... ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreader . end Object () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( token Ġ== ĠJson Reader . Token . BEGIN _ ARRAY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreader . begin Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( reader . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġreader . next String () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġdef Ġvalue Ġ= Ġreader . next Null () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult [ name ] Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreader . end Array () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ... ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} Ċ } Ċ