From 82f1904202032cd0c9e7660f4a7485e19d399fa0 Mon Sep 17 00:00:00 2001 From: Mark Harrah Date: Tue, 5 Apr 2011 18:44:47 -0400 Subject: [PATCH] credentials and patterns for resolvers --- ivy/Credentials.scala | 21 ++++++++++++++++++--- ivy/IvyInterface.scala | 2 ++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/ivy/Credentials.scala b/ivy/Credentials.scala index f4ad3c488..a2a3c9d2b 100644 --- a/ivy/Credentials.scala +++ b/ivy/Credentials.scala @@ -8,11 +8,16 @@ import org.apache.ivy.util.url.CredentialsStore object Credentials { + def apply(realm: String, host: String, userName: String, passwd: String): Credentials = + new DirectCredentials(realm, host, userName, passwd) + def apply(file: File): Credentials = + new FileCredentials(file) + /** Add the provided credentials to Ivy's credentials cache.*/ def add(realm: String, host: String, userName: String, passwd: String): Unit = CredentialsStore.INSTANCE.addCredentials(realm, host, userName, passwd) /** Load credentials from the given file into Ivy's credentials cache.*/ - def apply(path: File, log: Logger): Unit = + def add(path: File, log: Logger): Unit = if(path.exists) { val properties = read(path) @@ -20,13 +25,19 @@ object Credentials List.separate( List(RealmKeys, HostKeys, UserKeys, PasswordKeys).map(get) ) match { - case (Nil, List(realm, host, user, pass)) => add(realm, host, user, pass); None + case (Nil, List(realm, host, user, pass)) => add(realm, host, user, pass) case (errors, _) => log.warn(errors.mkString("\n")) } } else log.warn("Credentials file " + path + " does not exist") + def register(cs: Seq[Credentials], log: Logger): Unit = + cs foreach { + case f: FileCredentials => add(f.path, log) + case d: DirectCredentials => add(d.realm, d.host, d.userName, d.passwd) + } + private[this] val RealmKeys = List("realm") private[this] val HostKeys = List("host", "hostname") private[this] val UserKeys = List("user", "user.name", "username") @@ -39,4 +50,8 @@ object Credentials IO.load(properties, from) properties map { case (k,v) => (k.toString, v.toString) } toMap; } -} \ No newline at end of file +} + +sealed trait Credentials +final class FileCredentials(val path: File) extends Credentials +final class DirectCredentials(val realm: String, val host: String, val userName: String, val passwd: String) extends Credentials \ No newline at end of file diff --git a/ivy/IvyInterface.scala b/ivy/IvyInterface.scala index 4efd8c88f..e3383766c 100644 --- a/ivy/IvyInterface.scala +++ b/ivy/IvyInterface.scala @@ -55,6 +55,8 @@ final class Patterns(val ivyPatterns: Seq[String], val artifactPatterns: Seq[Str } object Patterns { + implicit def defaultPatterns: Patterns = Resolver.defaultPatterns + def apply(artifactPatterns: String*): Patterns = Patterns(true, artifactPatterns : _*) def apply(isMavenCompatible: Boolean, artifactPatterns: String*): Patterns = Patterns(Nil, artifactPatterns, isMavenCompatible) def apply(ivyPatterns: Seq[String], artifactPatterns: Seq[String], isMavenCompatible: Boolean): Patterns = new Patterns(ivyPatterns, artifactPatterns, isMavenCompatible)