/* Ċ Ġ* Ġ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 . npm . artifact . repository Ċ Ċ import Ġcom . tencent . bk repo . common . artifact . repository . context . Artifact Context Holder Ċ import Ġcom . tencent . bk repo . common . artifact . repository . context . Artifact Search Context Ċ import Ġcom . tencent . bk repo . common . artifact . repository . core . Abstract Artifact Repository Ċ import Ġcom . tencent . bk repo . common . artifact . repository . virtual . Virtual Repository Ċ import Ġcom . tencent . bk repo . npm . constants . SEARCH _ REQUEST Ċ import Ġcom . tencent . bk repo . npm . pojo . N pm Search Info Map Ċ import Ġcom . tencent . bk repo . npm . pojo . metadata . Metadata Search Request Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġorg . springframework . stereotype . Component Ċ Ċ @ Component Ċ class ĠN pm Virtual Repository Ġ: ĠVirtual Repository () Ġ{ ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġoverride Ġfun Ġsearch ( context : ĠArtifact Search Context ): ĠList < N pm Search Info Map > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable ListOf < N pm Search Info Map >() ĊĠĠĠĠĠĠĠ Ġval Ġsearch Request Ġ= Ġcontext . getAttribute < Metadata Search Request >( SEARCH _ REQUEST ) !! ĊĠĠĠĠĠĠĠ Ġval Ġvirtual Configuration Ġ= Ġcontext . get Virtual Configuration () ĊĠĠĠĠĠĠĠ Ġval Ġrepo List Ġ= Ġvirtual Configuration . repository List ĊĠĠĠĠĠĠĠ Ġval Ġtra versed List Ġ= Ġget Tra versed List ( context ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( repo Ident ify Ġin Ġrepo List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( repo Ident ify Ġin Ġtra versed List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtra versed List . add ( repo Ident ify ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsub Repo Info Ġ= Ġrepository Client . get Repo Detail ( repo Ident ify . projectId , Ġrepo Ident ify . name ). data !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrepository Ġ= ĠArtifact Context Holder . getRepository ( sub Repo Info . category ) Ġas ĠAbstract Artifact Repository ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsub Context Ġ= Ġcontext . copy ( repository Detail Ġ= Ġsub Repo Info ) Ġas ĠArtifact Search Context ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . search ( sub Context ). let Ġ{ Ġmap Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . addAll ( map Ġas ĠList < N pm Search Info Map >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( exception : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" list ĠArtifact [ ${ context . artifact Info }] Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" from ĠRepository [$ repo Ident ify ] Ġfailed : Ġ${ exception . message }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġlist . sub List ( 0 , Ġsearch Request . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLoggerFactory . getLogger ( N pm Virtual Repository :: class . java ) ĊĠĠĠ Ġ} Ċ } Ċ