package cbt import java.net._ // do not make this a case class, required object identity equality class MultiClassLoader(final val parents: Seq[ClassLoader])(implicit val logger: Logger) extends ClassLoader(null) with CachingClassLoader{ override def findClass(name: String) = { parents.find( parent => try{ null != parent.loadClass(name) // FIXME: is it correct to just ignore the resolve argument here? } catch { case _:ClassNotFoundException => false } ).map( _.loadClass(name) ).getOrElse( null ) } override def toString = ( scala.Console.BLUE ++ super.toString ++ scala.Console.RESET ++ "(" ++ ( if(parents.nonEmpty)( "\n" ++ parents.map(_.toString).mkString(",\n").split("\n").map(" "++_).mkString("\n") ++ "\n" ) else "" ) ++")" ) }