package Ġcom . syn op sys . integration . black duck . art ifactory Ċ Ċ /** Ċ Ġ* Ġblack duck - art ifactory - common Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 ĠSyn op sys , ĠInc . Ċ Ġ* Ċ Ġ* ĠLicensed Ġto Ġthe ĠApache ĠSoftware ĠFoundation Ġ( ASF ) Ġunder Ġone Ċ Ġ* Ġor Ġmore Ġcontributor Ġlicense Ġagreements . ĠSee Ġthe ĠNOTICE Ġfile Ċ Ġ* Ġdistributed Ġwith Ġthis Ġwork Ġfor Ġadditional Ġinformation Ċ Ġ* Ġregarding Ġcopyright Ġownership . ĠThe ĠASF Ġlicenses Ġthis Ġfile Ċ Ġ* Ġto Ġyou Ġ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 . Ċ Ġ*/ Ċ import Ġcom . google . gson . Gson Builder Ċ import Ġcom . google . gson . reflect . Type Token Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . any Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . do Answer Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . mock Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . wh enever Ċ import Ġcom . syn op sys . integration . black duck . art ifactory . modules . inspection . service . Inspection Property Service Ċ import Ġcom . syn op sys . integration . black duck . configuration . Black Duck Server Config Builder Ċ import Ġorg . art ifactory . repo . Repo Path Ċ import Ġorg . mockito . Argument Matchers . any Map Ċ import Ġjava . io . File Ċ import Ġjava . io . IOException Ċ import Ġjava . io . InputStream Ċ import Ġjava . util .* Ċ Ċ type alias ĠProperties Map Ġ= ĠMutable Map < String , ĠString > Ċ Ċ object ĠTest Util Ġ{ ĊĠĠĠ Ġprivate Ġval ĠG SON Ġ= ĠGson Builder (). set Pretty Print ing (). create () ĊĊĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ PROPERTIES _ RESOURCE _ PATH Ġ= Ġ"/ black Duck Plugin . properties " ĊĠĠĠ Ġprivate Ġconst Ġval ĠBLACK DU CK _ CRED ENTIAL S _ ENV _ VAR Ġ= Ġ" BLACK DU CK _ CRED ENTIAL S " ĊĊĠĠĠ Ġfun ĠgetDefault Properties (): ĠProperties Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠgetResource As Properties ( DEFAULT _ PROPERTIES _ RESOURCE _ PATH ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Black Duck Server Config Builder (): ĠBlack Duck Server Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcredentials Ġ= ĠSystem . getenv ( BLACK DU CK _ CRED ENTIAL S _ ENV _ VAR ) ĊĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġobject Ġ: ĠType Token < Map < String , ĠString >>() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ}. type ĊĠĠĠĠĠĠĠ Ġval Ġproperties Ġ= ĠG SON . fromJson < Map < String , ĠString >>( credentials , Ġtype ) ĊĊĠĠĠĠĠĠĠ Ġval Ġblack Duck Server Config Builder Ġ= ĠBlack Duck Server Config Builder () ĊĠĠĠĠĠĠĠ Ġblack Duck Server Config Builder . set Properties ( properties . entries ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġblack Duck Server Config Builder ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġfun ĠgetResource As Properties ( resource Path : ĠString ): ĠProperties Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproperties Ġ= ĠProperties () ĊĠĠĠĠĠĠĠ ĠgetResource AsStream ( resource Path ). use Ġ{ ĠinputStream Ġ-> Ġproperties . load ( inputStream ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġproperties ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetResource As FilePath ( resource Path : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠTest Util :: class . java . getResource ( resource Path ). file ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetResource As File ( resource Path : ĠString ): ĠFile Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠFile ( getResource As FilePath ( resource Path )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetResource AsStream ( resource Path : ĠString ): ĠInputStream Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠTest Util :: class . java . getResource AsStream ( resource Path ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Sp oo fed Inspection Property Service ( repo Path Property Map : ĠMutable Map < Repo Path , ĠProperties Map >): ĠIns pection Property Service Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠdateTime Manager Ġ= ĠDateTime Manager (" yyyy - MM - dd ' T ' HH : mm : ss . SS S ") ĊĠĠĠĠĠĠĠ Ġval Ġplugin Repo Path Factory Ġ= ĠPlugin Repo Path Factory ( false ); ĊĠĠĠĠĠĠĠ Ġreturn ĠIns pection Property Service ( create Mock Art ifactory P API Service ( repo Path Property Map ), ĠdateTime Manager , Ġplugin Repo Path Factory , Ġ 5 ); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Mock Art ifactory P API Service ( repo Path Property Map : ĠMutable Map < Repo Path , ĠProperties Map >): ĠArt ifactory P API Service Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġart ifactory P API Service Ġ= Ġmock < Art ifactory P API Service >() ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġproperty ĊĠĠĠĠĠĠĠ Ġwhenever ( art ifactory P API Service . setProperty ( any (), Ġany (), Ġany ())). then Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrepo Path : ĠRepo Path Ġ= Ġit . get Argument ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproperty Key : ĠString Ġ= Ġit . get Argument ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproperty Value : ĠString Ġ= Ġit . get Argument ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproperties Ġ= Ġrepo Path Property Map . get Or Put ( repo Path , ĠdefaultValue Ġ= Ġ{ Ġmutable Map Of () Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperties [ property Key ] Ġ= Ġproperty Value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepo Path Property Map . put ( repo Path , Ġproperties ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġproperty ĊĠĠĠĠĠĠĠ Ġwhenever ( art ifactory P API Service . getProperty ( any (), Ġany ())). do Answer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrepo Path : ĠRepo Path Ġ= Ġit . get Argument ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproperty Key : ĠString Ġ= Ġit . get Argument ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ do Answer ĠOptional . of Nullable ( repo Path Property Map [ repo Path ]?. get ( property Key )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠHas Ġproperty ĊĠĠĠĠĠĠĠ Ġwhenever ( art ifactory P API Service . has Property ( any (), Ġany ())). do Answer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrepo Path : ĠRepo Path Ġ= Ġit . get Argument ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproperty Key : ĠString Ġ= Ġit . get Argument ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ do Answer Ġrepo Path Property Map [ repo Path ]?. containsKey ( property Key ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠDelete Ġproperty ĊĠĠĠĠĠĠĠ Ġwhenever ( art ifactory P API Service . delete Property ( any (), Ġany ())). then Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrepo Path : ĠRepo Path Ġ= Ġit . get Argument ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproperty Key : ĠString Ġ= Ġit . get Argument ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepo Path Property Map [ repo Path ]?. remove ( property Key ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠSearch Ġfor Ġartifact Ġwith Ġproperty ĊĠĠĠĠĠĠĠ Ġwhenever ( art ifactory P API Service . items By Properties ( any Map (), Ġany ())). do Answer Ġ{ Ġinvocation On Mock Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproperties To Look For Ġ= Ġinvocation On Mock . get Argument < Map < String , ĠString >>( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrepo Keys Ġ= Ġinvocation On Mock . get Argument < Array < String >>( 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmatching Repo Paths Ġ= Ġmutable ListOf < Repo Path >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepo Path Property Map . entries ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġrepo Keys Ġ== Ġnull Ġ|| Ġrepo Keys . contains ( it . key . repo Key ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ Ġentry Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentry . value . entries . forEach Ġ{ Ġrepo Path Property Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproperty Ġ= Ġproperties To Look For [ repo Path Property . key ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( property Ġ!= Ġnull Ġ&& Ġ( property Ġ== Ġ"*" Ġ|| Ġrepo Path Property . value Ġ== Ġproperty )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmatching Repo Paths . add ( entry . key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ do Answer ĠlistOf < Repo Path >() ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġart ifactory P API Service ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Repo Path ( repo Path : ĠString Ġ= Ġ" test "): ĠRepo Path Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠPlugin Repo Path Factory ( false ). create ( repo Path ) ĊĠĠĠ Ġ} Ċ } Ċ