From 984a5f1f0f27d191695feeb3410968f2f35f8fc8 Mon Sep 17 00:00:00 2001 From: Christopher Vogt Date: Fri, 11 Mar 2016 22:36:31 -0500 Subject: Split ClassLoader classes into separate files and a few fixes --- stage1/ClassLoaderCache.scala | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 stage1/ClassLoaderCache.scala (limited to 'stage1/ClassLoaderCache.scala') 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 ) + } +} -- cgit v1.2.3