/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠZ UP ĠIT ĠSER V IC OS ĠEM ĠT EC NO LOG IA ĠE ĠIN OV AC AO ĠSA Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġbr . com . z up . be agle . android . compiler Ċ Ċ import Ġbr . com . z up . be agle . android . annotation . Be agle Component Ċ import Ġbr . com . z up . be agle . android . compiler . be agle setup manage . Property Implementation Manager Ċ import Ġbr . com . z up . be agle . android . compiler . be agle setup manage . Type Element Implementation Manager Ċ import Ġbr . com . z up . be agle . compiler . shared . error Ċ import Ġbr . com . z up . be agle . compiler . shared . implements Ċ import Ġcom . squareup . kotlin po et . ClassName Ċ import Ġcom . squareup . kotlin po et . K Modifier Ċ import Ġcom . squareup . kotlin po et . Parameterized TypeName . Companion . parameter ized By Ċ import Ġcom . squareup . kotlin po et . Property Spec Ċ import Ġcom . squareup . kotlin po et . as ClassName Ċ import Ġjavax . annotation . processing . Processing Environment Ċ import Ġjavax . annotation . processing . Round Environment Ċ import Ġjavax . lang . model . element . Type Element Ċ Ċ internal Ġclass ĠBe agle Setup Property Generator ( private Ġval Ġprocessing Env : ĠProcessing Environment ) Ġ{ ĊĊĠĠĠ Ġfun Ġgenerate ( ĊĠĠĠĠĠĠĠ Ġround Environment : ĠRound Environment , ĊĠĠĠ Ġ): ĠList < Property Spec > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproperty Spec ifications : ĠProperty Spec ifications ? Ġ= ĠProperty Spec ifications () ĊĊĠĠĠĠĠĠĠ Ġround Environment . getElement s Annotated With ( Be agle Component :: class . java ). forEach Ġ{ Ġelement Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Element Ġ= Ġelement Ġas ĠType Element ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck If Handlers Exists ( type Element , Ġproperty Spec ifications ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck If Other Attributes Exists ( type Element , Ġproperty Spec ifications ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcreate ListOf Property Spec ( property Spec ifications ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck If Handlers Exists ( ĊĠĠĠĠĠĠĠ Ġtype Element : ĠType Element , ĊĠĠĠĠĠĠĠ Ġproperty Spec ifications : ĠProperty Spec ifications ?, ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠType Element Implementation Manager . manage ( processing Env , Ġtype Element , Ġproperty Spec ifications ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck If Other Attributes Exists ( ĊĠĠĠĠĠĠĠ Ġtype Element : ĠType Element , ĊĠĠĠĠĠĠĠ Ġproperty Spec ifications : ĠProperty Spec ifications ?, ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Element . implements ( DE SIGN _ SYSTEM , Ġprocessing Env ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( property Spec ifications ?. design System Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproperty Spec ifications ?. design System Ġ= Ġtype Element ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Implementation ErrorMessage ( type Element , Ġ" Design System ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Element . implements ( BE AG LE _ ACTIVITY , Ġprocessing Env ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( property Spec ifications ?. default Be agle Activity Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproperty Spec ifications ?. default Be agle Activity Ġ= Ġtype Element ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Implementation ErrorMessage ( type Element , Ġ" Be agle Activity ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Element . implements ( ANAL YT ICS , Ġprocessing Env ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( property Spec ifications ?. analytics Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproperty Spec ifications ?. analytics Ġ= Ġtype Element ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Implementation ErrorMessage ( type Element , Ġ" Analytics ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Element . implements ( ANAL YT ICS _ PROVIDER , Ġprocessing Env ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( property Spec ifications ?. analytics Provider Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproperty Spec ifications ?. analytics Provider Ġ= Ġtype Element ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Implementation ErrorMessage ( type Element , Ġ" Analytics Provider ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġlog Implementation ErrorMessage ( type Element : ĠType Element , Ġelement : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprocessing Env . mess ager . error ( type Element , Ġ"$ element Ġalready Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" defined , Ġremove Ġone Ġimplementation Ġfrom Ġthe Ġapplication .") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate ListOf Property Spec ( ĊĠĠĠĠĠĠĠ Ġproperty Spec ifications : ĠProperty Spec ifications ?, ĊĠĠĠ Ġ): ĠList < Property Spec > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠProperty Implementation Manager . manage ( property Spec ifications ). to Mutable List (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( implement Server D riven Activity Property ( property Spec ifications ?. default Be agle Activity )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġimplement Server D riven Activity Property ( type Element : ĠType Element ?): ĠProperty Spec Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġimplement Server D riven Activity Property ( type Element . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġimplement Server D riven Activity Property ( activity : ĠString , Ġis Formatted : ĠBoolean Ġ= Ġfalse ): ĠProperty Spec Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinitializer Ġ= Ġif Ġ(! is Formatted ) Ġ"$ activity :: class . java Ġas ĠClass < Be agle Activity >" Ġelse Ġactivity ĊĠĠĠĠĠĠĠ Ġreturn ĠProperty Spec . builder ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" server D riven Activity ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠClass :: class . as ClassName (). parameter ized By ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClass Name ( BE AG LE _ ACTIVITY . packageName , ĠBE AG LE _ ACTIVITY . className ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK Modifier . OVERRIDE ĊĠĠĠĠĠĠĠ Ġ). initializer ( initializer ). build () ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġdata Ġclass ĠProperty Spec ifications ( ĊĠĠĠ Ġvar Ġdeep Link Handler : ĠType Element ? Ġ= Ġnull , ĊĠĠĠ Ġvar Ġform Local Action Handler : ĠType Element ? Ġ= Ġnull , ĊĠĠĠ Ġvar ĠhttpClient : ĠType Element ? Ġ= Ġnull , ĊĠĠĠ Ġvar ĠhttpClient Factory : ĠType Element ? Ġ= Ġnull , ĊĠĠĠ Ġvar Ġdesign System : ĠType Element ? Ġ= Ġnull , ĊĠĠĠ Ġvar Ġdefault Be agle Activity : ĠType Element ? Ġ= Ġnull , ĊĠĠĠ Ġvar Ġbe agle Activities : ĠList < Type Element >? Ġ= Ġnull , ĊĠĠĠ Ġvar Ġurl Builder : ĠType Element ? Ġ= Ġnull , ĊĠĠĠ Ġvar Ġstore Handler : ĠType Element ? Ġ= Ġnull , ĊĠĠĠ Ġvar Ġanalytics : ĠType Element ? Ġ= Ġnull , ĊĠĠĠ Ġvar Ġanalytics Provider : ĠType Element ? Ġ= Ġnull , ĊĠĠĠ Ġvar Ġlogger : ĠType Element ? Ġ= Ġnull , ĊĠĠĠ Ġvar Ġimage Downloader : ĠType Element ? Ġ= Ġnull , Ċ ) Ċ