aboutsummaryrefslogtreecommitdiff
path: root/stage1/CachingClassLoader.scala
blob: e75f14c6ae188df197d834ab5e10a81aa23c80f9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
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,Try[Class[_]]]( new ConcurrentHashMap, new ConcurrentHashMap, Some(logger) )
  override def loadClass(name: String, resolve: Boolean) = {
    cache.get( name, Try(super.loadClass(name, resolve)) ).get
  }
}