/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 Ġ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 . gradle . instant execution . serialization . code cs Ċ Ċ import Ġorg . gradle . instant execution . serialization . Mutable Read Context Ċ import Ġorg . gradle . instant execution . serialization . Mutable Write Context Ċ import Ġorg . gradle . instant execution . serialization . beans . make Accessible Ċ import Ġorg . gradle . instant execution . serialization . read List Ċ import Ġorg . gradle . instant execution . serialization . write Collection Ċ import Ġorg . gradle . internal . operations . Build Operation Listener Ċ import Ġorg . gradle . internal . operations . Build Operation Listener Manager Ċ import Ġorg . gradle . internal . operations . Default Build Operation Listener Manager Ċ import Ġjava . lang . reflect . Field ĊĊ Ċ /** Ċ Ġ* ĠCapt ures Ġa Ġwhite Ġlist Ġof Ġlisteners . Ċ Ġ* Ċ Ġ* ĠOnly Ġfor Ġgradle - profiler Ġ-- benchmark - config - time Ġfor Ġnow . Ċ Ġ* Ċ Ġ* ĠMakes Ġassumptions Ġon Ġthe Ġmanager Ġimplementation . Ċ Ġ*/ Ċ internal Ċ class ĠBuild Operation Listeners Codec Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate ĊĠĠĠĠĠĠĠ Ġval ĠclassName Whitelist Ġ= Ġset Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" org . gradle . trace . build ops . Build Operation Trace ${ '$ '} Recording Listener " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠMutable Write Context . write Build Operation Listeners ( manager : ĠBuild Operation Listener Manager ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwrite Collection ( manager . listeners ) Ġ{ Ġlistener Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite ( listener ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠMutable Read Context . read Build Operation Listeners (): ĠList < Build Operation Listener > Ġ= ĊĠĠĠĠĠĠĠ Ġread List () Ġas ĠList < Build Operation Listener > ĊĊĠĠĠ Ġprivate ĊĠĠĠ Ġval ĠBuild Operation Listener Manager . listeners : ĠList < Build Operation Listener > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġget Listeners Field (). un wrapped (). white List ed () ĊĊĠĠĠ Ġprivate ĊĠĠĠ Ġfun ĠBuild Operation Listener Manager . get Listeners Field () Ġ= ĊĠĠĠĠĠĠĠ ĠDefault Build Operation Listener Manager :: class . java ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. getDeclared Field (" listeners ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. also ( Field :: make Accessible ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get ( this ) Ġas ĠList < Build Operation Listener > ĊĊĠĠĠ Ġprivate ĊĠĠĠ Ġfun ĠList < Build Operation Listener >. un wrapped () Ġ= ĊĠĠĠĠĠĠĠ Ġmap Ġ{ Ġlistener Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . java Class . getDeclared Field (" delegate ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. also ( Field :: make Accessible ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get ( listener ) Ġas ĠBuild Operation Listener ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate ĊĠĠĠ Ġfun ĠList < Build Operation Listener >. white List ed () Ġ= ĊĠĠĠĠĠĠĠ Ġfilter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . java Class . name Ġin ĠclassName Whitelist ĊĠĠĠĠĠĠĠ Ġ} Ċ } Ċ