diff options
author | Christopher Vogt <oss.nsp@cvogt.org> | 2016-03-15 23:57:23 -0400 |
---|---|---|
committer | Christopher Vogt <oss.nsp@cvogt.org> | 2016-03-20 20:35:27 -0400 |
commit | 450fc5d3defcdc279cfeef0ae622ebe4f90988e2 (patch) | |
tree | dd2666f6c553e86804df83563e9568af7902a4fd | |
parent | eaa4889b40bfe1fcab5f88d87b5208632d736444 (diff) | |
download | cbt-450fc5d3defcdc279cfeef0ae622ebe4f90988e2.tar.gz cbt-450fc5d3defcdc279cfeef0ae622ebe4f90988e2.tar.bz2 cbt-450fc5d3defcdc279cfeef0ae622ebe4f90988e2.zip |
better toString for Java URLClassLoader. Minor enhancements
-rw-r--r-- | nailgun_launcher/NailgunLauncher.java | 25 | ||||
-rw-r--r-- | stage1/MultiClassLoader.scala | 2 | ||||
-rw-r--r-- | stage1/Stage1Lib.scala | 2 | ||||
-rw-r--r-- | stage1/URLClassLoader.scala | 3 | ||||
-rw-r--r-- | stage1/resolver.scala | 2 |
5 files changed, 23 insertions, 11 deletions
diff --git a/nailgun_launcher/NailgunLauncher.java b/nailgun_launcher/NailgunLauncher.java index 1eb39a8..cd9e499 100644 --- a/nailgun_launcher/NailgunLauncher.java +++ b/nailgun_launcher/NailgunLauncher.java @@ -46,13 +46,13 @@ public class NailgunLauncher{ if(!classLoaderCacheKeys.containsKey(library)){ Object libraryKey = new Object(); classLoaderCacheKeys.put(library,libraryKey); - ClassLoader libraryClassLoader = new URLClassLoader( new URL[]{ new URL("file:"+library) } ); + ClassLoader libraryClassLoader = new CbtURLClassLoader( new URL[]{ new URL("file:"+library) } ); classLoaderCacheValues.put(libraryKey, libraryClassLoader); String xml = CBT_HOME+"/bootstrap_scala/cache/"+SCALA_VERSION+"/scala-xml_2.11-1.0.5.jar"; Object xmlKey = new Object(); classLoaderCacheKeys.put(xml,xmlKey); - ClassLoader xmlClassLoader = new URLClassLoader( + ClassLoader xmlClassLoader = new CbtURLClassLoader( new URL[]{ new URL("file:"+xml) }, libraryClassLoader ); @@ -60,7 +60,7 @@ public class NailgunLauncher{ Object nailgunKey = new Object(); classLoaderCacheKeys.put(NAILGUN+TARGET,nailgunKey); - ClassLoader nailgunClassLoader = new URLClassLoader( + ClassLoader nailgunClassLoader = new CbtURLClassLoader( new URL[]{ new URL("file:"+NAILGUN+TARGET) }, xmlClassLoader ); @@ -85,10 +85,21 @@ public class NailgunLauncher{ } } -/* -protected class MyURLClassLoader extends URLClassLoader{ +class CbtURLClassLoader extends URLClassLoader{ public String toString(){ - return super.toString() + "(\n " + Arrays.toString(urls) + "\n)"; + return ( + super.toString() + + "(\n " + + Arrays.toString(getURLs()) + + ",\n " + + String.join("\n ",getParent().toString().split("\n")) + + "\n)" + ); + } + public CbtURLClassLoader(URL[] urls, ClassLoader parent){ + super(urls, parent); + } + public CbtURLClassLoader(URL[] urls){ + super(urls); } } -*/ diff --git a/stage1/MultiClassLoader.scala b/stage1/MultiClassLoader.scala index c6eb47a..e09f66a 100644 --- a/stage1/MultiClassLoader.scala +++ b/stage1/MultiClassLoader.scala @@ -23,7 +23,7 @@ class MultiClassLoader(parents: Seq[ClassLoader])(implicit val logger: Logger) e ++ "(" ++ ( if(parents.nonEmpty)( - "\n" ++ parents.map(_.toString).sorted.mkString(",\n").split("\n").map(" "++_).mkString("\n") ++ "\n" + "\n" ++ parents.map(_.toString).mkString(",\n").split("\n").map(" "++_).mkString("\n") ++ "\n" ) else "" ) ++")" ) diff --git a/stage1/Stage1Lib.scala b/stage1/Stage1Lib.scala index b3b0b23..0259cb0 100644 --- a/stage1/Stage1Lib.scala +++ b/stage1/Stage1Lib.scala @@ -110,7 +110,7 @@ class Stage1Lib( val logger: Logger ) extends BaseLib{ trapExitCode{ classLoader .loadClass(cls) - .getMethod( "main", scala.reflect.classTag[Array[String]].runtimeClass ) + .getMethod( "main", classOf[Array[String]] ) .invoke( null, args.toArray.asInstanceOf[AnyRef] ) ExitCode.Success } diff --git a/stage1/URLClassLoader.scala b/stage1/URLClassLoader.scala index 20e2d5d..e778124 100644 --- a/stage1/URLClassLoader.scala +++ b/stage1/URLClassLoader.scala @@ -8,9 +8,10 @@ case class URLClassLoader( classPath: ClassPath, parent: ClassLoader )( implicit classPath.strings.map( p => new URL("file:" ++ p) ).toArray, parent ) with CachingClassLoader{ + val id = Math.abs( new java.util.Random().nextInt ) override def toString = ( scala.Console.BLUE - ++ super.toString + ++ getClass.getSimpleName ++ ":" ++ id.toString ++ scala.Console.RESET ++ "(\n" ++ ( diff --git a/stage1/resolver.scala b/stage1/resolver.scala index 87135c8..e5cd027 100644 --- a/stage1/resolver.scala +++ b/stage1/resolver.scala @@ -205,8 +205,8 @@ case class BinaryDependency( path: File, dependencies: Seq[Dependency] )(implici case class Stage1Dependency()(implicit val logger: Logger) extends Dependency{ def updated = false // FIXME: think this through, might allow simplifications and/or optimizations override def canBeCached = false - private object classLoaderRecursionCache extends Cache[ClassLoader] /* + private object classLoaderRecursionCache extends Cache[ClassLoader] override def classLoaderRecursion(latest: Map[(String,String),Dependency], cache: ClassLoaderCache) = classLoaderRecursionCache{ println(System.currentTimeMillis) val cl = getClass.getClassLoader |