diff options
Diffstat (limited to 'stage1')
-rw-r--r-- | stage1/MultiClassLoader.scala | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/stage1/MultiClassLoader.scala b/stage1/MultiClassLoader.scala index 416e0cd..9546d47 100644 --- a/stage1/MultiClassLoader.scala +++ b/stage1/MultiClassLoader.scala @@ -1,5 +1,6 @@ package cbt import java.net._ +import scala.collection.JavaConverters._ // 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{ @@ -14,6 +15,19 @@ class MultiClassLoader(final val parents: Seq[ClassLoader])(implicit val logger: _.loadClass(name) ).getOrElse( null ) } + + // FIXME: is there more than findClass and findResource that needs to be dispatched? + override def findResource(name: String): URL = { + parents.foldLeft(null: URL)( + (acc, parent) => if( acc == null ) parent.getResource(name) else null + ) + } + override def findResources(name: String): java.util.Enumeration[URL] = { + java.util.Collections.enumeration( + parents.flatMap( _.getResources(name).asScala ).asJava + ) + } + override def toString = ( scala.Console.BLUE ++ super.toString |