diff options
author | Christopher Vogt <oss.nsp@cvogt.org> | 2016-11-03 02:47:31 +0000 |
---|---|---|
committer | Christopher Vogt <oss.nsp@cvogt.org> | 2016-11-03 14:17:38 -0400 |
commit | eb21b485fbc3972f66bed7d8af62900712cb3b0b (patch) | |
tree | 92ac88a45f77f033dd58a003df942fa3aa67362a /stage1 | |
parent | 131954279c0937b499bddc52c15a300b1af7b9bc (diff) | |
download | cbt-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.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 |