aboutsummaryrefslogtreecommitdiff
path: root/stage1
diff options
context:
space:
mode:
authorChristopher Vogt <oss.nsp@cvogt.org>2017-02-09 21:38:48 -0500
committerChristopher Vogt <oss.nsp@cvogt.org>2017-02-09 22:58:10 -0500
commitf42d50ab33a829322618181375cb6c5f2e71118a (patch)
tree5013e17d4517256a9586e58f73f763996559565a /stage1
parent75092dd02fb76a6607f2aaa8f0dc04b2a88699b4 (diff)
downloadcbt-f42d50ab33a829322618181375cb6c5f2e71118a.tar.gz
cbt-f42d50ab33a829322618181375cb6c5f2e71118a.tar.bz2
cbt-f42d50ab33a829322618181375cb6c5f2e71118a.zip
various smaller changes
Diffstat (limited to 'stage1')
-rw-r--r--stage1/KeyLockedLazyCache.scala8
-rw-r--r--stage1/Stage1Lib.scala5
-rw-r--r--stage1/resolver.scala5
3 files changed, 13 insertions, 5 deletions
diff --git a/stage1/KeyLockedLazyCache.scala b/stage1/KeyLockedLazyCache.scala
index 2047b81..aac32a3 100644
--- a/stage1/KeyLockedLazyCache.scala
+++ b/stage1/KeyLockedLazyCache.scala
@@ -10,7 +10,11 @@ final private[cbt] class KeyLockedLazyCache[T <: AnyRef](
val hashMap: java.util.Map[AnyRef,AnyRef],
logger: Option[Logger]
){
+ final val seen = new ThreadLocal[collection.mutable.Set[AnyRef]](){
+ override protected def initialValue = collection.mutable.Set[AnyRef]();
+ }
def get( key: AnyRef, value: => T ): T = {
+ seen.get.add( key );
val lockableKey = hashMap.synchronized{
if( ! (hashMap containsKey key) ){
val lockableKey = new LockableKey
@@ -35,6 +39,10 @@ final private[cbt] class KeyLockedLazyCache[T <: AnyRef](
}
}
def update( key: AnyRef, value: T ): T = {
+ assert(
+ !seen.get.contains( key ),
+ "Thread tries to update cache key after observing it: " + key
+ )
val lockableKey = hashMap get key
lockableKey.synchronized{
hashMap.put( lockableKey, value )
diff --git a/stage1/Stage1Lib.scala b/stage1/Stage1Lib.scala
index ad4b2d0..f73995e 100644
--- a/stage1/Stage1Lib.scala
+++ b/stage1/Stage1Lib.scala
@@ -100,7 +100,7 @@ class Stage1Lib( logger: Logger ) extends BaseLib{
trapExitCode{
val c = classLoader.loadClass(cls)
val m = c.getMethod( "main", classOf[Array[String]] )
- val instance =
+ val instance =
if(!fakeInstance) null else c.newInstance
assert(
fakeInstance || (m.getModifiers & java.lang.reflect.Modifier.STATIC) > 0,
@@ -421,8 +421,7 @@ class Stage1Lib( logger: Logger ) extends BaseLib{
val dependencies = dependency.dependencies
val dependencyClassLoader: ClassLoader = {
if( dependency.dependencies.isEmpty ){
- // wrap for caching
- new cbt.URLClassLoader( ClassPath(), ClassLoader.getSystemClassLoader().getParent() )
+ NailgunLauncher.jdkClassLoader
} else if( dependencies.size == 1 ){
classLoaderRecursion( dependencies.head, latest, cache )
} else{
diff --git a/stage1/resolver.scala b/stage1/resolver.scala
index 4a39d14..e6e4588 100644
--- a/stage1/resolver.scala
+++ b/stage1/resolver.scala
@@ -140,6 +140,7 @@ case class Dependencies( dependencies: Seq[Dependency] )(implicit val logger: Lo
def moduleKey = this.getClass.getName ++ "(" ++ dependencies.map(_.moduleKey).mkString(", ") ++ ")"
def targetClasspath = ClassPath()
def exportedClasspath = ClassPath()
+ override def show: String = this.getClass.getSimpleName + "( " + dependencies.map(_.show).mkString(", ") + " )"
}
case class PostBuildDependency(target: File, _dependencies: Seq[DependencyImplementation])(implicit val logger: Logger, val transientCache: java.util.Map[AnyRef,AnyRef]) extends DependencyImplementation{
@@ -223,13 +224,13 @@ case class BoundMavenDependency(
version != "" && version != null && !version.startsWith(" ") && !version.endsWith(" "),
s"not a valid version: '$version'"
)
- override def show: String = this.getClass.getSimpleName ++ "(" ++ mavenDependency.serialize ++ ")"
+ override def show: String = this.getClass.getSimpleName ++ "(" ++ mavenDependency.serialize ++ ")"
override final lazy val lastModified = classpath.strings.map(new File(_).lastModified).max
private val groupPath = groupId.split("\\.").mkString("/")
protected[cbt] def basePath(useClassifier: Boolean) = s"/$groupPath/$artifactId/$version/$artifactId-$version" ++ (if (useClassifier) classifier.name.map("-"++_).getOrElse("") else "")
-
+
//private def coursierJarFile = userHome++"/.coursier/cache/v1/https/repo1.maven.org/maven2"++basePath++".jar"
def exportedJars = Seq( jar )