package Ġcom . s uka idev . processor Ċ Ċ import Ġcom . google . auto . service . Auto Service Ċ import Ġcom . s uka idev . annotations . Bind Class Ċ import Ġcom . s uka idev . annotations . BindView Ċ import Ġcom . s uka idev . processor . binding . Binding Activity Ċ import Ġcom . s uka idev . processor . binding . Binding Fragment Ċ import Ġcom . s uka idev . processor . binding . const . ACTIVITY _ JVM _ CLASS _ NAME Ċ import Ġcom . s uka idev . processor . binding . const . FRAGMENT _ JVM _ CLASS _ NAME Ċ import Ġcom . s uka idev . processor . binding . const . VIEW _ JVM _ CLASS _ NAME Ċ import Ġcom . s uka idev . processor . binding . entity . Binding View Ċ import Ġcom . s uka idev . processor . util . Context Holder Ċ import Ġcom . s uka idev . processor . util . Context Holder . elements Ċ import Ġcom . s uka idev . processor . util . Context Holder . types Ċ import Ġcom . s uka idev . processor . util . Logger Ċ import Ġcom . s uka idev . processor . util . is SubType Ċ import Ġcom . sun . tools . javac . code . Symbol Ċ import Ġjavax . annotation . processing . Abstract Processor Ċ import Ġjavax . annotation . processing . Processing Environment Ċ import Ġjavax . annotation . processing . Processor Ċ import Ġjavax . annotation . processing . Round Environment Ċ import Ġjavax . lang . model . Source Version Ċ import Ġjavax . lang . model . element . Element Ċ import Ġjavax . lang . model . element . Type Element Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġs uka idev Ġon Ġ 2 0 2 1 / 0 7 / 0 2 . Ċ Ġ* Ċ Ġ* Ġ èĩªå®ļä¹ī æ³¨è§£ å¤ĦçĲĨ åĻ¨ Ċ Ġ* Ġ å®ŀçİ° è§ĨåĽ¾ ç»ĳå®ļ åĬŁèĥ½ Ċ Ġ* Ċ Ġ* Ġ@ author Ġs uka idev Ċ Ġ*/ Ċ @ Auto Service ( Processor :: class ) Ċ class ĠView Binding Processor Ġ: ĠAbstract Processor () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġinit ( processing Env : ĠProcessing Environment ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . init ( processing Env ) ĊĠĠĠĠĠĠĠ ĠLogger . init ( processing Env . mess ager ) ĊĠĠĠĠĠĠĠ ĠContext Holder . init ( processing Env ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġprocess ( ĊĠĠĠĠĠĠĠ Ġannotations : ĠMutable Set < out ĠType Element >, ĊĠĠĠĠĠĠĠ Ġround Env : ĠRound Environment ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinding Activities Ġ= ĠHashMap < Element , ĠBinding Activity >() ĊĠĠĠĠĠĠĠ Ġval Ġbinding Fragments Ġ= ĠHashMap < Element , ĠBinding Fragment >() ĊĊĠĠĠĠĠĠĠ Ġ// Ġ ç¬¬ä¸Ģ æŃ¥ ï¼Į æĶ¶éĽĨ æīĢæľī æłĩ æ³¨ äºĨ æ³¨è§£ çļĦ Activity / Fragment ĊĠĠĠĠĠĠĠ Ġval Ġactivity Type Ġ= Ġelements . getType Element ( ACTIVITY _ JVM _ CLASS _ NAME ). as Type () ĊĠĠĠĠĠĠĠ Ġval Ġfragment Type Ġ= Ġelements . getType Element ( FRAGMENT _ JVM _ CLASS _ NAME ). as Type () ĊĠĠĠĠĠĠĠ Ġround Env . getElement s Annotated With ( Bind Class :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . kind . is Class Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . as Type (). is SubType ( activity Type , Ġtypes ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding Activities [ it ] Ġ= ĠBinding Activity ( it Ġas ĠType Element ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . as Type (). is SubType ( fragment Type , Ġtypes ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding Fragments [ it ] Ġ= ĠBinding Fragment ( it Ġas ĠType Element ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . error ( it , Ġ" Unsupported Ġtype Element :${ it . simple Name }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . log Parsing Error ( it , ĠBind Class :: class . java , Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġ ç¬¬äºĮ æŃ¥ ï¼Į æĶ¶éĽĨ æīĢæľī æłĩ æ³¨ äºĨ æ³¨è§£ çļĦ View ĊĠĠĠĠĠĠĠ Ġval Ġview Type Ġ= Ġelements . getType Element ( VIEW _ JVM _ CLASS _ NAME ). as Type () ĊĠĠĠĠĠĠĠ Ġround Env . getElement s Annotated With ( BindView :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . kind . is Field Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ å¿ħé¡» æĺ¯ View çļĦ åŃĲ ç±» ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . is SubType ( view Type , Ġtypes )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . enc lo sing Element . is SubType ( activity Type , Ġtypes )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding Activities [ it . enc lo sing Element ]?. binding Views ?. add ( Binding View ( it Ġas ĠSymbol . Var Symbol )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠLogger . error ( it , Ġ" Binding View Ġ$ it Ġannotated Ġas Ġ@ BindView Ġwhile Ġ${ it . enc lo sing Element } Ġnot Ġannotated .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . enc lo sing Element . is SubType ( fragment Type , Ġtypes )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding Fragments [ it . enc lo sing Element ]?. binding Views ?. add ( Binding View ( it Ġas ĠSymbol . Var Symbol )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠLogger . error ( it , Ġ" Binding View Ġ$ it Ġannotated Ġas Ġ@ BindView Ġwhile Ġ${ it . enc lo sing Element } Ġnot Ġannotated .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . log Parsing Error ( it , ĠBind View :: class . java , Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġ ç¬¬ä¸ī æŃ¥ ï¼Į ä¸º Activity / Fragment çĶŁæĪĲ å¯¹åºĶ View Binding ç±» ĊĠĠĠĠĠĠĠ Ġbinding Activities . values . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . builder . build () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding Fragments . values . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . builder . build () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Supported Annotation Types () Ġ= Ġset Of ( Bind Class :: class . java . name , ĠBind View :: class . java . name ) ĊĊĠĠĠ Ġoverride Ġfun Ġget Supported Source Version () Ġ= ĠSource Version . RELEASE _ 8 Ċ }