diff --git a/ivy/Credentials.scala b/ivy/Credentials.scala index dc09adbcc..882e1c22b 100644 --- a/ivy/Credentials.scala +++ b/ivy/Credentials.scala @@ -33,13 +33,14 @@ object Credentials case Right(dc) => dc } } + def loadCredentials(path: File): Either[String, DirectCredentials] = if(path.exists) { val properties = read(path) def get(keys: List[String]) = keys.flatMap(properties.get).headOption.toRight(keys.head + " not specified in credentials file: " + path) - List.separate( List(RealmKeys, HostKeys, UserKeys, PasswordKeys).map(get) ) match + IvyUtil.separate( List(RealmKeys, HostKeys, UserKeys, PasswordKeys).map(get) ) match { case (Nil, List(realm, host, user, pass)) => Right( new DirectCredentials(realm, host, user, pass) ) case (errors, _) => Left(errors.mkString("\n")) diff --git a/ivy/Ivy.scala b/ivy/Ivy.scala index 937648cc0..030d0c192 100644 --- a/ivy/Ivy.scala +++ b/ivy/Ivy.scala @@ -382,7 +382,7 @@ private object IvySbt private[sbt] def javaMap(m: Map[String,String], unqualify: Boolean = false) = { val map = if(unqualify) m map { case (k, v) => (k.stripPrefix("e:"), v) } else m - if(map.isEmpty) null else scala.collection.JavaConversions.asJavaMap(map) + if(map.isEmpty) null else scala.collection.JavaConversions.mapAsJavaMap(map) } private object javaMap diff --git a/ivy/IvyUtil.scala b/ivy/IvyUtil.scala new file mode 100644 index 000000000..1c99bb5d3 --- /dev/null +++ b/ivy/IvyUtil.scala @@ -0,0 +1,7 @@ +package sbt + +private[sbt] object IvyUtil +{ + def separate[A,B](l: Seq[Either[A,B]]): (Seq[A], Seq[B]) = + (l.flatMap(_.left.toOption), l.flatMap(_.right.toOption)) +} \ No newline at end of file diff --git a/ivy/MakePom.scala b/ivy/MakePom.scala index 9d57bbace..c92de2aa0 100644 --- a/ivy/MakePom.scala +++ b/ivy/MakePom.scala @@ -237,7 +237,7 @@ class MakePom(val log: Logger) def exclusions(dependency: DependencyDescriptor): NodeSeq = { val excl = dependency.getExcludeRules(dependency.getModuleConfigurations) - val (warns, excls) = List.separate(excl.map(makeExclusion)) + val (warns, excls) = IvyUtil.separate(excl.map(makeExclusion)) if(!warns.isEmpty) log.warn(warns.mkString(IO.Newline)) if(!excls.isEmpty) {excls} else NodeSeq.Empty diff --git a/launch/ConfigurationParser.scala b/launch/ConfigurationParser.scala index c399854fe..cdac66a9e 100644 --- a/launch/ConfigurationParser.scala +++ b/launch/ConfigurationParser.scala @@ -247,7 +247,7 @@ final class Section(val name: String) extends Line object Comment extends Line class ParseException(val content: String, val line: Int, val col: Int, val msg: String) - extends BootException( "[" + (line+1) + ", " + (col+1) + "]" + msg + "\n" + content + "\n" + List.make(col," ").mkString + "^" ) + extends BootException( "[" + (line+1) + ", " + (col+1) + "]" + msg + "\n" + content + "\n" + List.fill(col)(" ").mkString + "^" ) object ParseLine { diff --git a/main/Main.scala b/main/Main.scala index 3940789c9..cb80bcc29 100644 --- a/main/Main.scala +++ b/main/Main.scala @@ -364,7 +364,7 @@ object BuiltinCommands { val addBase = token(Space ~> "add") ~> token(Space ~> basicUri, "").+ val removeBase = token(Space ~> "remove") ~> token(Space ~> Uri(Project.extraBuilds(s).toSet) ).+ - addBase.map(toAdd => (xs: List[URI]) => (toAdd.toList ::: xs).removeDuplicates) | + addBase.map(toAdd => (xs: List[URI]) => (toAdd.toList ::: xs).distinct) | removeBase.map(toRemove => (xs: List[URI]) => xs.filterNot(toRemove.toSet)) } diff --git a/main/actions/Package.scala b/main/actions/Package.scala index b44966fae..047c53c36 100644 --- a/main/actions/Package.scala +++ b/main/actions/Package.scala @@ -37,7 +37,7 @@ object Package def mergeManifests(manifest: Manifest, mergeManifest: Manifest) { mergeAttributes(manifest.getMainAttributes, mergeManifest.getMainAttributes) - val entryMap = asScalaMap(manifest.getEntries) + val entryMap = mapAsScalaMap(manifest.getEntries) for((key, value) <- mergeManifest.getEntries) { entryMap.get(key) match diff --git a/tasks/Execute.scala b/tasks/Execute.scala index e2fba3293..457b0221f 100644 --- a/tasks/Execute.scala +++ b/tasks/Execute.scala @@ -16,7 +16,7 @@ object Execute trait Part1of2K[M[_[_], _], A[_]] { type Apply[T] = M[A, T] } type NodeT[A[_]] = Part1of2K[Node, A] - def idMap[A,B]: Map[A, B] = JavaConversions.asScalaMap(new java.util.IdentityHashMap[A,B]) + def idMap[A,B]: Map[A, B] = JavaConversions.mapAsScalaMap(new java.util.IdentityHashMap[A,B]) def pMap[A[_], B[_]]: PMap[A,B] = new DelegatingPMap[A, B](idMap) private[sbt] def completed(p: => Unit): Completed = new Completed { def process() { p } diff --git a/util/collection/IDSet.scala b/util/collection/IDSet.scala index 683c7a76b..447082d8b 100644 --- a/util/collection/IDSet.scala +++ b/util/collection/IDSet.scala @@ -37,7 +37,7 @@ object IDSet def += (t: T) = backing.put(t, Dummy) def ++=(t: Iterable[T]) = t foreach += def -= (t:T) = if(backing.remove(t) eq null) false else true - def all = collection.JavaConversions.asScalaIterable(backing.keySet) + def all = collection.JavaConversions.collectionAsScalaIterable(backing.keySet) def isEmpty = backing.isEmpty def process[S](t: T)(ifSeen: S)(ifNew: => S) = if(contains(t)) ifSeen else { this += t ; ifNew } override def toString = backing.toString diff --git a/util/collection/Util.scala b/util/collection/Util.scala index c36bb6443..5aede5f0d 100644 --- a/util/collection/Util.scala +++ b/util/collection/Util.scala @@ -5,6 +5,8 @@ package sbt object Util { + def makeList[T](size: Int, value: T): List[T] = List.fill(size)(value) + def separateE[A,B](ps: Seq[Either[A,B]]): (Seq[A], Seq[B]) = separate(ps)(Types.idFun) diff --git a/util/complete/JLineCompletion.scala b/util/complete/JLineCompletion.scala index 8eabd0ea5..d41f47b85 100644 --- a/util/complete/JLineCompletion.scala +++ b/util/complete/JLineCompletion.scala @@ -131,7 +131,7 @@ object JLineCompletion if(line.charAt(line.length - 1) != '\n') reader.printNewline() } - reader.printColumns(JavaConversions.asJavaList(columns.map(_.trim))) + reader.printColumns(JavaConversions.seqAsJavaList(columns.map(_.trim))) } def hasNewline(s: String): Boolean = s.indexOf('\n') >= 0 def shouldPrint(cs: Seq[String], reader: ConsoleReader): Boolean = diff --git a/util/complete/Parser.scala b/util/complete/Parser.scala index a10d1bdcb..a994e0658 100644 --- a/util/complete/Parser.scala +++ b/util/complete/Parser.scala @@ -5,7 +5,7 @@ package sbt.complete import Parser._ import sbt.Types.{const, left, right, some} - import sbt.Util.separate + import sbt.Util.{makeList,separate} sealed trait Parser[+T] { @@ -676,7 +676,7 @@ private final class Repeat[T](partial: Option[Parser[T]], repeated: Parser[T], m else // forced determinism for(value <- repeated.resultEmpty) yield - List.make(min, value) + makeList(min, value) } override def toString = "repeat(" + min + "," + max +"," + partial + "," + repeated + ")" } \ No newline at end of file