aboutsummaryrefslogtreecommitdiff
path: root/stage1
diff options
context:
space:
mode:
authorChristopher Vogt <oss.nsp@cvogt.org>2016-11-03 02:47:31 +0000
committerChristopher Vogt <oss.nsp@cvogt.org>2016-11-03 14:17:38 -0400
commiteb21b485fbc3972f66bed7d8af62900712cb3b0b (patch)
tree92ac88a45f77f033dd58a003df942fa3aa67362a /stage1
parent131954279c0937b499bddc52c15a300b1af7b9bc (diff)
downloadcbt-eb21b485fbc3972f66bed7d8af62900712cb3b0b.tar.gz
cbt-eb21b485fbc3972f66bed7d8af62900712cb3b0b.tar.bz2
cbt-eb21b485fbc3972f66bed7d8af62900712cb3b0b.zip
Add support for resources (still limited by CBT's classloader visibility)
Diffstat (limited to 'stage1')
-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