/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 - 2 0 2 0 ĠO liver ĠB erg Ċ Ġ* Ċ Ġ* Ġ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 Ġmo e . kan on . kom mon s . lang Ċ Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠReturns Ġa Ġnew Ġ[ service Ġloader ][ Service Loader ] Ġfor Ġthe Ġgiven Ġ[ service Ġtype ][ S ] Ġusing Ġthe Ġcurrent Ġthread 's Ċ Ġ* Ġ[ context Ġclass Ġloader ][ Thread . getContext ClassLoader ]. Ċ Ġ* Ċ Ġ* Ġ@ param Ġ[ S ] Ġthe Ġtype Ġof Ġthe Ġservice Ġto Ġload Ċ Ġ*/ Ċ @ Deprecated ( ĊĠĠĠ Ġmessage Ġ= Ġ" Use Ġ' load Services ' Ġfrom Ġkom mon s . reflection Ġinstead .", ĊĠĠĠ Ġreplace With Ġ= ĠReplace With (" load Services ()", Ġ" moe . kan on . kom mon s . reflection ") Ċ ) Ċ inline Ġfun Ġ< re ified ĠS > Ġservice Loader For (): ĠService Loader < S > Ġ= ĠService Loader . load ( S :: class . java ) Ċ Ċ /** Ċ Ġ* ĠReturns Ġa Ġnew Ġ[ service Ġloader ][ Service Loader ] Ġfor Ġthe Ġgiven Ġ[ service Ġtype ][ S ] Ġand Ġclass Ġloader . Ċ Ġ* Ċ Ġ* Ġ@ param Ġ[ S ] Ġthe Ġtype Ġof Ġthe Ġservice Ġto Ġload Ċ Ġ* Ġ@ param Ġ[ loader ] Ġthe Ġclass Ġloader Ġto Ġbe Ġused Ġto Ġload Ġprovider - configuration Ġfiles Ġand Ġprovider Ġclasses , Ġor Ċ Ġ* Ġ` null ` Ġif Ġthe Ġsystem Ġclass Ġloader Ġ*( or , Ġfailing Ġthat , Ġthe Ġbootstrap Ġclass Ġloader )* Ġis Ġto Ġbe Ġused Ċ Ġ*/ Ċ @ Deprecated ( ĊĠĠĠ Ġmessage Ġ= Ġ" Use Ġ' load Services ' Ġfrom Ġkom mon s . reflection Ġinstead .", ĊĠĠĠ Ġreplace With Ġ= ĠReplace With (" load Services ( loader )", Ġ" moe . kan on . kom mon s . reflection ") Ċ ) Ċ inline Ġfun Ġ< re ified ĠS > Ġservice Loader For ( loader : ĠClassLoader ?): ĠService Loader < S > Ġ= ĊĠĠĠ ĠService Loader . load ( S :: class . java , Ġloader ) Ċ Ċ // Ġfake Ġconstructor Ġfunctions Ċ /** Ċ Ġ* ĠReturns Ġa Ġnew Ġ[ service Ġloader ][ Service Loader ] Ġfor Ġthe Ġgiven Ġ[ service Ġtype ][ S ] Ġusing Ġthe Ġcurrent Ġthread 's Ċ Ġ* Ġ[ context Ġclass Ġloader ][ Thread . getContext ClassLoader ]. Ċ Ġ* Ċ Ġ* Ġ@ param Ġ[ S ] Ġthe Ġtype Ġof Ġthe Ġservice Ġto Ġload Ċ Ġ*/ Ċ @ Deprecated ( ĊĠĠĠ Ġmessage Ġ= Ġ" Use Ġ' load Services ' Ġfrom Ġkom mon s . reflection Ġinstead .", ĊĠĠĠ Ġreplace With Ġ= ĠReplace With (" load Services ()", Ġ" moe . kan on . kom mon s . reflection ") Ċ ) Ċ inline Ġfun Ġ< re ified ĠS > ĠService Loader (): ĠService Loader < S > Ġ= ĠService Loader . load ( S :: class . java ) Ċ Ċ /** Ċ Ġ* ĠReturns Ġa Ġnew Ġ[ service Ġloader ][ Service Loader ] Ġfor Ġthe Ġgiven Ġ[ service Ġtype ][ S ] Ġand Ġclass Ġloader . Ċ Ġ* Ċ Ġ* Ġ@ param Ġ[ S ] Ġthe Ġtype Ġof Ġthe Ġservice Ġto Ġload Ċ Ġ* Ġ@ param Ġ[ loader ] Ġthe Ġclass Ġloader Ġto Ġbe Ġused Ġto Ġload Ġprovider - configuration Ġfiles Ġand Ġprovider Ġclasses , Ġor Ċ Ġ* Ġ` null ` Ġif Ġthe Ġsystem Ġclass Ġloader Ġ*( or , Ġfailing Ġthat , Ġthe Ġbootstrap Ġclass Ġloader )* Ġis Ġto Ġbe Ġused Ċ Ġ*/ Ċ @ Deprecated ( ĊĠĠĠ Ġmessage Ġ= Ġ" Use Ġ' load Services ' Ġfrom Ġkom mon s . reflection Ġinstead .", ĊĠĠĠ Ġreplace With Ġ= ĠReplace With (" load Services ( loader )", Ġ" moe . kan on . kom mon s . reflection ") Ċ ) Ċ inline Ġfun Ġ< re ified ĠS > ĠService Loader ( loader : ĠClassLoader ?): ĠService Loader < S > Ġ= ĊĠĠĠ ĠService Loader . load ( S :: class . java , Ġloader ) Ċ