blob: 4ddebda0d8b240019711bde481b3ef48981c9149 (
plain) (
tree)
|
|
package cbt
import java.net._
import java.util.concurrent.ConcurrentHashMap
import scala.util.Try
trait CachingClassLoader extends ClassLoader{
def logger: 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)).toOption ).getOrElse(null)
}
override def loadClass(name: String) = {
val _class = super.loadClass(name)
if(_class == null) throw new ClassNotFoundException(name)
else _class
}
}
|