package Ġcom . jo yy . ued . android _ flutter _ annotation . compiler . processor . method Channel Ċ Ċ import Ġcom . google . auto . service . Auto Service Ċ import Ġjavax . annotation . processing . F iler Ċ import Ġjavax . lang . model . Source Version Ċ import Ġjavax . annotation . processing . Processing Environment Ċ import Ġjavax . lang . model . element . Type Element Ċ import Ġjavax . annotation . processing . Round Environment Ċ import Ġcom . jo yy . ued . android _ flutter _ annotation . annotation . method . Flutter Method Channel Ċ import Ġcom . jo yy . ued . android _ flutter _ annotation . annotation . model . Channel Type Ċ import Ġcom . jo yy . ued . android _ flutter _ annotation . compiler . Printer Ċ import Ġcom . squareup . kotlin po et . ClassName Ċ import Ġjava . util . Linked HashSet Ċ import Ġjava . util . Locale Ċ import Ġjavax . annotation . processing . Abstract Processor Ċ import Ġjavax . annotation . processing . Mess ager Ċ import Ġjavax . annotation . processing . Processor Ċ import Ġjavax . lang . model . element . Element Ċ import Ġjavax . lang . model . util . Elements Ċ import Ġjavax . lang . model . util . Types Ċ Ċ /** Ċ Ġ* Ġ@ author : ĠJ iang ĠPeng Y ong Ċ Ġ* Ġ@ date : Ġ 2 0 2 1 / 8 / 1 1 Ġ 1 : 5 8 Ġä¸ĭåįĪ Ċ Ġ* Ġ@ email : Ġ 5 6 0 0 2 9 8 2 @ qq . com Ċ Ġ* Ġ@ des : ĠMethod ĠChannel Ġ å¤ĦçĲĨ åĻ¨ Ċ Ġ*/ Ċ @ Auto Service ( Processor :: class ) Ċ class ĠMethod Channel Processor Ġ: ĠAbstract Processor (), ĠPrinter Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġf iler : ĠF iler ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġelement Utils : ĠElements ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġtypes : ĠTypes ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġmessage : ĠMess ager ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġoptions : ĠMap < String , ĠString >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġsource Version : ĠSource Version ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġlocale : ĠLocale ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġreceiver Processor : ĠReceiver Processor ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġsender Processor : ĠSender Processor ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġoverride Ġfun Ġinit ( processing Env : ĠProcessing Environment ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . init ( processing Env ) ĊĠĠĠĠĠĠĠ Ġf iler Ġ= Ġprocessing Env . filer ĊĠĠĠĠĠĠĠ Ġelement Utils Ġ= Ġprocessing Env . element Utils ĊĠĠĠĠĠĠĠ Ġtypes Ġ= Ġprocessing Env . type Utils ĊĠĠĠĠĠĠĠ Ġmessage Ġ= Ġprocessing Env . mess ager ĊĠĠĠĠĠĠĠ Ġoptions Ġ= Ġprocessing Env . options ĊĠĠĠĠĠĠĠ Ġsource Version Ġ= Ġprocessing Env . source Version ĊĠĠĠĠĠĠĠ Ġlocale Ġ= Ġprocessing Env . locale ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġprocess ( annotations : ĠSet < Type Element ? >, Ġround Env : ĠRound Environment ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġnote (" Method ĠChannel ĠProcessor Ġrunning Ġ. ") ĊĊĠĠĠĠĠĠĠ Ġval Ġf iler Ġ= Ġf iler ĊĠĠĠĠĠĠĠ Ġif Ġ( filer Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror (" F iler Ġis Ġnull . Please Ġtry Ġto Ġrun Ġagain .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġelement Utils Ġ= Ġelement Utils ĊĠĠĠĠĠĠĠ Ġif Ġ( element Utils Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror (" Element Ġutils Ġis Ġnull . Please Ġtry Ġto Ġrun Ġagain .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġtype Utils Ġ= Ġtypes ĊĠĠĠĠĠĠĠ Ġif Ġ( type Utils Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror (" Type Ġutils Ġis Ġnull . Please Ġtry Ġto Ġrun Ġagain .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreceiver Processor Ġ= ĠReceiver Processor ( this , Ġprocessing Env , Ġround Env ) ĊĠĠĠĠĠĠĠ Ġsender Processor Ġ= ĠSender Processor ( this , Ġprocessing Env , Ġround Env ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( annotations . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġelements Ġ= Ġround Env . getElement s Annotated With ( Flutter Method Channel :: class . java ) ĊĠĠĠĠĠĠĠ Ġif Ġ( elements . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġ æİ¥æĶ¶ èĢħ ĊĠĠĠĠĠĠĠ Ġval Ġreceiver Ġ= ĠArrayList < Element >() ĊĠĠĠĠĠĠĠ Ġ// Ġ åıĳéĢģ èĢħ ĊĠĠĠĠĠĠĠ Ġval Ġsender Ġ= ĠArrayList < Element >() ĊĠĠĠĠĠĠĠ Ġelements . filter NotNull (). forEach Ġ{ Ġelement Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġannotation Ġ= Ġelement . getAnnotation ( Flutter Method Channel :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( annotation . type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠChannel Type . RECE IVER Ġ-> Ġreceiver . add ( element ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠChannel Type . SEND ER Ġ-> Ġsender . add ( element ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġchannel Receiver Map Ġ= ĠHashMap < String , ĠClass Name >() ĊĊĠĠĠĠĠĠĠ Ġ// Ġ================= =========== ĠçĶŁæĪĲ æİ¥æĶ¶ èĢħ Ġ================= ============== ĊĠĠĠĠĠĠĠ Ġreceiver . forEach Ġ{ Ġelement Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( element Ġ! is ĠType Element ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ forEach ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreceiver Processor ?. handle ( element , Ġchannel Receiver Map ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġ================= =========== ĠçĶŁæĪĲ åıĳéĢģ èĢħ Ġ================= =============== ĊĠĠĠĠĠĠĠ Ġsender . forEach Ġ{ Ġelement Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsender Processor ?. handle ( element , Ġchannel Receiver Map ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Supported Annotation Types (): ĠSet < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtypes : ĠMutable Set < String > Ġ= ĠLinked HashSet () ĊĠĠĠĠĠĠĠ Ġtypes . add ( Flutter Method Channel :: class . java . canonical Name ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtypes ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Supported Source Version (): ĠSource Version Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSource Version . latest Supported () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Mess ager (): ĠMess ager ? Ġ= Ġmessage Ċ }