/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠLINE ĠCorporation Ċ Ġ* Ċ Ġ* Ġ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 Ġcom . line corp . lich . component . internal Ċ Ċ import Ġandroid . content . Context Ċ import Ġcom . line corp . lich . component . Component Factory Ċ import Ġjava . util . Service Loader Ċ Ċ interface ĠComponent Provider Ġ{ ĊĊĠĠĠ Ġval Ġload Priority : ĠInt ĊĊĠĠĠ Ġfun Ġinit ( accessor : ĠComponent Accessor ) ĊĊĠĠĠ Ġfun Ġ< T Ġ: ĠAny > Ġget Component ( context : ĠContext , Ġfactory : ĠComponent Factory < T >): ĠT ĊĊĠĠĠ Ġfun Ġget Manager ( application Context : ĠContext ): ĠAny Ċ } Ċ Ċ interface ĠComponent Accessor Ġ{ ĊĊĠĠĠ Ġfun Ġ< T Ġ: ĠAny > Ġcreate Component ( factory : ĠComponent Factory < T >, Ġapplication Context : ĠContext ): ĠT ĊĊĠĠĠ Ġfun Ġget Component ( factory : ĠComponent Factory < *> ): ĠAny ? ĊĊĠĠĠ Ġfun Ġset Component ( factory : ĠComponent Factory <* >, Ġcomponent : ĠAny ?) ĊĊĠĠĠ Ġfun Ġcompare AndSet Component ( factory : ĠComponent Factory <* >, Ġexpect : ĠAny ?, Ġupdate : ĠAny ?): ĠBoolean Ċ } Ċ Ċ internal Ġval Ġcomponent Provider : ĠComponent Provider Ġ= ĊĠĠĠ ĠSequence Ġ{ ĊĠĠĠĠĠĠĠ ĠService Loader . load ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠComponent Provider :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠComponent Provider :: class . java . class Loader ĊĠĠĠĠĠĠĠ Ġ). iterator () ĊĠĠĠ Ġ}. max By Ġ{ Ġit . load Priority Ġ} ?. apply Ġ{ Ġinit ( Component Factory . Accessor ) Ġ} ĊĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠError (" Failed Ġto Ġload ĠComponent Provider .") Ċ Ċ fun Ġget Component Manager ( application Context : ĠContext ): ĠAny Ġ= ĊĠĠĠ Ġcomponent Provider . getManager ( application Context ) Ċ