aboutsummaryrefslogtreecommitdiff
path: root/stage1/MultiClassLoader.scala
diff options
context:
space:
mode:
Diffstat (limited to 'stage1/MultiClassLoader.scala')
-rw-r--r--stage1/MultiClassLoader.scala14
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