diff options
author | Christopher Vogt <oss.nsp@cvogt.org> | 2016-03-11 22:36:31 -0500 |
---|---|---|
committer | Christopher Vogt <oss.nsp@cvogt.org> | 2016-03-11 22:36:31 -0500 |
commit | 984a5f1f0f27d191695feeb3410968f2f35f8fc8 (patch) | |
tree | 56fd09257ebf8ff020fbb6a86c1ca529fa548da7 /stage1/ClassLoaderCache.scala | |
parent | b408b441569dc165f4d41b048ff64253695a491d (diff) | |
download | cbt-984a5f1f0f27d191695feeb3410968f2f35f8fc8.tar.gz cbt-984a5f1f0f27d191695feeb3410968f2f35f8fc8.tar.bz2 cbt-984a5f1f0f27d191695feeb3410968f2f35f8fc8.zip |
Split ClassLoader classes into separate files and a few fixes
Diffstat (limited to 'stage1/ClassLoaderCache.scala')
-rw-r--r-- | stage1/ClassLoaderCache.scala | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/stage1/ClassLoaderCache.scala b/stage1/ClassLoaderCache.scala new file mode 100644 index 0000000..ec343f4 --- /dev/null +++ b/stage1/ClassLoaderCache.scala @@ -0,0 +1,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 ) + } +} |