package Ġio . ghost b uster 9 1 . kt m . identifier . artifact Ċ Ċ import Ġio . ghost b uster 9 1 . kt m . utils . fold Until Ċ Ċ class ĠArtifact Solver Dispatcher ( private Ġval Ġartifact Resolvers : ĠList < Artifact Resolver >) Ġ{ ĊĠĠĠ Ġfun Ġresolve ( artifact : ĠArtifact ): ĠArtifact . Parsed Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġartifact Resolvers . fold Until ( artifact , Ġ{ Ġacc , Ġresolver Ġ-> Ġresolver . resolve ( acc Ġas ĠArtifact . Un parsed ) Ġ}, Ġ{ Ġacc Ġ-> Ġacc Ġis ĠArtifact . Un parsed Ġ}) ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠArtifact . Parsed Ġ-> Ġresult ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠArtifact . Un parsed Ġ-> Ġthrow ĠArtifact Un resolved (" Cannot Ġresolver Ġartifact : Ġ${ result . text }\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Note Ġthat Ġonly Ġartifacts Ġwhich Ġhave Ġremote Ġtags Ġcan Ġbe Ġsearched Ġby Ġname .\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" For Ġother Ġartifacts Ġprovide Ġfully Ġqualified Ġname .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠArtifact Resolver Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġresolve ( artifact : ĠArtifact . Un parsed ): ĠArtifact ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsealed Ġclass ĠArtifact Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠParsed ( val ĠgroupId : ĠString , Ġval Ġartifact Id : ĠString ) Ġ: ĠArtifact () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= Ġ"$ groupId :$ artifactId " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠUn parsed ( val Ġtext : ĠString ) Ġ: ĠArtifact (){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= Ġtext ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠArtifact Un resolved ( override Ġval Ġmessage : String ) Ġ: ĠRuntimeException ( message ) Ċ } ĊĊ