Switching over to immutable.Iterable where possible
This commit is contained in:
parent
8f131c680f
commit
b00c47854b
44 changed files with 385 additions and 369 deletions
|
|
@ -10,6 +10,7 @@ import scala.collection.immutable
|
|||
import scala.reflect.ClassTag
|
||||
import scala.util.control.NoStackTrace
|
||||
import scala.runtime.AbstractPartialFunction
|
||||
import akka.util.Collections.EmptyImmutableSeq
|
||||
import java.util.Collections.{ emptyList, singletonList }
|
||||
|
||||
/**
|
||||
|
|
@ -175,9 +176,40 @@ object Option {
|
|||
* This class hold common utilities for Java
|
||||
*/
|
||||
object Util {
|
||||
|
||||
/**
|
||||
* Returns a ClassTag describing the provided Class.
|
||||
*
|
||||
* Java API
|
||||
*/
|
||||
def classTag[T](clazz: Class[T]): ClassTag[T] = ClassTag(clazz)
|
||||
|
||||
def arrayToSeq[T](arr: Array[T]): immutable.Seq[T] = arr.to[immutable.Seq]
|
||||
/**
|
||||
* Returns an immutable.Seq representing the provided array of Classes,
|
||||
* an overloading of the generic immutableSeq in Util, to accommodate for erasure.
|
||||
*
|
||||
* Java API
|
||||
*/
|
||||
def immutableSeq(arr: Array[Class[_]]): immutable.Seq[Class[_]] = immutableSeq[Class[_]](arr)
|
||||
|
||||
def arrayToSeq(classes: Array[Class[_]]): immutable.Seq[Class[_]] = classes.to[immutable.Seq]
|
||||
/**
|
||||
*
|
||||
*/
|
||||
def immutableSeq[T](arr: Array[T]): immutable.Seq[T] = if ((arr ne null) && arr.length > 0) Vector(arr: _*) else Nil
|
||||
|
||||
def immutableSeq[T](iterable: java.lang.Iterable[T]): immutable.Seq[T] =
|
||||
iterable match {
|
||||
case imm: immutable.Seq[_] ⇒ imm.asInstanceOf[immutable.Seq[T]]
|
||||
case other ⇒
|
||||
val i = other.iterator()
|
||||
if (i.hasNext) {
|
||||
val builder = new immutable.VectorBuilder[T]
|
||||
|
||||
do { builder += i.next() } while (i.hasNext)
|
||||
|
||||
builder.result()
|
||||
} else EmptyImmutableSeq
|
||||
}
|
||||
|
||||
def immutableSingletonSeq[T](value: T): immutable.Seq[T] = value :: Nil
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue