package Ġcom . fer b aj oo . codegen Ċ Ċ import Ġcom . fer b aj oo . annotation _ test . G reeting Generator Ċ import Ġcom . google . auto . service . Auto Service Ċ import Ġjava . io . File Ċ import Ġjavax . annotation . processing .* Ċ import Ġjavax . lang . model . Source Version Ċ import Ġjavax . lang . model . element . Type Element Ċ Ċ @ Auto Service ( Processor :: class ) Ġ// ĠFor Ġregistering Ġthe Ġservice Ċ @ Supported Source Version ( Source Version . RELEASE _ 8 ) Ġ// Ġto Ġsupport ĠJava Ġ 8 Ċ @ Supported Options ( File Generator . K AP T _ K OT LIN _ GENERATED _ OPTION _ NAME ) Ċ class ĠFile Generator Ġ: ĠAbstract Processor () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget Supported Annotation Types (): ĠMutable Set < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmutable Set Of ( G reeting Generator :: class . java . name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Supported Source Version (): ĠSource Version Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSource Version . latest () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġprocess ( set : ĠMutable Set < out ĠType Element > ?, Ġround Environment : ĠRound Environment ?): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠ Ġround Environment ?. getElement s Annotated With ( G reeting Generator :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠclassName Ġ= Ġit . simple Name . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpack Ġ= Ġprocessing Env . element Utils . get Package Of ( it ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgenerate Class ( className , Ġpack , Ġround Environment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate Class ( ĊĠĠĠĠĠĠĠ ĠclassName : ĠString , ĊĠĠĠĠĠĠĠ Ġpack : ĠString , ĊĠĠĠĠĠĠĠ Ġround Environment : ĠRound Environment ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠfileName Ġ= Ġ" Generated _$ className " ĊĠĠĠĠĠĠĠ Ġval Ġfile Content Ġ= ĠKotlin Class Builder ( fileName , Ġpack , Ġround Environment ). getContent () ĊĊĠĠĠĠĠĠĠ Ġval Ġk apt Kotlin Generated Dir Ġ= Ġprocessing Env . options [ K AP T _ K OT LIN _ GENERATED _ OPTION _ NAME ] ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( k apt Kotlin Generated Dir , Ġ"$ fileName . kt ") ĊĊĠĠĠĠĠĠĠ Ġfile . write Text ( file Content ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠK AP T _ K OT LIN _ GENERATED _ OPTION _ NAME Ġ= Ġ" k apt . kotlin . generated " ĊĠĠĠ Ġ} Ċ Ċ }