/* Ċ Ġ* ĠCopyright Ġ 2 0 1 7 Ġthe Ġoriginal Ġauthor Ġor Ġauthors . Ċ Ġ* Ċ Ġ* Ġ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 Ġorg . springframework . kotlin . coroutine . context Ċ Ċ import Ġorg . springframework . beans . factory . config . Bean Definition Ċ import Ġorg . springframework . context . annotation . Bean Ċ import Ġorg . springframework . context . annotation . Configuration Ċ import Ġorg . springframework . context . annotation . Import Aware Ċ import Ġorg . springframework . context . annotation . Role Ċ import Ġorg . springframework . core . annotation . Annotation Attributes Ċ import Ġorg . springframework . core . type . Annotation Metadata Ċ import Ġorg . springframework . kotlin . coroutine . Enable Coroutine Ċ import Ġio . reactivex . Scheduler Ġas ĠRx 2 Scheduler Ċ import Ġreactor . core . scheduler . Scheduler Ġas ĠRe actor Scheduler Ċ Ċ @ Configuration Ċ @ Role ( Bean Definition . ROLE _ INFR A STRUCTURE ) Ċ internal Ġopen Ġclass ĠProxy Coroutine Configuration Ġ: ĠImport Aware Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġenable Cor outines : ĠAnnotation Attributes ĊĊĠĠĠ Ġoverride Ġfun Ġset Import Metadata ( import Metadata : ĠAnnotation Metadata ) Ġ{ ĊĠĠĠĠĠĠĠ Ġenable Cor outines Ġ= ĠAnnotation Attributes . from Map ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Metadata . getAnnotation Attributes ( Enable Coroutine :: class . java . name , Ġfalse )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Bean ĊĠĠĠ Ġopen Ġfun Ġcoroutine Annotation Bean Post Processor ( context Resolver : ĠGlobal Coroutine Context Resolver ): ĠCor outine Annotation Bean Post Processor Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCor outine Annotation Bean Post Processor ( context Resolver ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Proxy Target Class Ġ= Ġenable Cor outines . getBoolean (" proxy Target Class ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorder Ġ= Ġenable Cor outines . getNumber (" order ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ } Ċ