aboutsummaryrefslogtreecommitdiff
path: root/stage1/CachingClassLoader.scala
diff options
context:
space:
mode:
Diffstat (limited to 'stage1/CachingClassLoader.scala')
-rw-r--r--stage1/CachingClassLoader.scala9
1 files changed, 7 insertions, 2 deletions
diff --git a/stage1/CachingClassLoader.scala b/stage1/CachingClassLoader.scala
index e75f14c..4ddebda 100644
--- a/stage1/CachingClassLoader.scala
+++ b/stage1/CachingClassLoader.scala
@@ -5,8 +5,13 @@ import scala.util.Try
trait CachingClassLoader extends ClassLoader{
def logger: Logger
- val cache = new KeyLockedLazyCache[String,Try[Class[_]]]( new ConcurrentHashMap, new ConcurrentHashMap, Some(logger) )
+ val cache = new KeyLockedLazyCache[String,Option[Class[_]]]( new ConcurrentHashMap, new ConcurrentHashMap, Some(logger) )
override def loadClass(name: String, resolve: Boolean) = {
- cache.get( name, Try(super.loadClass(name, resolve)) ).get
+ cache.get( name, Try(super.loadClass(name, resolve)).toOption ).getOrElse(null)
+ }
+ override def loadClass(name: String) = {
+ val _class = super.loadClass(name)
+ if(_class == null) throw new ClassNotFoundException(name)
+ else _class
}
}