package Ġcom . zy hang . startup Ċ Ċ import Ġcom . zy hang . startup . dispatcher . Startup Dispatcher Ċ import Ġcom . zy hang . startup . log . S Logger Ċ import Ġcom . zy hang . startup . sort . Startup Sort Ċ import Ġcom . zy hang . startup . runtime . Startup Runtime Ċ import Ġcom . zy hang . startup . ship . Startup Ship Un Loader Ċ import Ġcom . zy hang . startup . trace . ST r acer Ċ import Ġcom . zy hang . startup . utils .* Ċ import Ġjava . lang . reflect . Invocation TargetException Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* Ġstartup Ġlaunch Ġcore Ċ Ġ* Ċ Ġ* Ġ@ param Ġship Stuff Ġstore Ġdata Ġto Ġsupply Ġfor Ġstartup Task Ċ Ġ* Ċ Ġ* Ġ@ see ĠStartup Task Ċ Ġ* Ġ@ see ĠStartup Task Register Ċ Ġ*/ Ċ open Ġclass ĠStartup Core ( private Ġval Ġship Stuff : ĠAny ?) Ġ: ĠStartup Ship Un Loader Ġ{ ĊĊĠĠĠ Ġopen Ġvar Ġawait Timeout : ĠLong Ġ= Ġ 5 0 0 0 L ĊĠĠĠ Ġopen Ġvar Ġdebug : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġopen Ġvar Ġlogger : ĠS Logger Ġ= ĠS Logger . Companion . Common S Logger () ĊĠĠĠ Ġopen Ġvar Ġtracer : ĠS Tracer Ġ= ĠS Tracer . Companion . Common ST r acer () ĊĊĠĠĠ Ġopen Ġval Ġall Startup Ġ= Ġmutable ListOf < Startup Task >() ĊĊĠĠĠ Ġopen Ġfun Ġstartup () Ġ{ ĊĠĠĠĠĠĠĠ ĠStartup Runtime . core Ġ= Ġthis ĊĊĠĠĠĠĠĠĠ Ġtrace (" startup ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Register () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsort Result Ġ= ĠStartup Sort . sort ( Collections . unmodifiable List ( all Startup )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStartup Dispatcher ( sort Result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. dispatch ( await Timeout ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġload Ġcom . zy hang . startup . generated . Startup Loader Init Ġclass Ġto Ġregister Ġstartup Ġtask ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġsee Ġcom . zy hang . startup . generated . Startup Loader Init ĊĠĠĠĠ Ġ* Ġsee Ġcom . zy hang . startup . plugin . Startup Plugin ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġfun Ġload Register () Ġ{ ĊĠĠĠĠĠĠĠ Ġtrace (" load Register ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Catch ing Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClass . forName ( Startup Const . START UP _ LOAD ER _ INIT _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getMethod ( Startup Const . METHOD _ INIT , ĠStartup Core :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. invoke ( null , Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. take If Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . is Failure ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ?. take If Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . exception OrNull ()?. printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . exception OrNull () Ġis ĠInvocation TargetException ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtarget Exception Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( it . exception OrNull () Ġas ĠInvocation TargetException ). target Exception ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Exception . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġun load (): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġship Stuff ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġsee Ġcom . zy hang . startup . generated . Startup Loader Init ĊĠĠĠĠ Ġ* Ġsee Ġcom . zy hang . startup . plugin . Startup Plugin ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġfun Ġregister ( startup : ĠStartup Task ) Ġ{ ĊĠĠĠĠĠĠĠ Ġall Startup . add ( startup ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġconfig Await Timeout ( timeout : ĠLong ) Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . await Timeout Ġ= Ġtimeout ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġconfig Debug ( debug : ĠBoolean ) Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . debug Ġ= Ġdebug ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġconfig Logger ( logger : ĠS Logger ) Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . logger Ġ= Ġlogger ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġconfig Tracer ( tracer : ĠS Tracer ) Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . tracer Ġ= Ġtracer ĊĠĠĠ Ġ} Ċ }