From d078dc4772de3f892a1633a3bc3be0440b121097 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Ferreira?= Date: Wed, 29 May 2024 14:37:50 +0100 Subject: [PATCH 1/5] Artifact --- .../sbt/librarymanagement/Artifact.scala | 12 +++++------ .../librarymanagement/ArtifactFormats.scala | 2 +- .../main/contraband/librarymanagement.json | 2 +- .../sbt/librarymanagement/ArtifactExtra.scala | 21 ++++++++++--------- .../sbt/librarymanagement/ModuleIDExtra.scala | 2 +- .../sbt/internal/librarymanagement/Ivy.scala | 2 +- .../librarymanagement/IvyRetrieve.scala | 2 +- .../DMSerializationSpec.scala | 2 +- 8 files changed, 23 insertions(+), 22 deletions(-) diff --git a/core/src/main/contraband-scala/sbt/librarymanagement/Artifact.scala b/core/src/main/contraband-scala/sbt/librarymanagement/Artifact.scala index 24764d0c..e7d03304 100644 --- a/core/src/main/contraband-scala/sbt/librarymanagement/Artifact.scala +++ b/core/src/main/contraband-scala/sbt/librarymanagement/Artifact.scala @@ -10,13 +10,13 @@ final class Artifact private ( val extension: String, val classifier: Option[String], val configurations: Vector[sbt.librarymanagement.ConfigRef], - val url: Option[java.net.URL], + val url: Option[java.net.URI], val extraAttributes: Map[String, String], val checksum: Option[sbt.librarymanagement.Checksum], val allowInsecureProtocol: Boolean) extends sbt.librarymanagement.ArtifactExtra with Serializable { private[sbt] def validateProtocol(logger: sbt.util.Logger): Boolean = Resolver.validateArtifact(this, logger) private def this(name: String) = this(name, Artifact.DefaultType, Artifact.DefaultExtension, None, Vector.empty, None, Map.empty, None, false) - private def this(name: String, `type`: String, extension: String, classifier: Option[String], configurations: Vector[sbt.librarymanagement.ConfigRef], url: Option[java.net.URL], extraAttributes: Map[String, String], checksum: Option[sbt.librarymanagement.Checksum]) = this(name, `type`, extension, classifier, configurations, url, extraAttributes, checksum, false) + private def this(name: String, `type`: String, extension: String, classifier: Option[String], configurations: Vector[sbt.librarymanagement.ConfigRef], url: Option[java.net.URI], extraAttributes: Map[String, String], checksum: Option[sbt.librarymanagement.Checksum]) = this(name, `type`, extension, classifier, configurations, url, extraAttributes, checksum, false) override def equals(o: Any): Boolean = this.eq(o.asInstanceOf[AnyRef]) || (o match { case x: Artifact => (this.name == x.name) && (this.`type` == x.`type`) && (this.extension == x.extension) && (this.classifier == x.classifier) && (this.configurations == x.configurations) && (this.url == x.url) && (this.extraAttributes == x.extraAttributes) && (this.checksum == x.checksum) && (this.allowInsecureProtocol == x.allowInsecureProtocol) @@ -28,7 +28,7 @@ final class Artifact private ( override def toString: String = { "Artifact(" + name + ", " + `type` + ", " + extension + ", " + classifier + ", " + configurations + ", " + url + ", " + extraAttributes + ", " + checksum + ", " + allowInsecureProtocol + ")" } - private[this] def copy(name: String = name, `type`: String = `type`, extension: String = extension, classifier: Option[String] = classifier, configurations: Vector[sbt.librarymanagement.ConfigRef] = configurations, url: Option[java.net.URL] = url, extraAttributes: Map[String, String] = extraAttributes, checksum: Option[sbt.librarymanagement.Checksum] = checksum, allowInsecureProtocol: Boolean = allowInsecureProtocol): Artifact = { + private[this] def copy(name: String = name, `type`: String = `type`, extension: String = extension, classifier: Option[String] = classifier, configurations: Vector[sbt.librarymanagement.ConfigRef] = configurations, url: Option[java.net.URI] = url, extraAttributes: Map[String, String] = extraAttributes, checksum: Option[sbt.librarymanagement.Checksum] = checksum, allowInsecureProtocol: Boolean = allowInsecureProtocol): Artifact = { new Artifact(name, `type`, extension, classifier, configurations, url, extraAttributes, checksum, allowInsecureProtocol) } def withName(name: String): Artifact = { @@ -46,7 +46,7 @@ final class Artifact private ( def withConfigurations(configurations: Vector[sbt.librarymanagement.ConfigRef]): Artifact = { copy(configurations = configurations) } - def withUrl(url: Option[java.net.URL]): Artifact = { + def withUrl(url: Option[java.net.URI]): Artifact = { copy(url = url) } def withExtraAttributes(extraAttributes: Map[String, String]): Artifact = { @@ -62,6 +62,6 @@ final class Artifact private ( object Artifact extends sbt.librarymanagement.ArtifactFunctions { def apply(name: String): Artifact = new Artifact(name) - def apply(name: String, `type`: String, extension: String, classifier: Option[String], configurations: Vector[sbt.librarymanagement.ConfigRef], url: Option[java.net.URL], extraAttributes: Map[String, String], checksum: Option[sbt.librarymanagement.Checksum]): Artifact = new Artifact(name, `type`, extension, classifier, configurations, url, extraAttributes, checksum) - def apply(name: String, `type`: String, extension: String, classifier: Option[String], configurations: Vector[sbt.librarymanagement.ConfigRef], url: Option[java.net.URL], extraAttributes: Map[String, String], checksum: Option[sbt.librarymanagement.Checksum], allowInsecureProtocol: Boolean): Artifact = new Artifact(name, `type`, extension, classifier, configurations, url, extraAttributes, checksum, allowInsecureProtocol) + def apply(name: String, `type`: String, extension: String, classifier: Option[String], configurations: Vector[sbt.librarymanagement.ConfigRef], url: Option[java.net.URI], extraAttributes: Map[String, String], checksum: Option[sbt.librarymanagement.Checksum]): Artifact = new Artifact(name, `type`, extension, classifier, configurations, url, extraAttributes, checksum) + def apply(name: String, `type`: String, extension: String, classifier: Option[String], configurations: Vector[sbt.librarymanagement.ConfigRef], url: Option[java.net.URI], extraAttributes: Map[String, String], checksum: Option[sbt.librarymanagement.Checksum], allowInsecureProtocol: Boolean): Artifact = new Artifact(name, `type`, extension, classifier, configurations, url, extraAttributes, checksum, allowInsecureProtocol) } diff --git a/core/src/main/contraband-scala/sbt/librarymanagement/ArtifactFormats.scala b/core/src/main/contraband-scala/sbt/librarymanagement/ArtifactFormats.scala index ae951d63..6b92852c 100644 --- a/core/src/main/contraband-scala/sbt/librarymanagement/ArtifactFormats.scala +++ b/core/src/main/contraband-scala/sbt/librarymanagement/ArtifactFormats.scala @@ -16,7 +16,7 @@ implicit lazy val ArtifactFormat: JsonFormat[sbt.librarymanagement.Artifact] = n val extension = unbuilder.readField[String]("extension") val classifier = unbuilder.readField[Option[String]]("classifier") val configurations = unbuilder.readField[Vector[sbt.librarymanagement.ConfigRef]]("configurations") - val url = unbuilder.readField[Option[java.net.URL]]("url") + val url = unbuilder.readField[Option[java.net.URI]]("url") val extraAttributes = unbuilder.readField[Map[String, String]]("extraAttributes") val checksum = unbuilder.readField[Option[sbt.librarymanagement.Checksum]]("checksum") val allowInsecureProtocol = unbuilder.readField[Boolean]("allowInsecureProtocol") diff --git a/core/src/main/contraband/librarymanagement.json b/core/src/main/contraband/librarymanagement.json index 89d20007..8f87d704 100644 --- a/core/src/main/contraband/librarymanagement.json +++ b/core/src/main/contraband/librarymanagement.json @@ -141,7 +141,7 @@ { "name": "extension", "type": "String", "default": "Artifact.DefaultExtension", "since": "0.0.1" }, { "name": "classifier", "type": "Option[String]", "default": "None", "since": "0.0.1" }, { "name": "configurations", "type": "sbt.librarymanagement.ConfigRef*", "default": "Vector.empty", "since": "0.0.1" }, - { "name": "url", "type": "Option[java.net.URL]", "default": "None", "since": "0.0.1" }, + { "name": "url", "type": "Option[java.net.URI]", "default": "None", "since": "0.0.1" }, { "name": "extraAttributes", "type": "Map[String, String]", "default": "Map.empty", "since": "0.0.1" }, { "name": "checksum", "type": "Option[sbt.librarymanagement.Checksum]", "default": "None", "since": "0.0.1" }, { "name": "allowInsecureProtocol", "type": "Boolean", "default": "false", "since": "1.3.0" } diff --git a/core/src/main/scala/sbt/librarymanagement/ArtifactExtra.scala b/core/src/main/scala/sbt/librarymanagement/ArtifactExtra.scala index 63a992d2..411f486a 100644 --- a/core/src/main/scala/sbt/librarymanagement/ArtifactExtra.scala +++ b/core/src/main/scala/sbt/librarymanagement/ArtifactExtra.scala @@ -4,7 +4,7 @@ package sbt.librarymanagement import java.io.File -import java.net.URL +import java.net.URI private[librarymanagement] abstract class ArtifactExtra { def extraAttributes: Map[String, String] @@ -26,15 +26,15 @@ private[librarymanagement] abstract class ArtifactFunctions { Artifact(name, `type`, extension, None, Vector.empty, None) def apply(name: String, `type`: String, extension: String, classifier: String): Artifact = Artifact(name, `type`, extension, Some(classifier), Vector.empty, None) - def apply(name: String, url: URL): Artifact = Artifact(name, url, false) - def apply(name: String, url: URL, allowInsecureProtocol: Boolean): Artifact = + def apply(name: String, uri: URI): Artifact = Artifact(name, uri, false) + def apply(name: String, uri: URI, allowInsecureProtocol: Boolean): Artifact = Artifact( name, - extract(url, DefaultType), - extract(url, DefaultExtension), + extract(uri, DefaultType), + extract(uri, DefaultExtension), None, Vector.empty, - Some(url), + Some(uri), Map.empty, None, allowInsecureProtocol @@ -47,8 +47,9 @@ private[librarymanagement] abstract class ArtifactFunctions { extension: String, classifier: Option[String], configurations: Vector[ConfigRef], - url: Option[URL] - ): Artifact = Artifact(name, `type`, extension, classifier, configurations, url, empty, None) + uri: Option[URI] + ): Artifact = + Artifact(name, `type`, extension, classifier, configurations, uri, empty, None) val DefaultExtension = "jar" val DefaultType = "jar" @@ -78,7 +79,7 @@ private[librarymanagement] abstract class ArtifactFunctions { assert(DefaultDocTypes contains DocType) assert(DefaultSourceTypes contains SourceType) - def extract(url: URL, default: String): String = extract(url.toString, default) + def extract(uri: URI, default: String): String = extract(uri.toString, default) def extract(name: String, default: String): String = { val i = name.lastIndexOf('.') if (i >= 0) @@ -96,7 +97,7 @@ private[librarymanagement] abstract class ArtifactFunctions { extract(name, DefaultExtension), None, Vector.empty, - Some(file.toURI.toURL) + Some(file.toURI) ) } def artifactName(scalaVersion: ScalaVersion, module: ModuleID, artifact: Artifact): String = { diff --git a/core/src/main/scala/sbt/librarymanagement/ModuleIDExtra.scala b/core/src/main/scala/sbt/librarymanagement/ModuleIDExtra.scala index f62f83d1..4d980339 100644 --- a/core/src/main/scala/sbt/librarymanagement/ModuleIDExtra.scala +++ b/core/src/main/scala/sbt/librarymanagement/ModuleIDExtra.scala @@ -133,7 +133,7 @@ private[librarymanagement] abstract class ModuleIDExtra { * It is not included in published metadata. */ def from(url: String, allowInsecureProtocol: Boolean): ModuleID = - artifacts(Artifact(name, new URI(url).toURL, allowInsecureProtocol)) + artifacts(Artifact(name, new URI(url), allowInsecureProtocol)) /** Adds a dependency on the artifact for this module with classifier `c`. */ def classifier(c: String): ModuleID = artifacts(Artifact(name, c)) diff --git a/ivy/src/main/scala/sbt/internal/librarymanagement/Ivy.scala b/ivy/src/main/scala/sbt/internal/librarymanagement/Ivy.scala index 97bc4014..8c635090 100644 --- a/ivy/src/main/scala/sbt/internal/librarymanagement/Ivy.scala +++ b/ivy/src/main/scala/sbt/internal/librarymanagement/Ivy.scala @@ -1000,7 +1000,7 @@ private[sbt] object IvySbt { name, `type`, extension, - url.orNull, + url.map(_.toURL).orNull, extraMap ) copyConfigurations(artifact, (ref: ConfigRef) => { ivyArtifact.addConfiguration(ref.name) }) diff --git a/ivy/src/main/scala/sbt/internal/librarymanagement/IvyRetrieve.scala b/ivy/src/main/scala/sbt/internal/librarymanagement/IvyRetrieve.scala index a1784ffd..0560036d 100644 --- a/ivy/src/main/scala/sbt/internal/librarymanagement/IvyRetrieve.scala +++ b/ivy/src/main/scala/sbt/internal/librarymanagement/IvyRetrieve.scala @@ -229,7 +229,7 @@ object IvyRetrieve { getConfigurations.toVector map { (c: String) => ConfigRef(c) }, - Option(getUrl) + Option(getUrl).map(_.toURI) ) } diff --git a/ivy/src/test/scala/sbt/internal/librarymanagement/DMSerializationSpec.scala b/ivy/src/test/scala/sbt/internal/librarymanagement/DMSerializationSpec.scala index bc035efa..b380800f 100644 --- a/ivy/src/test/scala/sbt/internal/librarymanagement/DMSerializationSpec.scala +++ b/ivy/src/test/scala/sbt/internal/librarymanagement/DMSerializationSpec.scala @@ -43,7 +43,7 @@ object DMSerializationSpec extends BasicTestSuite { } test("""Artifact("foo", url("http://example.com/")) should roundtrip""") { - roundtrip(Artifact("foo", new URI("http://example.com/").toURL)) + roundtrip(Artifact("foo", new URI("http://example.com/"))) } test("""Artifact("foo").extra(("key", "value")) should roundtrip""") { From 03f0288ae64dea773ac012828c64d295ab87496a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Ferreira?= Date: Wed, 29 May 2024 14:52:39 +0100 Subject: [PATCH 2/5] Developer --- .../sbt/librarymanagement/Developer.scala | 8 ++++---- .../sbt/librarymanagement/DeveloperFormats.scala | 2 +- core/src/main/contraband/librarymanagement.json | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/core/src/main/contraband-scala/sbt/librarymanagement/Developer.scala b/core/src/main/contraband-scala/sbt/librarymanagement/Developer.scala index fc52d4e7..0afb34a0 100644 --- a/core/src/main/contraband-scala/sbt/librarymanagement/Developer.scala +++ b/core/src/main/contraband-scala/sbt/librarymanagement/Developer.scala @@ -8,7 +8,7 @@ final class Developer private ( val id: String, val name: String, val email: String, - val url: java.net.URL) extends Serializable { + val url: java.net.URI) extends Serializable { @@ -22,7 +22,7 @@ final class Developer private ( override def toString: String = { "Developer(" + id + ", " + name + ", " + email + ", " + url + ")" } - private[this] def copy(id: String = id, name: String = name, email: String = email, url: java.net.URL = url): Developer = { + private[this] def copy(id: String = id, name: String = name, email: String = email, url: java.net.URI = url): Developer = { new Developer(id, name, email, url) } def withId(id: String): Developer = { @@ -34,11 +34,11 @@ final class Developer private ( def withEmail(email: String): Developer = { copy(email = email) } - def withUrl(url: java.net.URL): Developer = { + def withUrl(url: java.net.URI): Developer = { copy(url = url) } } object Developer { - def apply(id: String, name: String, email: String, url: java.net.URL): Developer = new Developer(id, name, email, url) + def apply(id: String, name: String, email: String, url: java.net.URI): Developer = new Developer(id, name, email, url) } diff --git a/core/src/main/contraband-scala/sbt/librarymanagement/DeveloperFormats.scala b/core/src/main/contraband-scala/sbt/librarymanagement/DeveloperFormats.scala index 381013ab..3a7cdbf6 100644 --- a/core/src/main/contraband-scala/sbt/librarymanagement/DeveloperFormats.scala +++ b/core/src/main/contraband-scala/sbt/librarymanagement/DeveloperFormats.scala @@ -14,7 +14,7 @@ implicit lazy val DeveloperFormat: JsonFormat[sbt.librarymanagement.Developer] = val id = unbuilder.readField[String]("id") val name = unbuilder.readField[String]("name") val email = unbuilder.readField[String]("email") - val url = unbuilder.readField[java.net.URL]("url") + val url = unbuilder.readField[java.net.URI]("url") unbuilder.endObject() sbt.librarymanagement.Developer(id, name, email, url) case None => diff --git a/core/src/main/contraband/librarymanagement.json b/core/src/main/contraband/librarymanagement.json index 8f87d704..6954a4f5 100644 --- a/core/src/main/contraband/librarymanagement.json +++ b/core/src/main/contraband/librarymanagement.json @@ -244,7 +244,7 @@ { "name": "id", "type": "String" }, { "name": "name", "type": "String" }, { "name": "email", "type": "String" }, - { "name": "url", "type": "java.net.URL" } + { "name": "url", "type": "java.net.URI" } ] }, { From b00e24274478862db3b070321a4957996508b9db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Ferreira?= Date: Wed, 29 May 2024 17:39:08 +0100 Subject: [PATCH 3/5] ScmInfo --- .../sbt/librarymanagement/ScmInfo.scala | 14 +++++++------- .../sbt/librarymanagement/ScmInfoFormats.scala | 2 +- core/src/main/contraband/librarymanagement.json | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/core/src/main/contraband-scala/sbt/librarymanagement/ScmInfo.scala b/core/src/main/contraband-scala/sbt/librarymanagement/ScmInfo.scala index 4fadcae1..f91a5bbf 100644 --- a/core/src/main/contraband-scala/sbt/librarymanagement/ScmInfo.scala +++ b/core/src/main/contraband-scala/sbt/librarymanagement/ScmInfo.scala @@ -6,11 +6,11 @@ package sbt.librarymanagement /** Basic SCM information for a project module */ final class ScmInfo private ( - val browseUrl: java.net.URL, + val browseUrl: java.net.URI, val connection: String, val devConnection: Option[String]) extends Serializable { - private def this(browseUrl: java.net.URL, connection: String) = this(browseUrl, connection, None) + private def this(browseUrl: java.net.URI, connection: String) = this(browseUrl, connection, None) override def equals(o: Any): Boolean = this.eq(o.asInstanceOf[AnyRef]) || (o match { case x: ScmInfo => (this.browseUrl == x.browseUrl) && (this.connection == x.connection) && (this.devConnection == x.devConnection) @@ -22,10 +22,10 @@ final class ScmInfo private ( override def toString: String = { "ScmInfo(" + browseUrl + ", " + connection + ", " + devConnection + ")" } - private[this] def copy(browseUrl: java.net.URL = browseUrl, connection: String = connection, devConnection: Option[String] = devConnection): ScmInfo = { + private[this] def copy(browseUrl: java.net.URI = browseUrl, connection: String = connection, devConnection: Option[String] = devConnection): ScmInfo = { new ScmInfo(browseUrl, connection, devConnection) } - def withBrowseUrl(browseUrl: java.net.URL): ScmInfo = { + def withBrowseUrl(browseUrl: java.net.URI): ScmInfo = { copy(browseUrl = browseUrl) } def withConnection(connection: String): ScmInfo = { @@ -40,7 +40,7 @@ final class ScmInfo private ( } object ScmInfo { - def apply(browseUrl: java.net.URL, connection: String): ScmInfo = new ScmInfo(browseUrl, connection) - def apply(browseUrl: java.net.URL, connection: String, devConnection: Option[String]): ScmInfo = new ScmInfo(browseUrl, connection, devConnection) - def apply(browseUrl: java.net.URL, connection: String, devConnection: String): ScmInfo = new ScmInfo(browseUrl, connection, Option(devConnection)) + def apply(browseUrl: java.net.URI, connection: String): ScmInfo = new ScmInfo(browseUrl, connection) + def apply(browseUrl: java.net.URI, connection: String, devConnection: Option[String]): ScmInfo = new ScmInfo(browseUrl, connection, devConnection) + def apply(browseUrl: java.net.URI, connection: String, devConnection: String): ScmInfo = new ScmInfo(browseUrl, connection, Option(devConnection)) } diff --git a/core/src/main/contraband-scala/sbt/librarymanagement/ScmInfoFormats.scala b/core/src/main/contraband-scala/sbt/librarymanagement/ScmInfoFormats.scala index bacca95d..70e7f40f 100644 --- a/core/src/main/contraband-scala/sbt/librarymanagement/ScmInfoFormats.scala +++ b/core/src/main/contraband-scala/sbt/librarymanagement/ScmInfoFormats.scala @@ -11,7 +11,7 @@ implicit lazy val ScmInfoFormat: JsonFormat[sbt.librarymanagement.ScmInfo] = new __jsOpt match { case Some(__js) => unbuilder.beginObject(__js) - val browseUrl = unbuilder.readField[java.net.URL]("browseUrl") + val browseUrl = unbuilder.readField[java.net.URI]("browseUrl") val connection = unbuilder.readField[String]("connection") val devConnection = unbuilder.readField[Option[String]]("devConnection") unbuilder.endObject() diff --git a/core/src/main/contraband/librarymanagement.json b/core/src/main/contraband/librarymanagement.json index 6954a4f5..42de1b0a 100644 --- a/core/src/main/contraband/librarymanagement.json +++ b/core/src/main/contraband/librarymanagement.json @@ -728,7 +728,7 @@ "type": "record", "doc": "Basic SCM information for a project module", "fields": [ - { "name": "browseUrl", "type": "java.net.URL" }, + { "name": "browseUrl", "type": "java.net.URI" }, { "name": "connection", "type": "String" }, { "name": "devConnection", "type": "String?", "default": "None", "since": "0.0.1" } ] From cd393bb3183c63d8c8288ccede6b5afe45cbf7a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Ferreira?= Date: Wed, 29 May 2024 17:42:23 +0100 Subject: [PATCH 4/5] ModuleInfo --- .../sbt/librarymanagement/ModuleInfo.scala | 16 ++++++++-------- .../librarymanagement/ModuleInfoFormats.scala | 6 +++--- core/src/main/contraband/librarymanagement.json | 6 +++--- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/core/src/main/contraband-scala/sbt/librarymanagement/ModuleInfo.scala b/core/src/main/contraband-scala/sbt/librarymanagement/ModuleInfo.scala index 383a144e..46f2d6f7 100644 --- a/core/src/main/contraband-scala/sbt/librarymanagement/ModuleInfo.scala +++ b/core/src/main/contraband-scala/sbt/librarymanagement/ModuleInfo.scala @@ -8,11 +8,11 @@ package sbt.librarymanagement final class ModuleInfo private ( val nameFormal: String, val description: String, - val homepage: Option[java.net.URL], + val homepage: Option[java.net.URI], val startYear: Option[Int], - val licenses: Vector[scala.Tuple2[String, java.net.URL]], + val licenses: Vector[scala.Tuple2[String, java.net.URI]], val organizationName: String, - val organizationHomepage: Option[java.net.URL], + val organizationHomepage: Option[java.net.URI], val scmInfo: Option[sbt.librarymanagement.ScmInfo], val developers: Vector[sbt.librarymanagement.Developer]) extends Serializable { @@ -28,7 +28,7 @@ final class ModuleInfo private ( override def toString: String = { "ModuleInfo(" + nameFormal + ", " + description + ", " + homepage + ", " + startYear + ", " + licenses + ", " + organizationName + ", " + organizationHomepage + ", " + scmInfo + ", " + developers + ")" } - private[this] def copy(nameFormal: String = nameFormal, description: String = description, homepage: Option[java.net.URL] = homepage, startYear: Option[Int] = startYear, licenses: Vector[scala.Tuple2[String, java.net.URL]] = licenses, organizationName: String = organizationName, organizationHomepage: Option[java.net.URL] = organizationHomepage, scmInfo: Option[sbt.librarymanagement.ScmInfo] = scmInfo, developers: Vector[sbt.librarymanagement.Developer] = developers): ModuleInfo = { + private[this] def copy(nameFormal: String = nameFormal, description: String = description, homepage: Option[java.net.URI] = homepage, startYear: Option[Int] = startYear, licenses: Vector[scala.Tuple2[String, java.net.URI]] = licenses, organizationName: String = organizationName, organizationHomepage: Option[java.net.URI] = organizationHomepage, scmInfo: Option[sbt.librarymanagement.ScmInfo] = scmInfo, developers: Vector[sbt.librarymanagement.Developer] = developers): ModuleInfo = { new ModuleInfo(nameFormal, description, homepage, startYear, licenses, organizationName, organizationHomepage, scmInfo, developers) } def withNameFormal(nameFormal: String): ModuleInfo = { @@ -37,19 +37,19 @@ final class ModuleInfo private ( def withDescription(description: String): ModuleInfo = { copy(description = description) } - def withHomepage(homepage: Option[java.net.URL]): ModuleInfo = { + def withHomepage(homepage: Option[java.net.URI]): ModuleInfo = { copy(homepage = homepage) } def withStartYear(startYear: Option[Int]): ModuleInfo = { copy(startYear = startYear) } - def withLicenses(licenses: Vector[scala.Tuple2[String, java.net.URL]]): ModuleInfo = { + def withLicenses(licenses: Vector[scala.Tuple2[String, java.net.URI]]): ModuleInfo = { copy(licenses = licenses) } def withOrganizationName(organizationName: String): ModuleInfo = { copy(organizationName = organizationName) } - def withOrganizationHomepage(organizationHomepage: Option[java.net.URL]): ModuleInfo = { + def withOrganizationHomepage(organizationHomepage: Option[java.net.URI]): ModuleInfo = { copy(organizationHomepage = organizationHomepage) } def withScmInfo(scmInfo: Option[sbt.librarymanagement.ScmInfo]): ModuleInfo = { @@ -62,5 +62,5 @@ final class ModuleInfo private ( object ModuleInfo { def apply(nameFormal: String): ModuleInfo = new ModuleInfo(nameFormal) - def apply(nameFormal: String, description: String, homepage: Option[java.net.URL], startYear: Option[Int], licenses: Vector[scala.Tuple2[String, java.net.URL]], organizationName: String, organizationHomepage: Option[java.net.URL], scmInfo: Option[sbt.librarymanagement.ScmInfo], developers: Vector[sbt.librarymanagement.Developer]): ModuleInfo = new ModuleInfo(nameFormal, description, homepage, startYear, licenses, organizationName, organizationHomepage, scmInfo, developers) + def apply(nameFormal: String, description: String, homepage: Option[java.net.URI], startYear: Option[Int], licenses: Vector[scala.Tuple2[String, java.net.URI]], organizationName: String, organizationHomepage: Option[java.net.URI], scmInfo: Option[sbt.librarymanagement.ScmInfo], developers: Vector[sbt.librarymanagement.Developer]): ModuleInfo = new ModuleInfo(nameFormal, description, homepage, startYear, licenses, organizationName, organizationHomepage, scmInfo, developers) } diff --git a/core/src/main/contraband-scala/sbt/librarymanagement/ModuleInfoFormats.scala b/core/src/main/contraband-scala/sbt/librarymanagement/ModuleInfoFormats.scala index 4707e0bd..aa586ebc 100644 --- a/core/src/main/contraband-scala/sbt/librarymanagement/ModuleInfoFormats.scala +++ b/core/src/main/contraband-scala/sbt/librarymanagement/ModuleInfoFormats.scala @@ -13,11 +13,11 @@ implicit lazy val ModuleInfoFormat: JsonFormat[sbt.librarymanagement.ModuleInfo] unbuilder.beginObject(__js) val nameFormal = unbuilder.readField[String]("nameFormal") val description = unbuilder.readField[String]("description") - val homepage = unbuilder.readField[Option[java.net.URL]]("homepage") + val homepage = unbuilder.readField[Option[java.net.URI]]("homepage") val startYear = unbuilder.readField[Option[Int]]("startYear") - val licenses = unbuilder.readField[Vector[scala.Tuple2[String, java.net.URL]]]("licenses") + val licenses = unbuilder.readField[Vector[scala.Tuple2[String, java.net.URI]]]("licenses") val organizationName = unbuilder.readField[String]("organizationName") - val organizationHomepage = unbuilder.readField[Option[java.net.URL]]("organizationHomepage") + val organizationHomepage = unbuilder.readField[Option[java.net.URI]]("organizationHomepage") val scmInfo = unbuilder.readField[Option[sbt.librarymanagement.ScmInfo]]("scmInfo") val developers = unbuilder.readField[Vector[sbt.librarymanagement.Developer]]("developers") unbuilder.endObject() diff --git a/core/src/main/contraband/librarymanagement.json b/core/src/main/contraband/librarymanagement.json index 42de1b0a..37ede5b9 100644 --- a/core/src/main/contraband/librarymanagement.json +++ b/core/src/main/contraband/librarymanagement.json @@ -365,11 +365,11 @@ "fields": [ { "name": "nameFormal", "type": "String" }, { "name": "description", "type": "String", "default": "\"\"", "since": "0.0.1" }, - { "name": "homepage", "type": "Option[java.net.URL]", "default": "None", "since": "0.0.1" }, + { "name": "homepage", "type": "Option[java.net.URI]", "default": "None", "since": "0.0.1" }, { "name": "startYear", "type": "Option[Int]", "default": "None", "since": "0.0.1" }, - { "name": "licenses", "type": "scala.Tuple2[String, java.net.URL]*", "default": "Vector.empty", "since": "0.0.1" }, + { "name": "licenses", "type": "scala.Tuple2[String, java.net.URI]*", "default": "Vector.empty", "since": "0.0.1" }, { "name": "organizationName", "type": "String", "default": "\"\"", "since": "0.0.1" }, - { "name": "organizationHomepage", "type": "Option[java.net.URL]", "default": "None", "since": "0.0.1" }, + { "name": "organizationHomepage", "type": "Option[java.net.URI]", "default": "None", "since": "0.0.1" }, { "name": "scmInfo", "type": "Option[sbt.librarymanagement.ScmInfo]", "default": "None", "since": "0.0.1" }, { "name": "developers", "type": "sbt.librarymanagement.Developer*", "default": "Vector.empty", "since": "0.0.1" } ] From 861b8aa7921090f3abf1106d432181812d5fd6d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Ferreira?= Date: Wed, 29 May 2024 17:49:36 +0100 Subject: [PATCH 5/5] remove a few more java.net.URL --- .../librarymanagement/ComponentManager.scala | 5 +---- .../internal/librarymanagement/ConvertResolver.scala | 12 ++++++------ .../internal/librarymanagement/FakeResolver.scala | 2 +- 3 files changed, 8 insertions(+), 11 deletions(-) diff --git a/ivy/src/main/scala/sbt/internal/librarymanagement/ComponentManager.scala b/ivy/src/main/scala/sbt/internal/librarymanagement/ComponentManager.scala index 710c120d..7f84c3bf 100644 --- a/ivy/src/main/scala/sbt/internal/librarymanagement/ComponentManager.scala +++ b/ivy/src/main/scala/sbt/internal/librarymanagement/ComponentManager.scala @@ -101,7 +101,7 @@ object IfMissing { object ComponentManager { lazy val (version, timestamp) = { val properties = new java.util.Properties - val propertiesStream = versionResource.openStream + val propertiesStream = getClass.getResourceAsStream("/xsbt.version.properties") try { properties.load(propertiesStream) } finally { @@ -110,7 +110,4 @@ object ComponentManager { (properties.getProperty("version"), properties.getProperty("timestamp")) } lazy val stampedVersion = version + "_" + timestamp - - import java.net.URL - private def versionResource: URL = getClass.getResource("/xsbt.version.properties") } diff --git a/ivy/src/main/scala/sbt/internal/librarymanagement/ConvertResolver.scala b/ivy/src/main/scala/sbt/internal/librarymanagement/ConvertResolver.scala index 1bd0d7aa..ef59c2e0 100644 --- a/ivy/src/main/scala/sbt/internal/librarymanagement/ConvertResolver.scala +++ b/ivy/src/main/scala/sbt/internal/librarymanagement/ConvertResolver.scala @@ -394,17 +394,17 @@ private[sbt] object ConvertResolver { private[this] val repo = new WarnOnOverwriteFileRepo() private[this] val progress = new RepositoryCopyProgressListener(this); override def getResource(source: String) = { - val url = new URI(source).toURL - if (url.getProtocol == IO.FileScheme) - new FileResource(repo, IO.toFile(url)) + val uri = new URI(source) + if (uri.getScheme == IO.FileScheme) + new FileResource(repo, IO.toFile(uri)) else super.getResource(source) } override def put(source: File, destination: String, overwrite: Boolean): Unit = { - val url = new URI(destination).toURL + val uri = new URI(destination) try { - if (url.getProtocol != IO.FileScheme) super.put(source, destination, overwrite) + if (uri.getScheme != IO.FileScheme) super.put(source, destination, overwrite) else { // Here we duplicate the put method for files so we don't just bail on trying ot use Http handler val resource = getResource(destination) @@ -417,7 +417,7 @@ private[sbt] object ConvertResolver { if (totalLength > 0) { progress.setTotalLength(totalLength); } - FileUtil.copy(source, new java.io.File(url.toURI), progress, overwrite) + FileUtil.copy(source, new java.io.File(uri), progress, overwrite) () } catch { case ex: IOException => diff --git a/ivy/src/main/scala/sbt/internal/librarymanagement/FakeResolver.scala b/ivy/src/main/scala/sbt/internal/librarymanagement/FakeResolver.scala index 2d6ef89d..00c0275a 100644 --- a/ivy/src/main/scala/sbt/internal/librarymanagement/FakeResolver.scala +++ b/ivy/src/main/scala/sbt/internal/librarymanagement/FakeResolver.scala @@ -69,7 +69,7 @@ private[sbt] class FakeResolver(private var name: String, cacheDir: File, module ): ArtifactDownloadReport = { val report = new ArtifactDownloadReport(artifact.getArtifact) - val path = new URI(artifact.getLocation).toURL.toURI.getPath + val path = new URI(artifact.getLocation).getPath val localFile = new File(path) if (path.nonEmpty && localFile.exists) {