diff options
author | Christopher Vogt <oss.nsp@cvogt.org> | 2016-04-02 14:46:12 -0400 |
---|---|---|
committer | Christopher Vogt <oss.nsp@cvogt.org> | 2016-04-02 14:51:10 -0400 |
commit | 81cdf3b38d0b8c89a814328e517b9023a0400549 (patch) | |
tree | c12a41354580ca877ac545825b45b1c83a7b9302 /stage1 | |
parent | 9c03feba55b8705280990b7e39b19d43df612703 (diff) | |
download | cbt-81cdf3b38d0b8c89a814328e517b9023a0400549.tar.gz cbt-81cdf3b38d0b8c89a814328e517b9023a0400549.tar.bz2 cbt-81cdf3b38d0b8c89a814328e517b9023a0400549.zip |
Classloaders aren't referentially transparent, so we should not compare them structurally. (didn't cause any problem right now, but could some day)
Diffstat (limited to 'stage1')
-rw-r--r-- | stage1/MultiClassLoader.scala | 1 | ||||
-rw-r--r-- | stage1/Stage1.scala | 2 | ||||
-rw-r--r-- | stage1/URLClassLoader.scala | 2 | ||||
-rw-r--r-- | stage1/resolver.scala | 4 |
4 files changed, 5 insertions, 4 deletions
diff --git a/stage1/MultiClassLoader.scala b/stage1/MultiClassLoader.scala index e09f66a..5a93a63 100644 --- a/stage1/MultiClassLoader.scala +++ b/stage1/MultiClassLoader.scala @@ -3,6 +3,7 @@ import java.net._ import scala.util.Try import scala.collection.immutable.Seq +// do not make this a case class, required object identity equality class MultiClassLoader(parents: Seq[ClassLoader])(implicit val logger: Logger) extends ClassLoader with CachingClassLoader{ override def findClass(name: String) = { parents.find( parent => diff --git a/stage1/Stage1.scala b/stage1/Stage1.scala index be933d2..9524c45 100644 --- a/stage1/Stage1.scala +++ b/stage1/Stage1.scala @@ -83,7 +83,7 @@ object Stage1{ val cl = /*classLoaderCache.transient.get( (stage2Target +: deps.classpath).string,*/ - cbt.URLClassLoader( + new cbt.URLClassLoader( ClassPath(Seq(stage2Target)), classLoaderCache.persistent.get( deps.classpath.string, diff --git a/stage1/URLClassLoader.scala b/stage1/URLClassLoader.scala index e778124..9e96992 100644 --- a/stage1/URLClassLoader.scala +++ b/stage1/URLClassLoader.scala @@ -3,7 +3,7 @@ package cbt import java.net._ import scala.util.Try -case class URLClassLoader( classPath: ClassPath, parent: ClassLoader )( implicit val logger: Logger ) +class URLClassLoader( classPath: ClassPath, parent: ClassLoader )( implicit val logger: Logger ) extends java.net.URLClassLoader( classPath.strings.map( p => new URL("file:" ++ p) ).toArray, parent diff --git a/stage1/resolver.scala b/stage1/resolver.scala index 703ac18..c8d2ee4 100644 --- a/stage1/resolver.scala +++ b/stage1/resolver.scala @@ -123,10 +123,10 @@ abstract class Dependency{ val a = actual( this, latest ) cache.persistent.get( a.classpath.string, - cbt.URLClassLoader( a.exportedClasspath, dependencyClassLoader(latest, cache) ) + new cbt.URLClassLoader( a.exportedClasspath, dependencyClassLoader(latest, cache) ) ) } else { - cbt.URLClassLoader( exportedClasspath, dependencyClassLoader(latest, cache) ) + new cbt.URLClassLoader( exportedClasspath, dependencyClassLoader(latest, cache) ) } } private object classLoaderCache extends Cache[ClassLoader] |