package Ġio . gitlab . art urb os ch . de te kt . internal Ċ Ċ import Ġorg . codehaus . groovy . runtime . Default Gro ovy Methods Support Ċ import Ġorg . gradle . api . file . File Collection Ċ import Ġjava . io . File Ċ import Ġjava . net . URL ClassLoader Ċ Ċ fun Ġinterface ĠClassLoader Cache Ġ{ ĊĊĠĠĠ Ġfun Ġget OrCreate ( classpath : ĠFile Collection ): ĠURL ClassLoader Ċ } Ċ Ċ internal Ġclass ĠDefault ClassLoader Cache Ġ: ĠClassLoader Cache Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġloader And Classpath Files : ĠPair < URL ClassLoader , ĠSet < File >> ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġget OrCreate ( classpath : ĠFile Collection ): ĠURL ClassLoader Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġclasspath Files Ġ= Ġclasspath . files ĊĠĠĠĠĠĠĠ Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlast Loader Ġ= Ġloader And Classpath Files ?. first ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlast Classpath Files Ġ= Ġloader And Classpath Files ?. second ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Classpath Files Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcache ( classpath Files ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( hasClass path Changed ( last Classpath Files , Ġclasspath Files )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDefault Gro ovy Methods Support . close Quiet ly ( last Loader ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcache ( classpath Files ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġloader And Classpath Files ?. first Ġ?: Ġerror (" Cached Ġor Ġnewly Ġcreated Ġde te kt Ġclass loader Ġexpected .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcache ( classpath Files : ĠSet < File >) Ġ{ ĊĠĠĠĠĠĠĠ Ġloader And Classpath Files Ġ= ĠURL ClassLoader ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclasspath Files . map Ġ{ Ġit . to URI (). to URL () Ġ}. to Typed Array (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ/* Ġisolate Ġde te kt Ġenvironment Ġ*/ ĊĠĠĠĠĠĠĠ Ġ) Ġto Ġclasspath Files ĊĠĠĠ Ġ} Ċ } Ċ Ċ object ĠGlobal ClassLoader Cache Ġ: ĠClassLoader Cache Ġby ĠDefault ClassLoader Cache () Ċ Ċ internal Ġfun Ġhas Classpath Changed ( last Classpath Files : ĠSet < File >, Ġcurrent Classpath Files : ĠSet < File >): ĠBoolean Ġ{ ĊĠĠĠ Ġif Ġ( last Classpath Files . size Ġ!= Ġcurrent Classpath Files . size ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġlast Classpath Files . sorted () ĊĠĠĠĠĠĠĠ Ġ. zip ( current Classpath Files . sorted ()) ĊĠĠĠĠĠĠĠ Ġ. any Ġ{ Ġ( last , Ġcurrent ) Ġ-> Ġlast Ġ!= Ġcurrent Ġ|| Ġlast . lastModified () Ġ!= Ġcurrent . lastModified () Ġ} Ċ } Ċ