aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Vogt <oss.nsp@cvogt.org>2016-03-15 23:57:23 -0400
committerChristopher Vogt <oss.nsp@cvogt.org>2016-03-20 20:35:27 -0400
commit450fc5d3defcdc279cfeef0ae622ebe4f90988e2 (patch)
treedd2666f6c553e86804df83563e9568af7902a4fd
parenteaa4889b40bfe1fcab5f88d87b5208632d736444 (diff)
downloadcbt-450fc5d3defcdc279cfeef0ae622ebe4f90988e2.tar.gz
cbt-450fc5d3defcdc279cfeef0ae622ebe4f90988e2.tar.bz2
cbt-450fc5d3defcdc279cfeef0ae622ebe4f90988e2.zip
better toString for Java URLClassLoader. Minor enhancements
-rw-r--r--nailgun_launcher/NailgunLauncher.java25
-rw-r--r--stage1/MultiClassLoader.scala2
-rw-r--r--stage1/Stage1Lib.scala2
-rw-r--r--stage1/URLClassLoader.scala3
-rw-r--r--stage1/resolver.scala2
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