diff --git a/build.sbt b/build.sbt index 77a683d..039655f 100644 --- a/build.sbt +++ b/build.sbt @@ -41,7 +41,6 @@ "org.apache.sshd" % "apache-sshd" % "1.4.0" exclude("org.slf4j","slf4j-jdk14"), "org.apache.tika" % "tika-core" % "1.14", "com.github.takezoe" %% "blocking-slick-32" % "0.0.10", - "joda-time" % "joda-time" % "2.9.9", "com.novell.ldap" % "jldap" % "2009-10-07", "com.h2database" % "h2" % "1.4.195", "org.mariadb.jdbc" % "mariadb-java-client" % "2.1.2", diff --git a/doc/licenses.md b/doc/licenses.md index 48c9912..805f16b 100644 --- a/doc/licenses.md +++ b/doc/licenses.md @@ -4,7 +4,6 @@ --- | --- | --- | --- Apache | [ Apache License, Version 2.0 ]( http://opensource.org/licenses/apache2.0.php ) | org.osgi # org.osgi.core # 4.3.1 | Apache | [Apache 2](http://www.apache.org/licenses/LICENSE-2.0.txt) | com.googlecode.javaewah # JavaEWAH # 1.1.6 | -Apache | [Apache 2](http://www.apache.org/licenses/LICENSE-2.0.txt) | joda-time # joda-time # 2.9.9 | Apache | [Apache 2](http://www.apache.org/licenses/LICENSE-2.0) | org.cache2k # cache2k-all # 1.0.0.CR1 | Apache | [Apache 2](http://www.apache.org/licenses/LICENSE-2.0.txt) | org.objenesis # objenesis # 2.5 | Apache | [Apache 2.0 License](http://www.apache.org/licenses/LICENSE-2.0) | org.apache.sshd # apache-sshd # 1.4.0 | diff --git a/src/main/scala/gitbucket/core/api/JsonFormat.scala b/src/main/scala/gitbucket/core/api/JsonFormat.scala index 6533272..a9fddcd 100644 --- a/src/main/scala/gitbucket/core/api/JsonFormat.scala +++ b/src/main/scala/gitbucket/core/api/JsonFormat.scala @@ -1,23 +1,24 @@ package gitbucket.core.api -import org.joda.time.DateTime -import org.joda.time.DateTimeZone -import org.joda.time.format._ +import java.time._ +import java.time.format.DateTimeFormatter +import java.util.Date + +import scala.util.Try + import org.json4s._ import org.json4s.jackson.Serialization -import java.util.Date -import scala.util.Try object JsonFormat { case class Context(baseUrl: String, sshUrl: Option[String]) - val parserISO = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss'Z'") + val parserISO = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'Z'") val jsonFormats = Serialization.formats(NoTypeHints) + new CustomSerializer[Date](format => ( - { case JString(s) => Try(parserISO.parseDateTime(s)).toOption.map(_.toDate).getOrElse(throw new MappingException("Can't convert " + s + " to Date")) }, - { case x: Date => JString(parserISO.print(new DateTime(x).withZone(DateTimeZone.UTC))) } + { case JString(s) => Try(Date.from(Instant.parse(s))).getOrElse(throw new MappingException("Can't convert " + s + " to Date")) }, + { case x: Date => JString(OffsetDateTime.ofInstant(x.toInstant, ZoneId.of("UTC")).format(parserISO)) } ) ) + FieldSerializer[ApiUser]() + FieldSerializer[ApiPullRequest]() + diff --git a/src/main/scala/gitbucket/core/controller/RepositorySettingsController.scala b/src/main/scala/gitbucket/core/controller/RepositorySettingsController.scala index a61776b..b1d4936 100644 --- a/src/main/scala/gitbucket/core/controller/RepositorySettingsController.scala +++ b/src/main/scala/gitbucket/core/controller/RepositorySettingsController.scala @@ -1,7 +1,10 @@ package gitbucket.core.controller +import java.time.{LocalDateTime, ZoneId, ZoneOffset} +import java.util.Date + import gitbucket.core.settings.html -import gitbucket.core.model.{WebHook, RepositoryWebHook} +import gitbucket.core.model.{RepositoryWebHook, WebHook} import gitbucket.core.service._ import gitbucket.core.service.WebHookService._ import gitbucket.core.util._ @@ -175,7 +178,8 @@ redirect(s"/${repository.owner}/${repository.name}/settings/branches") } else { val protection = ApiBranchProtection(getProtectedBranchInfo(repository.owner, repository.name, branch)) - val lastWeeks = getRecentStatuesContexts(repository.owner, repository.name, org.joda.time.LocalDateTime.now.minusWeeks(1).toDate).toSet + val lastWeeks = getRecentStatuesContexts(repository.owner, repository.name, + Date.from(LocalDateTime.now.minusWeeks(1).toInstant(ZoneOffset.of("UTC")))).toSet val knownContexts = (lastWeeks ++ protection.status.contexts).toSeq.sortBy(identity) html.branchprotection(repository, branch, protection, knownContexts, flash.get("info")) }