Removing remaining uses of structural types

This commit is contained in:
Mark Harrah 2009-10-16 22:43:41 -04:00
parent 0b4f24a301
commit 0273e9d2b1
3 changed files with 18 additions and 19 deletions

View File

@ -417,9 +417,6 @@ object ManageDependencies
newModule.addDependency(translated) newModule.addDependency(translated)
newModule newModule
} }
private def addConfigurations(configurations: Iterable[String], to: { def setConfs(c: Array[String]): AnyRef }): Unit =
to.setConfs(configurations.toList.toArray)
def install(ivyConfig: IvyConfiguration, from: String, to: String, validate: Boolean, overwrite: Boolean) = def install(ivyConfig: IvyConfiguration, from: String, to: String, validate: Boolean, overwrite: Boolean) =
{ {
def doInstall(ivy: Ivy, md: ModuleDescriptor, default: String) = def doInstall(ivy: Ivy, md: ModuleDescriptor, default: String) =

View File

@ -60,7 +60,7 @@ trait WebstartScalaProject extends ScalaProject
import options._ import options._
FileUtilities.createDirectories(webstartOutputDirectory :: webstartLibDirectory :: Nil, log) // ignore errors FileUtilities.createDirectories(webstartOutputDirectory :: webstartLibDirectory :: Nil, log) // ignore errors
verifyOptions(options) verifyOptions(options)
def relativize(jar: Path) = Path.relativize(webstartOutputDirectory ##, jar) getOrElse def relativize(jar: Path) = Path.relativize(webstartOutputDirectory ##, jar) getOrElse
error("Jar (" + jar + ") was not in webstart output directory (" + webstartOutputDirectory + ").") error("Jar (" + jar + ") was not in webstart output directory (" + webstartOutputDirectory + ").")
def signAndPack(jars: List[Path], targetDirectory: Path): Either[String, List[Path]] = def signAndPack(jars: List[Path], targetDirectory: Path): Either[String, List[Path]] =
@ -91,12 +91,12 @@ trait WebstartScalaProject extends ScalaProject
} }
} }
} }
import FileUtilities._ import FileUtilities._
val jars = (webstartLibraries +++ webstartExtraLibraries).get.filter(ClasspathUtilities.isArchive) val jars = (webstartLibraries +++ webstartExtraLibraries).get.filter(ClasspathUtilities.isArchive)
def process(jars: Iterable[Path]) = for(jar <- jars if jar.asFile.getName.endsWith(".jar")) yield relativize(jar) def process(jars: Iterable[Path]) = for(jar <- jars if jar.asFile.getName.endsWith(".jar")) yield relativize(jar)
thread(signAndPack(webstartMainJar :: Nil, webstartOutputDirectory)) { mainJars => thread(signAndPack(webstartMainJar :: Nil, webstartOutputDirectory)) { mainJars =>
thread(signAndPack(jars.toList, webstartLibDirectory)) { libJars => thread(signAndPack(jars.toList, webstartLibDirectory)) { libJars =>
writeXML(jnlpXML(jarResources(process(mainJars), process(libJars))), jnlpFile, log) orElse writeXML(jnlpXML(jarResources(process(mainJars), process(libJars))), jnlpFile, log) orElse
@ -114,7 +114,7 @@ trait WebstartScalaProject extends ScalaProject
/** Creates a default XML element for a JNLP file for the given resource.*/ /** Creates a default XML element for a JNLP file for the given resource.*/
protected def defaultElement(resource: WebstartJarResource): Elem = protected def defaultElement(resource: WebstartJarResource): Elem =
<jar href={resource.href} main={resource.isMain.toString}/> <jar href={resource.href} main={resource.isMain.toString}/>
} }
private class Jars(val gzippable: List[Path], val nonGzippable: List[Path]) extends NotNull private class Jars(val gzippable: List[Path], val nonGzippable: List[Path]) extends NotNull
{ {
@ -165,7 +165,7 @@ private object WebstartScalaProject
val signedJar = targetDirectory / jar.asFile.getName val signedJar = targetDirectory / jar.asFile.getName
val packedJar = packPath(signedJar) val packedJar = packPath(signedJar)
import signConfiguration._ import signConfiguration._
runOption("sign and pack200", List(packedJar, signedJar) from jar, log) { runOption("sign and pack200", List(packedJar, signedJar) from jar, log) {
log.debug("Applying pack200 compression and signing " + jar) log.debug("Applying pack200 compression and signing " + jar)
signAndPack(jar, signedJar, packedJar, alias, options, log) orElse signAndPack(jar, signedJar, packedJar, alias, options, log) orElse
@ -214,10 +214,10 @@ private object WebstartScalaProject
val xmlString = val xmlString =
{ {
import scala.xml.Utility import scala.xml.Utility
implicit def another28Hack(any: AnyRef): { def toXML(xml: Elem, stripComments: Boolean): String } = object WithToXML {
new { def toXML(xml: Elem, stripComments: Boolean) = Utility.toXML(xml).toString // this will only be called for 2.8, which defaults to stripComments= false, unlike 2.7
def toXML(xml: Elem, stripComments: Boolean) = Utility.toXML(xml).toString // this will only be called for 2.8, which defaults to stripComments= false, unlike 2.7 }
} implicit def another28Hack(any: AnyRef) = WithToXML
scala.xml.Utility.toXML(xml, false) // 2.8 doesn't have this method anymore, so the above implicit will kick in for 2.8 only scala.xml.Utility.toXML(xml, false) // 2.8 doesn't have this method anymore, so the above implicit will kick in for 2.8 only
} }
if(!outputPath.exists) if(!outputPath.exists)
@ -248,14 +248,14 @@ private object WebstartScalaProject
new WebstartJarResource(jar.asFile.getName, jar.relativePathString("/"), isMain) new WebstartJarResource(jar.asFile.getName, jar.relativePathString("/"), isMain)
private def jarResources(mainJars: Iterable[Path], libraries: Iterable[Path]): Seq[WebstartJarResource] = private def jarResources(mainJars: Iterable[Path], libraries: Iterable[Path]): Seq[WebstartJarResource] =
mainJars.map(jarResource(true)).toList ::: libraries.map(jarResource(false)).toList mainJars.map(jarResource(true)).toList ::: libraries.map(jarResource(false)).toList
/** True iff 'directory' is an ancestor (strictly) of 'check'.*/ /** True iff 'directory' is an ancestor (strictly) of 'check'.*/
private def isInDirectory(directory: Path, check: Path) = Path.relativize(directory, check).isDefined && directory != check private def isInDirectory(directory: Path, check: Path) = Path.relativize(directory, check).isDefined && directory != check
/** Checks the paths in the given options for validity. See the documentation for WebstartOptions.*/ /** Checks the paths in the given options for validity. See the documentation for WebstartOptions.*/
private def verifyOptions(options: WebstartOptions) private def verifyOptions(options: WebstartOptions)
{ {
import options._ import options._
require(isInDirectory(webstartOutputDirectory, webstartLibDirectory), require(isInDirectory(webstartOutputDirectory, webstartLibDirectory),
"Webstart dependency directory (" + webstartLibDirectory + ") must be a subdirectory of webstart output directory (" + "Webstart dependency directory (" + webstartLibDirectory + ") must be a subdirectory of webstart output directory (" +
webstartOutputDirectory + ").") webstartOutputDirectory + ").")
require(isInDirectory(webstartOutputDirectory, jnlpFile), "Webstart JNLP file output location (" + jnlpFile + require(isInDirectory(webstartOutputDirectory, jnlpFile), "Webstart JNLP file output location (" + jnlpFile +
@ -273,13 +273,13 @@ abstract class DefaultWebstartProject(val info: ProjectInfo) extends BasicWebsta
abstract class BasicWebstartProject extends BasicScalaProject with WebstartScalaProject with WebstartOptions with WebstartPaths abstract class BasicWebstartProject extends BasicScalaProject with WebstartScalaProject with WebstartOptions with WebstartPaths
{ {
def webstartSignConfiguration: Option[SignConfiguration] = None def webstartSignConfiguration: Option[SignConfiguration] = None
def webstartExtraLibraries = mainDependencies.scalaJars def webstartExtraLibraries = mainDependencies.scalaJars
def webstartLibraries = publicClasspath +++ jarsOfProjectDependencies def webstartLibraries = publicClasspath +++ jarsOfProjectDependencies
def webstartResources = descendents(jnlpResourcesPath ##, AllPassFilter) def webstartResources = descendents(jnlpResourcesPath ##, AllPassFilter)
def webstartPack200 = true def webstartPack200 = true
def webstartGzip = true def webstartGzip = true
override def packageAction = super.packageAction && webstartTask(this) override def packageAction = super.packageAction && webstartTask(this)
} }

View File

@ -151,10 +151,12 @@ private[sbt] class SpecsRunner(val log: Logger, val listeners: Seq[TestReportLis
private def reportSpecification(spec: Specification): SpecificationReportEvent = private def reportSpecification(spec: Specification): SpecificationReportEvent =
{ {
// this is for binary compatibility between specs 1.4.x and 1.5.0: the ancestor of Specification containing these two methods changed // this is for binary compatibility between specs 1.4.x and 1.5.0: the ancestor of Specification containing these two methods changed
val reflectedSpec: { def systems: Seq[Sus]; def subSpecifications: Seq[Specification] } = spec def reflectSeq[T](name: String) = classOf[Specification].getMethod(name).invoke(spec).asInstanceOf[Seq[T]]
val systems = reflectSeq[Sus]("systems")
val subSpecifications = reflectSeq[Specification]("subSpecifications")
return SpecificationReportEvent(spec.successes.size, spec.failures.size, spec.errors.size, spec.skipped.size, spec.pretty, return SpecificationReportEvent(spec.successes.size, spec.failures.size, spec.errors.size, spec.skipped.size, spec.pretty,
reportSystems(reflectedSpec.systems), reportSpecifications(reflectedSpec.subSpecifications)) reportSystems(systems), reportSpecifications(subSpecifications))
} }
private def reportSpecifications(specifications: Seq[Specification]): Seq[SpecificationReportEvent] = private def reportSpecifications(specifications: Seq[Specification]): Seq[SpecificationReportEvent] =
{ {