package Ġcom . sak ur aw ald . sil icon . plugin Ċ Ċ import Ġcom . sak ur aw ald . sil icon . debug . Logger Manager Ċ import Ġcom . sak ur aw ald . sil icon . debug . Logger Manager . log Debug Ċ import Ġcom . sak ur aw ald . sil icon . file . ConfigFile Ċ import Ġjava . io . File Ċ import Ġjava . net . URL Ċ import Ġjava . net . URL ClassLoader Ċ Ċ @ Suppress (" RECE IVER _ NULL ABILITY _ MIS MATCH _ BASE D _ ON _ JAVA _ AN NOT ATIONS ") Ċ object ĠPlugin Manager Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġä»İ æľ¬åľ° ç£ ģ çĽĺ åĬłè½½ æıĴä»¶ æĸĩä»¶ . ĊĠĠĠĠ Ġ* Ġ@ return Ġ æĪĲåĬŁ åĬłè½½ çļĦ æıĴä»¶ æķ°éĩı . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġload Plugins (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġplugins Folder Ġ= ĠFile ( ConfigFile . application ConfigPath Ġ+ Ġ"\\ Plugins ") ĊĠĠĠĠĠĠĠ Ġvar Ġloaded Plugin Count Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( file Ġin Ġplugins Folder . list Files ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! file . isFile ) Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog Debug (" Scan Plugin : Ġ" Ġ+ Ġfile . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurls Ġ= ĠarrayOf ( URL (" file :" Ġ+ Ġfile . absolute Path )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġu cl Ġ= ĠURL ClassLoader ( urls ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĠLoad ĠPlugin ĠFile : Ġ è¦ģæ±Ĥ Plugin ĠFile çļĦ FileName ä¸º Sil icon Plugin ç±»çļĦ åħ¨ éĻĲ å®ļ åĲį . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ ä¸Ķ ä¸į å¸¦ æľī åĲİ ç¼Ģ Ġ. jar ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclazz Ġ= Ġu cl . load Class ( file . name ) Ġ// ĠLoad ĠClass . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠonLoad Method Ġ= Ġclazz . getMethod (" on Load ") Ġ// ĠGet ĠMethod . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonLoad Method . invoke ( clazz . getDeclared Constructor (). newInstance ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloaded Plugin Count ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger Manager . report Exception ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġloaded Plugin Count ĊĠĠĠ Ġ} Ċ }