blob: ec343f434745bb5fc5b095b9c48699542c72464f (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
package cbt
import java.net._
object ClassLoaderCache{
private val cache = NailgunLauncher.classLoaderCache
def get( classpath: ClassPath )(implicit logger: Logger): ClassLoader
= cache.synchronized{
val lib = new Stage1Lib(logger)
val key = classpath.strings.sorted.mkString(":")
if( cache.containsKey(key) ){
logger.resolver("CACHE HIT: "++key)
cache.get(key)
} else {
logger.resolver("CACHE MISS: "++key)
val cl = new cbt.URLClassLoader( classpath, ClassLoader.getSystemClassLoader )
cache.put( key, cl )
cl
}
}
def remove( classpath: ClassPath ) = {
val key = classpath.strings.sorted.mkString(":")
cache.remove( key )
}
}
|