package Ġcom . cogn if ide . gradle . a em . common . instance . action Ċ Ċ import Ġcom . cogn if ide . gradle . a em . A em Extension Ċ import Ġcom . cogn if ide . gradle . a em . common . instance . check .* Ċ import Ġcom . cogn if ide . gradle . a em . common . instance . names Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ /** Ċ Ġ* ĠAwait s Ġfor Ġstable Ġcondition Ġof Ġall Ġinstances Ġof Ġany Ġtype . Ċ Ġ*/ Ċ class ĠAwait Up Action ( a em : ĠA em Extension ) Ġ: ĠAny Instance Action ( a em ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġtimeout Options : ĠTimeout Check . () Ġ-> ĠUnit Ġ= Ġ{ ĊĠĠĠĠĠĠĠ Ġstate Time Ġ= Ġa em . props . long (" instance . await Up . timeout . state Time ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠTimeUnit . MIN UTES . to Millis ( 1 0 ) ĊĠĠĠĠĠĠĠ Ġconstant Time Ġ= Ġa em . props . long (" instance . await Up . timeout . constant Time ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠTimeUnit . MIN UTES . to Millis ( 3 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtimeout ( options : ĠTimeout Check . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtimeout Options Ġ= Ġoptions ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġbundles Options : ĠBund les Check . () Ġ-> ĠUnit Ġ= Ġ{ ĊĠĠĠĠĠĠĠ Ġsymbolic Names Ignored Ġ= Ġa em . props . list (" instance . await Up . bundles . s ymbolic Names Ignored ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠlistOf () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġbundles ( options : ĠBund les Check . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbundles Options Ġ= Ġoptions ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġevents Options : ĠEvents Check . () Ġ-> ĠUnit Ġ= Ġ{ ĊĠĠĠĠĠĠĠ Ġun stable Topics Ġ= Ġa em . props . list (" instance . await Up . event . unstable Topics ") Ġ?: ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" org / osgi / framework / Service Event /* ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" org / osgi / framework / Framework Event /* ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" org / osgi / framework / Bundle Event /* " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġun stable Age Millis Ġ= Ġa em . props . long (" instance . await Up . event . unstable Age Millis ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠTimeUnit . SECONDS . to Millis ( 5 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġevents ( options : ĠEvents Check . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġevents Options Ġ= Ġoptions ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġcomponents Options : ĠComponents Check . () Ġ-> ĠUnit Ġ= Ġ{ ĊĠĠĠĠĠĠĠ Ġplatform Components Ġ= Ġa em . props . list (" instance . await Up . components . platform ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠlistOf (" com . day . cr x . packaging .* ", Ġ" org . apache . sl ing . installer .* ") ĊĠĠĠĠĠĠĠ Ġspecific Components Ġ= Ġa em . props . list (" instance . await Up . components . specific ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġa em . java Packages . map Ġ{ Ġ"$ it .* " Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcomponents ( options : ĠComponents Check . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcomponents Options Ġ= Ġoptions ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġunchanged Options : ĠUn changed Check . () Ġ-> ĠUnit Ġ= Ġ{ ĊĠĠĠĠĠĠĠ Ġawait Time Ġ= Ġa em . props . long (" instance . await Up . un changed . await Time ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠTimeUnit . SECONDS . to Millis ( 3 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġunchanged ( options : ĠUn changed Check . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġunchanged Options Ġ= Ġoptions ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġrunner Ġ= ĠCheck Runner ( a em ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġdelay Ġ= Ġa em . props . long (" instance . await Up . delay ") Ġ?: ĠTimeUnit . SECONDS . to Millis ( 1 ) ĊĠĠĠĠĠĠĠ Ġverbose Ġ= Ġa em . props . boolean (" instance . await Up . verbose ") Ġ?: Ġtrue ĊĊĠĠĠĠĠĠĠ Ġchecks Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimeout ( timeout Options ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbundles ( bundles Options ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevents ( events Options ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomponents ( components Options ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunchanged ( un changed Options ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġperform () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( instances . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa em . logger . info (" No Ġinstances Ġto Ġawait Ġup .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġa em . logger . info (" Await ing Ġinstance ( s ) Ġup : Ġ${ instances . names }") ĊĊĠĠĠĠĠĠĠ Ġrunner . check ( instances ) ĊĠĠĠ Ġ} Ċ } Ċ