From 984a5f1f0f27d191695feeb3410968f2f35f8fc8 Mon Sep 17 00:00:00 2001 From: Christopher Vogt Date: Fri, 11 Mar 2016 22:36:31 -0500 Subject: Split ClassLoader classes into separate files and a few fixes --- stage1/MultiClassLoader.scala | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 stage1/MultiClassLoader.scala (limited to 'stage1/MultiClassLoader.scala') diff --git a/stage1/MultiClassLoader.scala b/stage1/MultiClassLoader.scala new file mode 100644 index 0000000..de9bd32 --- /dev/null +++ b/stage1/MultiClassLoader.scala @@ -0,0 +1,24 @@ +/* +package cbt +import java.net._ +import scala.util.Try + +import scala.collection.immutable.Seq + + +class MultiClassLoader(parents: Seq[ClassLoader]) extends ClassLoader { + override def loadClass(name: String) = { + //System.err.println("LOADING CLASS "++name); + val c = parents.toStream.map{ + parent => + Try{ + parent.loadClass(name) + }.map(Option[Class[_]](_)).recover{ + case _:ClassNotFoundException => None + }.get + }.find(_.isDefined).flatten + c.getOrElse( ClassLoader.getSystemClassLoader.loadClass(name) ) + } + override def toString = "MultiClassLoader(" ++ parents.mkString(",") ++ ")" +} +*/ -- cgit v1.2.3