From 4ca5b5ae0a7587ac655bac8cb3b3a1bfc0605c0a Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 3 Jan 2017 23:30:05 -0500 Subject: [PATCH] Change publicationDate to java.util.Calendar This migrates to java.util.Calendar, which is better than java.util.Date and is supported by sjson-new out of the box. --- .../src/main/contraband/librarymanagement.json | 2 +- .../sbt/internal/librarymanagement/IvyRetrieve.scala | 4 +++- .../librarymanagement/formats/DateFormat.scala | 11 ----------- .../ivyint/CachedResolutionResolveEngine.scala | 4 +++- .../sbt/librarymanagement/UpdateReportExtra.scala | 4 ++-- project/DatatypeConfig.scala | 2 -- 6 files changed, 9 insertions(+), 18 deletions(-) delete mode 100644 librarymanagement/src/main/scala/sbt/internal/librarymanagement/formats/DateFormat.scala diff --git a/librarymanagement/src/main/contraband/librarymanagement.json b/librarymanagement/src/main/contraband/librarymanagement.json index b6dd96e23..0dd0a5580 100644 --- a/librarymanagement/src/main/contraband/librarymanagement.json +++ b/librarymanagement/src/main/contraband/librarymanagement.json @@ -296,7 +296,7 @@ { "name": "artifacts", "type": "scala.Tuple2[sbt.librarymanagement.Artifact, java.io.File]*" }, { "name": "missingArtifacts", "type": "sbt.librarymanagement.Artifact*" }, { "name": "status", "type": "Option[String]", "default": "None", "since": "0.0.1" }, - { "name": "publicationDate", "type": "Option[java.util.Date]", "default": "None", "since": "0.0.1" }, + { "name": "publicationDate", "type": "Option[java.util.Calendar]", "default": "None", "since": "0.0.1" }, { "name": "resolver", "type": "Option[String]", "default": "None", "since": "0.0.1" }, { "name": "artifactResolver", "type": "Option[String]", "default": "None", "since": "0.0.1" }, { "name": "evicted", "type": "boolean", "default": "false", "since": "0.0.1" }, diff --git a/librarymanagement/src/main/scala/sbt/internal/librarymanagement/IvyRetrieve.scala b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/IvyRetrieve.scala index e27d40c0f..2c8ef1049 100644 --- a/librarymanagement/src/main/scala/sbt/internal/librarymanagement/IvyRetrieve.scala +++ b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/IvyRetrieve.scala @@ -92,9 +92,11 @@ object IvyRetrieve { val branch = nonEmptyString(revId.getBranch) val (status, publicationDate, resolver, artifactResolver) = dep.isLoaded match { case true => + val c = new ju.GregorianCalendar() + c.setTimeInMillis(dep.getPublication) ( nonEmptyString(dep.getDescriptor.getStatus), - Some(new ju.Date(dep.getPublication)), + Some(c), nonEmptyString(dep.getModuleRevision.getResolver.getName), nonEmptyString(dep.getModuleRevision.getArtifactResolver.getName) ) diff --git a/librarymanagement/src/main/scala/sbt/internal/librarymanagement/formats/DateFormat.scala b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/formats/DateFormat.scala deleted file mode 100644 index 337ff3bd8..000000000 --- a/librarymanagement/src/main/scala/sbt/internal/librarymanagement/formats/DateFormat.scala +++ /dev/null @@ -1,11 +0,0 @@ -package sbt.internal.librarymanagement.formats - -import sjsonnew._ -import java.util._ -import java.text._ - -trait DateFormat { self: BasicJsonProtocol => - private val format = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy") - - implicit lazy val DateFormat: JsonFormat[Date] = project(_.toString, format.parse _) -} diff --git a/librarymanagement/src/main/scala/sbt/internal/librarymanagement/ivyint/CachedResolutionResolveEngine.scala b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/ivyint/CachedResolutionResolveEngine.scala index 887a057f3..7dcc35d65 100644 --- a/librarymanagement/src/main/scala/sbt/internal/librarymanagement/ivyint/CachedResolutionResolveEngine.scala +++ b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/ivyint/CachedResolutionResolveEngine.scala @@ -686,6 +686,7 @@ private[sbt] trait CachedResolutionResolveEngine extends ResolveEngine { case _ => val strategy = lcm.getStrategy val infos = conflicts map { ModuleReportArtifactInfo(_) } + log.debug(s"- Using $strategy with $infos") Option(strategy.findLatest(infos.toArray, None.orNull)) match { case Some(ModuleReportArtifactInfo(m)) => (Vector(m), conflicts filterNot { _ == m } map { _.withEvicted(true).withEvictedReason(Some(lcm.toString)) }, lcm.toString) @@ -766,8 +767,9 @@ private[sbt] trait CachedResolutionResolveEngine extends ResolveEngine { } private[sbt] case class ModuleReportArtifactInfo(moduleReport: ModuleReport) extends IvyArtifactInfo { - override def getLastModified: Long = moduleReport.publicationDate map { _.getTime } getOrElse 0L + override def getLastModified: Long = moduleReport.publicationDate map { _.getTimeInMillis } getOrElse 0L override def getRevision: String = moduleReport.module.revision + override def toString: String = s"ModuleReportArtifactInfo(${moduleReport.module}, $getRevision, $getLastModified)" } private[sbt] case class IvyOverride(moduleId: IvyModuleId, pm: PatternMatcher, ddm: OverrideDependencyDescriptorMediator) { override def toString: String = s"""IvyOverride($moduleId,$pm,${ddm.getVersion},${ddm.getBranch})""" diff --git a/librarymanagement/src/main/scala/sbt/librarymanagement/UpdateReportExtra.scala b/librarymanagement/src/main/scala/sbt/librarymanagement/UpdateReportExtra.scala index 23a93db8d..594588b44 100644 --- a/librarymanagement/src/main/scala/sbt/librarymanagement/UpdateReportExtra.scala +++ b/librarymanagement/src/main/scala/sbt/librarymanagement/UpdateReportExtra.scala @@ -37,7 +37,7 @@ abstract class ModuleReportExtra { def artifacts: Vector[(Artifact, File)] def missingArtifacts: Vector[Artifact] def status: Option[String] - def publicationDate: Option[ju.Date] + def publicationDate: Option[ju.Calendar] def resolver: Option[String] def artifactResolver: Option[String] def evicted: Boolean @@ -99,7 +99,7 @@ abstract class ModuleReportExtra { artifacts: Vector[(Artifact, File)] = artifacts, missingArtifacts: Vector[Artifact] = missingArtifacts, status: Option[String] = status, - publicationDate: Option[ju.Date] = publicationDate, + publicationDate: Option[ju.Calendar] = publicationDate, resolver: Option[String] = resolver, artifactResolver: Option[String] = artifactResolver, evicted: Boolean = evicted, diff --git a/project/DatatypeConfig.scala b/project/DatatypeConfig.scala index 9e5c8ffc5..4b39d3cad 100644 --- a/project/DatatypeConfig.scala +++ b/project/DatatypeConfig.scala @@ -19,8 +19,6 @@ object DatatypeConfig { /** Codecs that were manually written. */ val myCodecs: PartialFunction[String, Type => List[String]] = { - case "java.util.Date" => { _ => "sbt.internal.librarymanagement.formats.DateFormat" :: Nil } - case "scala.xml.NodeSeq" => { _ => "sbt.internal.librarymanagement.formats.NodeSeqFormat" :: Nil } case "org.apache.ivy.plugins.resolver.DependencyResolver" =>