aboutsummaryrefslogtreecommitdiff
path: root/stage1
diff options
context:
space:
mode:
authorChristopher Vogt <oss.nsp@cvogt.org>2016-04-02 14:46:12 -0400
committerChristopher Vogt <oss.nsp@cvogt.org>2016-04-02 14:51:10 -0400
commit81cdf3b38d0b8c89a814328e517b9023a0400549 (patch)
treec12a41354580ca877ac545825b45b1c83a7b9302 /stage1
parent9c03feba55b8705280990b7e39b19d43df612703 (diff)
downloadcbt-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.scala1
-rw-r--r--stage1/Stage1.scala2
-rw-r--r--stage1/URLClassLoader.scala2
-rw-r--r--stage1/resolver.scala4
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]