package Ġex po . modules . dev launcher . launcher . manifest Ċ Ċ import Ġandroid . util . Log Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . Gson Builder Ċ import Ġcom . google . gson . Json Deserialization Context Ċ import Ġcom . google . gson . Json Deserializer Ċ import Ġcom . google . gson . Json Element Ċ import Ġjava . io . Reader Ċ import Ġjava . lang . reflect . Type Ċ import Ġkotlin . reflect . full . declared Member Properties Ċ Ċ /** Ċ Ġ* ĠA Ġrepresentation Ġof Ġthe Ġandroid Ġspecific Ġproperties Ġsuch Ġas Ġ` primary Color ` Ġor Ġstatus Ġbar Ġconfiguration . Ċ Ġ* ĠNote Ġthat Ġthis Ġclass Ġdoesn 't Ġcontain Ġfields Ġwhich Ġare Ġalso Ġdefined Ġin Ġthe Ġmain Ġsection Ġof Ġ` app . json ` Ċ Ġ* Ġand Ġcan Ġbe Ġoverridden Ġby Ġthe Ġ[ Dev Launcher Manifest . android ] Ġsection , Ġlike Ġ[ Dev Launcher Manifest . backgroundColor ]. Ċ Ġ* ĠThose Ġfields Ġare Ġcombined Ġduring Ġde serialization Ġand Ġthe Ġfinal Ġvalue Ġis Ġwritten Ġto Ġthe Ġ[ Dev Launcher Manifest ] Ġobject . Ċ Ġ*/ Ċ class ĠDev Launcher Android Manifest Section Ċ Ċ data Ġclass ĠDev Launcher StatusBar Section ( ĊĠ Ġval Ġbar Style : ĠDev Launcher StatusBar Style ?, ĊĠ Ġval ĠbackgroundColor : ĠString ?, ĊĠ Ġval Ġhidden : ĠBoolean ?, ĊĠ Ġval Ġtrans luc ent : ĠBoolean ? Ċ ) Ċ Ċ data Ġclass ĠDev Launcher Manifest ( ĊĠ Ġval Ġname : ĠString , ĊĠ Ġval Ġslug : ĠString , ĊĠ Ġval Ġbundle Url : ĠString , ĊĠ Ġval Ġhost Uri : ĠString , ĊĠ Ġval Ġmain ModuleName : ĠString , ĊĊĠ Ġval Ġorientation : ĠDev Launcher Orientation ?, ĊĊĠ Ġval Ġandroid : ĠDev Launcher Android Manifest Section ?, ĊĊĠ Ġval Ġuser Interface Style : ĠDev Launcher User Interface ?, ĊĠ Ġval ĠbackgroundColor : ĠString ?, ĊĠ Ġval Ġprimary Color : ĠString ?, ĊĊĠ Ġval Ġandroid StatusBar : ĠDev Launcher StatusBar Section ? Ċ ) Ġ{ ĊĠ Ġvar Ġraw Data : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġset ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠClass Ġwhich Ġcontains Ġall Ġfields Ġthat Ġthe Ġuser Ġcan Ġoverride Ġin Ġthe Ġandroid Ġsection . ĊĠĠ Ġ*/ ĊĠ Ġprivate Ġdata Ġclass ĠDev Launcher Over ridden Properties ( ĊĠĠĠ Ġval Ġuser Interface Style : ĠDev Launcher User Interface ?, ĊĠĠĠ Ġval ĠbackgroundColor : ĠString ? ĊĠ Ġ) ĊĊĠ Ġprivate Ġclass ĠDev Launcher Manifest Deserializer Ġ: ĠJson Deserializer < Dev Launcher Manifest > Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġdeserialize ( json : ĠJson Element , ĠtypeOf T : ĠType , Ġcontext : ĠJson Deserialization Context ): ĠDev Launcher Manifest Ġ{ ĊĠĠĠĠĠ Ġwith ( Gson ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠjsonObject Ġ= Ġjson . as JsonObject ĊĠĠĠĠĠĠĠ Ġval Ġbase Manifest Ġ= Ġfrom Json ( jsonObject , ĠDev Launcher Manifest :: class . java ) ĊĠĠĠĠĠĠĠ Ġif Ġ( jsonObject . has (" android ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġoverridden Properties Ġ= Ġfrom Json ( jsonObject . getAs JsonObject (" android "), ĠDev Launcher Over ridden Properties :: class . java ) ĊĠĠĠĠĠĠĠĠĠ Ġapply Over ridden Properties ( base Manifest , Ġoverridden Properties ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġbase Manifest ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġapply Over ridden Properties ( base Manifest : ĠDev Launcher Manifest , Ġoverridden Properties : ĠDev Launcher Over ridden Properties ) Ġ{ ĊĠĠĠĠĠ Ġfor Ġ( field Ġin ĠDev Launcher Over ridden Properties :: class . declared Member Properties ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġoverridden Value Ġ= Ġfield . get ( over ridden Properties ) Ġ?: Ġcontinue ĊĠĠĠĠĠĠĠĠĠ Ġval Ġbase Field Ġ= Ġbase Manifest :: class . java . getDeclared Field ( field . name ) ĊĠĠĠĠĠĠĠĠĠ Ġbase Field . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠ Ġbase Field . set ( base Manifest , Ġoverridden Value ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠLog . w (" Development Client ", Ġ" Could 't Ġapply Ġoverridden Ġproperty Ġ${ field . name }", Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġfun Ġfrom Json ( json Reader : ĠReader ): ĠDev Launcher Manifest Ġ{ ĊĠĠĠĠĠ Ġval Ġmanifest String Ġ= Ġjson Reader . read Text () ĊĠĠĠĠĠ Ġreturn ĠGson Builder () ĊĠĠĠĠĠĠĠ Ġ. register Type Adapter ( Dev Launcher Manifest :: class . java , ĠDev Launcher Manifest Deserializer ()) ĊĠĠĠĠĠĠĠ Ġ. create () ĊĠĠĠĠĠĠĠ Ġ. fromJson ( manifest String , ĠDev Launcher Manifest :: class . java ) ĊĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġraw Data Ġ= Ġmanifest String ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } ĊĊ