/* Ċ Ġ* ĠTencent Ġis Ġplease d Ġto Ġsupport Ġthe Ġopen Ġsource Ġcommunity Ġby Ġmaking ĠB K - CI Ġ èĵĿ é² ¸ æĮģ ç»Ń éĽĨ æĪĲ å¹³åı° Ġavailable . Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 0 ĠTH L ĠA 2 9 ĠLimited , Ġa ĠTencent Ġcompany . Ġ ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* ĠB K - CI Ġ èĵĿ é² ¸ æĮģ ç»Ń éĽĨ æĪĲ å¹³åı° Ġis Ġlicensed Ġunder Ġthe ĠMIT Ġlicense . Ċ Ġ* Ċ Ġ* ĠA Ġcopy Ġof Ġthe ĠMIT ĠLicense Ġis Ġincluded Ġin Ġthis Ġfile . Ċ Ġ* Ċ Ġ* Ċ Ġ* ĠTerms Ġof Ġthe ĠMIT ĠLicense : Ċ Ġ* Ġ------------------------------------------------ --- Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġcom . tencent . bk repo . common . artifact . config Ċ Ċ import Ġcom . tencent . bk repo . common . artifact . exception . Exception Response Translator Ċ import Ġcom . tencent . bk repo . common . artifact . repository . context . Artifact Context Holder Ċ import Ġcom . tencent . bk repo . common . artifact . repository . core . Artifact Repository Ċ import Ġcom . tencent . bk repo . common . artifact . repository . local . Local Repository Ċ import Ġcom . tencent . bk repo . common . artifact . repository . remote . Remote Repository Ċ import Ġcom . tencent . bk repo . common . artifact . repository . virtual . Virtual Repository Ċ import Ġorg . springframework . cg lib . proxy . Method Interceptor Ċ import Ġorg . springframework . cg lib . proxy . Method Proxy Ċ import Ġjava . lang . reflect . Invocation TargetException Ċ import Ġjava . lang . reflect . Method Ċ Ċ class ĠArtifact Bean Proxy < T >( ĊĠĠĠ Ġprivate Ġval Ġclass Type : ĠClass < T > Ċ ) Ġ: ĠMethod Interceptor Ġ{ ĊĊĠĠĠ Ġ@ Suppress (" IMP LICIT _ CAST _ TO _ ANY ") ĊĠĠĠ Ġoverride Ġfun Ġintercept ( proxy : ĠAny , Ġmethod : ĠMethod , Ġargs : ĠArray < out ĠAny > ?, Ġmethod Proxy : ĠMethod Proxy ): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconfigur er Ġ= ĠArtifact Context Holder . getCurrent Artifact Configurer () ĊĠĠĠĠĠĠĠ Ġval Ġtarget Ġ= Ġwhen Ġ( class Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠArtifact Repository :: class . java Ġ-> ĠArtifact Context Holder . getRepository () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLocal Repository :: class . java Ġ-> Ġconfigur er . getLocal Repository () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRemote Repository :: class . java Ġ-> Ġconfigur er . get Remote Repository () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVirtual Repository :: class . java Ġ-> Ġconfigur er . get Virtual Repository () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠException Response Translator :: class . java Ġ-> Ġconfigur er . get Exception Response Translator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" Unsupported Ġproxy Ġobject [$ class Type ]") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmethod . invoke ( target , Ġ*( args . or Empty ())) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( exception : ĠInvocation TargetException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġexception . target Exception ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ