blob: e93b1a418e963915ba95d22c9be7369f4f081b77 (
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
package cbt
import java.net._
import scala.util.Try
case class URLClassLoader( classPath: ClassPath, parent: ClassLoader )( implicit val logger: Logger )
extends java.net.URLClassLoader(
classPath.strings.map( p => new URL("file:" ++ p) ).toArray,
parent
) with CachingClassLoader{
override def loadClass(name: String) = {
logger.log("classloader","loadClass " + name)
super.loadClass(name)
}
val id = Math.abs( new java.util.Random().nextInt )
override def toString = (
scala.Console.BLUE
++ getClass.getSimpleName ++ ":" ++ id.toString
++ scala.Console.RESET
++ "(\n"
++ (
getURLs.map(_.toString).sorted.mkString(",\n")
++ (
if(getParent() != ClassLoader.getSystemClassLoader().getParent())
",\n" ++ Option(getParent()).map(_.toString).getOrElse("null")
else ""
)
).split("\n").map(" "++_).mkString("\n")
++ "\n)"
)
}
/*
trait ClassLoaderLogging extends ClassLoader{
def logger: Logger
val prefix = s"[${getClass.getSimpleName}] "
val postfix = " in \name" ++ this.toString
override def loadClass(name: String, resolve: Boolean): Class[_] = {
//logger.resolver(prefix ++ s"loadClass($name, $resolve)" ++ postfix )
super.loadClass(name, resolve)
}
override def loadClass(name: String): Class[_] = {
//logger.resolver(prefix ++ s"loadClass($name)" ++ postfix )
super.loadClass(name)
}
override def findClass(name: String): Class[_] = {
//logger.resolver(prefix ++ s"findClass($name)" ++ postfix )
super.findClass(name)
}
}
*/
|