From d53948f4a9c05b4b1ac99d6888bcd2224a4b7b8f Mon Sep 17 00:00:00 2001 From: kenji yoshida <6b656e6a69@gmail.com> Date: Sun, 7 Jul 2019 14:02:30 +0900 Subject: [PATCH 1/4] Update scalatra to 2.7.0-RC1 (#2341) --- build.sbt | 4 ++-- .../scala/gitbucket/core/controller/IndexController.scala | 2 +- .../gitbucket/core/controller/PullRequestsController.scala | 2 +- .../scala/gitbucket/core/controller/ReleasesController.scala | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/build.sbt b/build.sbt index 3740f6980..350e2d00e 100644 --- a/build.sbt +++ b/build.sbt @@ -4,7 +4,7 @@ import com.typesafe.sbt.pgp.PgpKeys._ val Organization = "io.github.gitbucket" val Name = "gitbucket" val GitBucketVersion = "4.31.2" -val ScalatraVersion = "2.6.3" +val ScalatraVersion = "2.7.0-RC1" val JettyVersion = "9.4.14.v20181114" val JgitVersion = "5.2.0.201812061821-r" @@ -38,7 +38,7 @@ libraryDependencies ++= Seq( "org.scalatra" %% "scalatra" % ScalatraVersion, "org.scalatra" %% "scalatra-json" % ScalatraVersion, "org.scalatra" %% "scalatra-forms" % ScalatraVersion, - "org.json4s" %% "json4s-jackson" % "3.5.2", + "org.json4s" %% "json4s-jackson" % "3.6.7", "commons-io" % "commons-io" % "2.6", "io.github.gitbucket" % "solidbase" % "1.0.3", "io.github.gitbucket" % "markedj" % "1.0.16", diff --git a/src/main/scala/gitbucket/core/controller/IndexController.scala b/src/main/scala/gitbucket/core/controller/IndexController.scala index 2c3d4c8ad..df74ac8ea 100644 --- a/src/main/scala/gitbucket/core/controller/IndexController.scala +++ b/src/main/scala/gitbucket/core/controller/IndexController.scala @@ -132,7 +132,7 @@ trait IndexControllerBase extends ControllerBase { val redirectURI = new URI(s"$baseUrl/signin/oidc") session.get(Keys.Session.OidcContext) match { case Some(context: OidcContext) => - authenticate(params, redirectURI, context.state, context.nonce, oidc) map { account => + authenticate(params.toMap, redirectURI, context.state, context.nonce, oidc).map { account => signin(account, context.redirectBackURI) } orElse { flash += "error" -> "Sorry, authentication failed. Please try again." diff --git a/src/main/scala/gitbucket/core/controller/PullRequestsController.scala b/src/main/scala/gitbucket/core/controller/PullRequestsController.scala index 2910ac7a1..50523c800 100644 --- a/src/main/scala/gitbucket/core/controller/PullRequestsController.scala +++ b/src/main/scala/gitbucket/core/controller/PullRequestsController.scala @@ -136,7 +136,7 @@ trait PullRequestsControllerBase extends ControllerBase { hasDeveloperRole(pullreq.requestUserName, pullreq.requestRepositoryName, context.loginAccount), repository, getRepository(pullreq.requestUserName, pullreq.requestRepositoryName), - flash.toMap.map(f => f._1 -> f._2.toString) + flash.iterator.map(f => f._1 -> f._2.toString).toMap ) // html.pullreq( diff --git a/src/main/scala/gitbucket/core/controller/ReleasesController.scala b/src/main/scala/gitbucket/core/controller/ReleasesController.scala index 32afbdaf1..90c887c17 100644 --- a/src/main/scala/gitbucket/core/controller/ReleasesController.scala +++ b/src/main/scala/gitbucket/core/controller/ReleasesController.scala @@ -106,7 +106,7 @@ trait ReleaseControllerBase extends ControllerBase { createRelease(repository.owner, repository.name, form.name, form.content, tagName, loginAccount) // Insert into RELEASE_ASSET - val files = params.collect { + val files = params.toMap.collect { case (name, value) if name.startsWith("file:") => val Array(_, fileId) = name.split(":") (fileId, value) @@ -174,7 +174,7 @@ trait ReleaseControllerBase extends ControllerBase { val assets = getReleaseAssets(repository.owner, repository.name, tagName) deleteReleaseAssets(repository.owner, repository.name, tagName) - val files = params.collect { + val files = params.toMap.collect { case (name, value) if name.startsWith("file:") => val Array(_, fileId) = name.split(":") (fileId, value) From 88db21ef07ec552db04a3a25e4b9b34db81c4253 Mon Sep 17 00:00:00 2001 From: Naoki Takezoe Date: Sun, 7 Jul 2019 14:22:23 +0900 Subject: [PATCH 2/4] Fix warnings --- .../core/controller/AccountController.scala | 14 +++++++------- .../core/controller/IndexController.scala | 14 +++++++------- .../core/controller/PullRequestsController.scala | 10 +++++----- .../controller/RepositorySettingsController.scala | 12 ++++++------ .../controller/RepositoryViewerController.scala | 8 ++++---- .../core/controller/SystemSettingsController.scala | 8 ++++---- .../gitbucket/core/controller/WikiController.scala | 4 ++-- 7 files changed, 35 insertions(+), 35 deletions(-) diff --git a/src/main/scala/gitbucket/core/controller/AccountController.scala b/src/main/scala/gitbucket/core/controller/AccountController.scala index da07cde80..caea8069b 100644 --- a/src/main/scala/gitbucket/core/controller/AccountController.scala +++ b/src/main/scala/gitbucket/core/controller/AccountController.scala @@ -347,7 +347,7 @@ trait AccountControllerBase extends AccountManagementControllerBase { updateImage(userName, form.fileId, form.clearImage) updateAccountExtraMailAddresses(userName, form.extraMailAddresses.filter(_ != "")) - flash += "info" -> "Account information has been updated." + flash.update("info", "Account information has been updated.") redirect(s"/${userName}/_edit") } getOrElse NotFound() @@ -359,7 +359,7 @@ trait AccountControllerBase extends AccountManagementControllerBase { getAccountByUserName(userName, true).map { account => if (isLastAdministrator(account)) { - flash += "error" -> "Account can't be removed because this is last one administrator." + flash.update("error", "Account can't be removed because this is last one administrator.") redirect(s"/${userName}/_edit") } else { // // Remove repositories @@ -439,7 +439,7 @@ trait AccountControllerBase extends AccountManagementControllerBase { val userName = params("userName") getAccountByUserName(userName).map { x => val (tokenId, token) = generateAccessToken(userName, form.note) - flash += "generatedToken" -> (tokenId, token) + flash.update("generatedToken", (tokenId, token)) } redirect(s"/${userName}/_application") }) @@ -475,7 +475,7 @@ trait AccountControllerBase extends AccountManagementControllerBase { post("/:userName/_hooks/new", accountWebHookForm(false))(managersOnly { form => val userName = params("userName") addAccountWebHook(userName, form.url, form.events, form.ctype, form.token) - flash += "info" -> s"Webhook ${form.url} created" + flash.update("info", s"Webhook ${form.url} created") redirect(s"/${userName}/_hooks") }) @@ -485,7 +485,7 @@ trait AccountControllerBase extends AccountManagementControllerBase { get("/:userName/_hooks/delete")(managersOnly { val userName = params("userName") deleteAccountWebHook(userName, params("url")) - flash += "info" -> s"Webhook ${params("url")} deleted" + flash.update("info", s"Webhook ${params("url")} deleted") redirect(s"/${userName}/_hooks") }) @@ -508,7 +508,7 @@ trait AccountControllerBase extends AccountManagementControllerBase { post("/:userName/_hooks/edit", accountWebHookForm(true))(managersOnly { form => val userName = params("userName") updateAccountWebHook(userName, form.url, form.events, form.ctype, form.token) - flash += "info" -> s"webhook ${form.url} updated" + flash.update("info", s"webhook ${form.url} updated") redirect(s"/${userName}/_hooks") }) @@ -683,7 +683,7 @@ trait AccountControllerBase extends AccountManagementControllerBase { updateImage(form.groupName, form.fileId, form.clearImage) - flash += "info" -> "Account information has been updated." + flash.update("info", "Account information has been updated.") redirect(s"/${groupName}/_editgroup") } getOrElse NotFound() diff --git a/src/main/scala/gitbucket/core/controller/IndexController.scala b/src/main/scala/gitbucket/core/controller/IndexController.scala index df74ac8ea..dd80b4760 100644 --- a/src/main/scala/gitbucket/core/controller/IndexController.scala +++ b/src/main/scala/gitbucket/core/controller/IndexController.scala @@ -83,7 +83,7 @@ trait IndexControllerBase extends ControllerBase { get("/signin") { val redirect = params.get("redirect") if (redirect.isDefined && redirect.get.startsWith("/")) { - flash += Keys.Flash.Redirect -> redirect.get + flash.update(Keys.Flash.Redirect, redirect.get) } gitbucket.core.html.signin(flash.get("userName"), flash.get("password"), flash.get("error")) } @@ -96,9 +96,9 @@ trait IndexControllerBase extends ControllerBase { case _ => signin(account) } case None => - flash += "userName" -> form.userName - flash += "password" -> form.password - flash += "error" -> "Sorry, your Username and/or Password is incorrect. Please try again." + flash.update("userName", form.userName) + flash.update("password", form.password) + flash.update("error", "Sorry, your Username and/or Password is incorrect. Please try again.") redirect("/signin") } } @@ -135,12 +135,12 @@ trait IndexControllerBase extends ControllerBase { authenticate(params.toMap, redirectURI, context.state, context.nonce, oidc).map { account => signin(account, context.redirectBackURI) } orElse { - flash += "error" -> "Sorry, authentication failed. Please try again." + flash.update("error", "Sorry, authentication failed. Please try again.") session.invalidate() redirect("/signin") } case _ => - flash += "error" -> "Sorry, something wrong. Please try again." + flash.update("error", "Sorry, something wrong. Please try again.") session.invalidate() redirect("/signin") } @@ -227,7 +227,7 @@ trait IndexControllerBase extends ControllerBase { } getOrElse "" }) - // TODO Move to RepositoryViwerController? + // TODO Move to RepositoryViewrController? get("/:owner/:repository/search")(referrersOnly { repository => defining(params.getOrElse("q", "").trim, params.getOrElse("type", "code")) { case (query, target) => diff --git a/src/main/scala/gitbucket/core/controller/PullRequestsController.scala b/src/main/scala/gitbucket/core/controller/PullRequestsController.scala index 50523c800..2eae306dd 100644 --- a/src/main/scala/gitbucket/core/controller/PullRequestsController.scala +++ b/src/main/scala/gitbucket/core/controller/PullRequestsController.scala @@ -269,7 +269,7 @@ trait PullRequestsControllerBase extends ControllerBase { val repository = getRepository(owner, name).get val branchProtection = getProtectedBranchInfo(owner, name, pullreq.requestBranch) if (branchProtection.enabled) { - flash += "error" -> s"branch ${pullreq.requestBranch} is protected." + flash.update("error", s"branch ${pullreq.requestBranch} is protected.") } else { if (repository.repository.defaultBranch != pullreq.requestBranch) { val userName = context.loginAccount.get.userName @@ -286,7 +286,7 @@ trait PullRequestsControllerBase extends ControllerBase { "delete_branch" ) } else { - flash += "error" -> s"""Can't delete the default branch "${pullreq.requestBranch}".""" + flash.update("error", s"""Can't delete the default branch "${pullreq.requestBranch}".""") } } @@ -307,7 +307,7 @@ trait PullRequestsControllerBase extends ControllerBase { } yield { val branchProtection = getProtectedBranchInfo(owner, name, pullreq.requestBranch) if (branchProtection.needStatusCheck(loginAccount.userName)) { - flash += "error" -> s"branch ${pullreq.requestBranch} is protected need status check." + flash.update("error", s"branch ${pullreq.requestBranch} is protected need status check.") } else { LockUtil.lock(s"${owner}/${name}") { val alias = @@ -329,11 +329,11 @@ trait PullRequestsControllerBase extends ControllerBase { Some(pullreq) ) match { case None => // conflict - flash += "error" -> s"Can't automatic merging branch '${alias}' into ${pullreq.requestBranch}." + flash.update("error", s"Can't automatic merging branch '${alias}' into ${pullreq.requestBranch}.") case Some(oldId) => // update pull request updatePullRequests(owner, name, pullreq.requestBranch, loginAccount, "synchronize") - flash += "info" -> s"Merge branch '${alias}' into ${pullreq.requestBranch}" + flash.update("info", s"Merge branch '${alias}' into ${pullreq.requestBranch}") } } } diff --git a/src/main/scala/gitbucket/core/controller/RepositorySettingsController.scala b/src/main/scala/gitbucket/core/controller/RepositorySettingsController.scala index 4dc1dc0db..e98f2c137 100644 --- a/src/main/scala/gitbucket/core/controller/RepositorySettingsController.scala +++ b/src/main/scala/gitbucket/core/controller/RepositorySettingsController.scala @@ -147,7 +147,7 @@ trait RepositorySettingsControllerBase extends ControllerBase { // Update database renameRepository(repository.owner, repository.name, repository.owner, form.repositoryName) } - flash += "info" -> "Repository settings has been updated." + flash.update("info", "Repository settings has been updated.") redirect(s"/${repository.owner}/${form.repositoryName}/settings/options") }) @@ -167,7 +167,7 @@ trait RepositorySettingsControllerBase extends ControllerBase { using(Git.open(getRepositoryDir(repository.owner, repository.name))) { git => git.getRepository.updateRef(Constants.HEAD, true).link(Constants.R_HEADS + form.defaultBranch) } - flash += "info" -> "Repository default branch has been updated." + flash.update("info", "Repository default branch has been updated.") redirect(s"/${repository.owner}/${repository.name}/settings/branches") } }) @@ -231,7 +231,7 @@ trait RepositorySettingsControllerBase extends ControllerBase { */ post("/:owner/:repository/settings/hooks/new", webHookForm(false))(ownerOnly { (form, repository) => addWebHook(repository.owner, repository.name, form.url, form.events, form.ctype, form.token) - flash += "info" -> s"Webhook ${form.url} created" + flash.update("info", s"Webhook ${form.url} created") redirect(s"/${repository.owner}/${repository.name}/settings/hooks") }) @@ -240,7 +240,7 @@ trait RepositorySettingsControllerBase extends ControllerBase { */ get("/:owner/:repository/settings/hooks/delete")(ownerOnly { repository => deleteWebHook(repository.owner, repository.name, params("url")) - flash += "info" -> s"Webhook ${params("url")} deleted" + flash.update("info", s"Webhook ${params("url")} deleted") redirect(s"/${repository.owner}/${repository.name}/settings/hooks") }) @@ -350,7 +350,7 @@ trait RepositorySettingsControllerBase extends ControllerBase { */ post("/:owner/:repository/settings/hooks/edit", webHookForm(true))(ownerOnly { (form, repository) => updateWebHook(repository.owner, repository.name, form.url, form.events, form.ctype, form.token) - flash += "info" -> s"webhook ${form.url} updated" + flash.update("info", s"webhook ${form.url} updated") redirect(s"/${repository.owner}/${repository.name}/settings/hooks") }) @@ -390,7 +390,7 @@ trait RepositorySettingsControllerBase extends ControllerBase { git.gc().call() } } - flash += "info" -> "Garbage collection has been executed." + flash.update("info", "Garbage collection has been executed.") redirect(s"/${repository.owner}/${repository.name}/settings/danger") }) diff --git a/src/main/scala/gitbucket/core/controller/RepositoryViewerController.scala b/src/main/scala/gitbucket/core/controller/RepositoryViewerController.scala index 7ae412eed..8e238b2ea 100644 --- a/src/main/scala/gitbucket/core/controller/RepositoryViewerController.scala +++ b/src/main/scala/gitbucket/core/controller/RepositoryViewerController.scala @@ -792,10 +792,10 @@ trait RepositoryViewerControllerBase extends ControllerBase { JGitUtil.createTag(git, form.tagName, form.message, form.commitId) } match { case Right(message) => - flash += "info" -> message + flash.update("info", message) redirect(s"/${repository.owner}/${repository.name}/commit/${form.commitId}") case Left(message) => - flash += "error" -> message + flash.update("error", message) redirect(s"/${repository.owner}/${repository.name}/commit/${form.commitId}") } }) @@ -810,12 +810,12 @@ trait RepositoryViewerControllerBase extends ControllerBase { JGitUtil.createBranch(git, fromBranchName, newBranchName) } match { case Right(message) => - flash += "info" -> message + flash.update("info", message) redirect( s"/${repository.owner}/${repository.name}/tree/${StringUtil.urlEncode(newBranchName).replace("%2F", "/")}" ) case Left(message) => - flash += "error" -> message + flash.update("error", message) redirect(s"/${repository.owner}/${repository.name}/tree/${fromBranchName}") } }) diff --git a/src/main/scala/gitbucket/core/controller/SystemSettingsController.scala b/src/main/scala/gitbucket/core/controller/SystemSettingsController.scala index 2b7174d97..a71c83f2f 100644 --- a/src/main/scala/gitbucket/core/controller/SystemSettingsController.scala +++ b/src/main/scala/gitbucket/core/controller/SystemSettingsController.scala @@ -305,7 +305,7 @@ trait SystemSettingsControllerBase extends AccountManagementControllerBase { } SshServer.start(sshAddress, baseUrl) } - flash += "info" -> "System settings has been updated." + flash.update("info", "System settings has been updated.") redirect("/admin/system") }) @@ -333,7 +333,7 @@ trait SystemSettingsControllerBase extends AccountManagementControllerBase { post("/admin/plugins/_reload")(adminOnly { PluginRegistry.reload(request.getServletContext(), loadSystemSettings(), request2Session(request).conn) - flash += "info" -> "All plugins were reloaded." + flash.update("info", "All plugins were reloaded.") redirect("/admin/plugins") }) @@ -343,7 +343,7 @@ trait SystemSettingsControllerBase extends AccountManagementControllerBase { if (PluginRegistry().getPlugins().exists(_.pluginId == pluginId)) { PluginRegistry .uninstall(pluginId, request.getServletContext, loadSystemSettings(), request2Session(request).conn) - flash += "info" -> s"${pluginId} was uninstalled." + flash.update("info", s"${pluginId} was uninstalled.") } redirect("/admin/plugins") @@ -391,7 +391,7 @@ trait SystemSettingsControllerBase extends AccountManagementControllerBase { getAccountByUserName(userName, true).map { account => if (account.isAdmin && (form.isRemoved || !form.isAdmin) && isLastAdministrator(account)) { - flash += "error" -> "Account can't be turned off because this is last one administrator." + flash.update("error", "Account can't be turned off because this is last one administrator.") redirect(s"/admin/users/${userName}/_edituser") } else { if (form.isRemoved) { diff --git a/src/main/scala/gitbucket/core/controller/WikiController.scala b/src/main/scala/gitbucket/core/controller/WikiController.scala index 319f19f55..2c9764e39 100644 --- a/src/main/scala/gitbucket/core/controller/WikiController.scala +++ b/src/main/scala/gitbucket/core/controller/WikiController.scala @@ -139,7 +139,7 @@ trait WikiControllerBase extends ControllerBase { if (revertWikiPage(repository.owner, repository.name, from, to, context.loginAccount.get, Some(pageName))) { redirect(s"/${repository.owner}/${repository.name}/wiki/${StringUtil.urlEncode(pageName)}") } else { - flash += "info" -> "This patch was not able to be reversed." + flash.update("info", "This patch was not able to be reversed.") redirect( s"/${repository.owner}/${repository.name}/wiki/${StringUtil.urlEncode(pageName)}/_compare/${from}...${to}" ) @@ -154,7 +154,7 @@ trait WikiControllerBase extends ControllerBase { if (revertWikiPage(repository.owner, repository.name, from, to, context.loginAccount.get, None)) { redirect(s"/${repository.owner}/${repository.name}/wiki") } else { - flash += "info" -> "This patch was not able to be reversed." + flash.update("info", "This patch was not able to be reversed.") redirect(s"/${repository.owner}/${repository.name}/wiki/_compare/${from}...${to}") } } else Unauthorized() From 33b46869b620df806a2e17c331d1c79ba39af4f5 Mon Sep 17 00:00:00 2001 From: takako shimamoto Date: Sun, 4 Aug 2019 21:47:48 +0900 Subject: [PATCH 3/4] (refs #2337) Scala 2.13.0 (#2348) --- build.sbt | 8 ++++---- doc/build.md | 4 ++-- .../core/controller/AccountController.scala | 3 +-- .../core/controller/ControllerBase.scala | 4 ++-- .../core/controller/IssuesController.scala | 2 +- .../controller/RepositorySettingsController.scala | 4 ++-- .../controller/RepositoryViewerController.scala | 6 +++--- .../controller/SystemSettingsController.scala | 4 ++-- .../api/ApiGitReferenceControllerBase.scala | 3 ++- .../api/ApiPullRequestControllerBase.scala | 2 +- .../gitbucket/core/plugin/PluginRegistry.scala | 7 ++----- .../gitbucket/core/service/GpgKeyService.scala | 4 ++-- .../gitbucket/core/service/IssuesService.scala | 2 +- .../gitbucket/core/service/MergeService.scala | 4 +--- .../core/service/OpenIDConnectService.scala | 6 +++--- .../core/service/PullRequestService.scala | 4 ++-- .../gitbucket/core/service/WebHookService.scala | 6 +++++- .../gitbucket/core/service/WikiService.scala | 3 ++- .../core/servlet/ApiAuthenticationFilter.scala | 3 +++ .../core/servlet/GitAuthenticationFilter.scala | 8 ++++++-- .../core/servlet/GitRepositoryServlet.scala | 12 ++++++++---- .../core/servlet/InitializeListener.scala | 6 +++++- src/main/scala/gitbucket/core/util/FileUtil.scala | 4 ++-- src/main/scala/gitbucket/core/util/GpgUtil.scala | 3 ++- src/main/scala/gitbucket/core/util/JDBCUtil.scala | 4 ++-- src/main/scala/gitbucket/core/util/JGitUtil.scala | 15 +++++++-------- .../gitbucket/core/issues/labels/edit.scala.html | 2 +- .../core/issues/priorities/edit.scala.html | 2 +- .../gitbucket/core/service/ServiceSpecBase.scala | 4 +--- .../core/service/WebHookServiceSpec.scala | 5 +++-- .../scala/gitbucket/core/util/JGitUtilSpec.scala | 5 +---- .../core/view/AvatarImageProviderSpec.scala | 2 +- .../scala/gitbucket/core/view/HelpersSpec.scala | 2 +- .../scala/gitbucket/core/view/MarkdownSpec.scala | 2 +- 34 files changed, 83 insertions(+), 72 deletions(-) diff --git a/build.sbt b/build.sbt index 350e2d00e..bea6e6a12 100644 --- a/build.sbt +++ b/build.sbt @@ -17,7 +17,7 @@ sourcesInBase := false organization := Organization name := Name version := GitBucketVersion -scalaVersion := "2.12.8" +scalaVersion := "2.13.0" scalafmtOnCompile := true @@ -47,7 +47,7 @@ libraryDependencies ++= Seq( "org.apache.httpcomponents" % "httpclient" % "4.5.6", "org.apache.sshd" % "apache-sshd" % "2.1.0" exclude ("org.slf4j", "slf4j-jdk14") exclude ("org.apache.sshd", "sshd-mina") exclude ("org.apache.sshd", "sshd-netty"), "org.apache.tika" % "tika-core" % "1.19.1", - "com.github.takezoe" %% "blocking-slick-32" % "0.0.11", + "com.github.takezoe" %% "blocking-slick-32" % "0.0.12", "com.novell.ldap" % "jldap" % "2009-10-07", "com.h2database" % "h2" % "1.4.197", "org.mariadb.jdbc" % "mariadb-java-client" % "2.4.2", @@ -59,7 +59,7 @@ libraryDependencies ++= Seq( "fr.brouillard.oss.security.xhub" % "xhub4j-core" % "1.1.0", "com.github.bkromhout" % "java-diff-utils" % "2.1.1", "org.cache2k" % "cache2k-all" % "1.2.0.Final", - "com.enragedginger" %% "akka-quartz-scheduler" % "1.7.0-akka-2.5.x" exclude ("c3p0", "c3p0") exclude ("com.zaxxer", "HikariCP-java6"), + "com.enragedginger" %% "akka-quartz-scheduler" % "1.8.1-akka-2.5.x" exclude ("com.mchange", "c3p0") exclude ("com.zaxxer", "HikariCP-java6"), "net.coobird" % "thumbnailator" % "0.4.8", "com.github.zafarkhaja" % "java-semver" % "0.9.0", "com.nimbusds" % "oauth2-oidc-sdk" % "5.64.4", @@ -77,7 +77,7 @@ libraryDependencies ++= Seq( ) // Compiler settings -scalacOptions := Seq("-deprecation", "-language:postfixOps", "-opt:l:method", "-Xfuture") +scalacOptions := Seq("-deprecation", "-language:postfixOps", "-opt:l:method") javacOptions in compile ++= Seq("-target", "8", "-source", "8") javaOptions in Jetty += "-Dlogback.configurationFile=/logback-dev.xml" diff --git a/doc/build.md b/doc/build.md index d508b5099..0adbfcd66 100644 --- a/doc/build.md +++ b/doc/build.md @@ -29,7 +29,7 @@ To build war file, run the following command: $ sbt package ``` -`gitbucket_2.12-x.x.x.war` is generated into `target/scala-2.12`. +`gitbucket_2.13-x.x.x.war` is generated into `target/scala-2.13`. To build an executable war file, run @@ -58,4 +58,4 @@ If you don't have docker, you can skip docker tests which require docker as foll ```shell $ sbt "testOnly * -- -l ExternalDBTest" -``` \ No newline at end of file +``` diff --git a/src/main/scala/gitbucket/core/controller/AccountController.scala b/src/main/scala/gitbucket/core/controller/AccountController.scala index caea8069b..886d9c489 100644 --- a/src/main/scala/gitbucket/core/controller/AccountController.scala +++ b/src/main/scala/gitbucket/core/controller/AccountController.scala @@ -5,7 +5,6 @@ import java.io.File import gitbucket.core.account.html import gitbucket.core.helper import gitbucket.core.model._ -import gitbucket.core.plugin.PluginRegistry import gitbucket.core.service._ import gitbucket.core.service.WebHookService._ import gitbucket.core.ssh.SshUtil @@ -543,7 +542,7 @@ trait AccountControllerBase extends AccountManagementControllerBase { case e: java.net.UnknownHostException => Map("error" -> ("Unknown host " + e.getMessage)) case e: java.lang.IllegalArgumentException => Map("error" -> ("invalid url")) case e: org.apache.http.client.ClientProtocolException => Map("error" -> ("invalid url")) - case NonFatal(e) => Map("error" -> (e.getClass + " " + e.getMessage)) + case NonFatal(e) => Map("error" -> (s"${e.getClass} ${e.getMessage}")) } contentType = formats("json") diff --git a/src/main/scala/gitbucket/core/controller/ControllerBase.scala b/src/main/scala/gitbucket/core/controller/ControllerBase.scala index fa51b5ad3..f05770b69 100644 --- a/src/main/scala/gitbucket/core/controller/ControllerBase.scala +++ b/src/main/scala/gitbucket/core/controller/ControllerBase.scala @@ -365,7 +365,7 @@ trait AccountManagementControllerBase extends ControllerBase { params: Map[String, Seq[String]], messages: Messages ): Option[String] = { - val extraMailAddresses = params.filterKeys(k => k.startsWith("extraMailAddresses")) + val extraMailAddresses = params.view.filterKeys(k => k.startsWith("extraMailAddresses")) if (extraMailAddresses.exists { case (k, v) => v.contains(value) @@ -388,7 +388,7 @@ trait AccountManagementControllerBase extends ControllerBase { params: Map[String, Seq[String]], messages: Messages ): Option[String] = { - val extraMailAddresses = params.filterKeys(k => k.startsWith("extraMailAddresses")) + val extraMailAddresses = params.view.filterKeys(k => k.startsWith("extraMailAddresses")) if (Some(value) == params.optionValue("mailAddress") || extraMailAddresses.count { case (k, v) => v.contains(value) diff --git a/src/main/scala/gitbucket/core/controller/IssuesController.scala b/src/main/scala/gitbucket/core/controller/IssuesController.scala index efc0acbc4..f19e7a96f 100644 --- a/src/main/scala/gitbucket/core/controller/IssuesController.scala +++ b/src/main/scala/gitbucket/core/controller/IssuesController.scala @@ -145,7 +145,7 @@ trait IssuesControllerBase extends ControllerBase { form.assignedUserName, form.milestoneId, form.priorityId, - form.labelNames.toArray.flatMap(_.split(",")), + form.labelNames.toSeq.flatMap(_.split(",")), context.loginAccount.get ) diff --git a/src/main/scala/gitbucket/core/controller/RepositorySettingsController.scala b/src/main/scala/gitbucket/core/controller/RepositorySettingsController.scala index e98f2c137..c73622677 100644 --- a/src/main/scala/gitbucket/core/controller/RepositorySettingsController.scala +++ b/src/main/scala/gitbucket/core/controller/RepositorySettingsController.scala @@ -254,9 +254,9 @@ trait RepositorySettingsControllerBase extends ControllerBase { using(Git.open(getRepositoryDir(repository.owner, repository.name))) { git => - import scala.collection.JavaConverters._ import scala.concurrent.duration._ import scala.concurrent._ + import scala.jdk.CollectionConverters._ import scala.util.control.NonFatal import org.apache.http.util.EntityUtils import scala.concurrent.ExecutionContext.Implicits.global @@ -298,7 +298,7 @@ trait RepositorySettingsControllerBase extends ControllerBase { case e: java.net.UnknownHostException => Map("error" -> ("Unknown host " + e.getMessage)) case e: java.lang.IllegalArgumentException => Map("error" -> ("invalid url")) case e: org.apache.http.client.ClientProtocolException => Map("error" -> ("invalid url")) - case NonFatal(e) => Map("error" -> (e.getClass + " " + e.getMessage)) + case NonFatal(e) => Map("error" -> (s"${e.getClass} ${e.getMessage}")) } contentType = formats("json") diff --git a/src/main/scala/gitbucket/core/controller/RepositoryViewerController.scala b/src/main/scala/gitbucket/core/controller/RepositoryViewerController.scala index 8e238b2ea..b13e9482d 100644 --- a/src/main/scala/gitbucket/core/controller/RepositoryViewerController.scala +++ b/src/main/scala/gitbucket/core/controller/RepositoryViewerController.scala @@ -258,7 +258,7 @@ trait RepositoryViewerControllerBase extends ControllerBase { def getSummary(statuses: List[CommitStatus]): (CommitState, String) = { val stateMap = statuses.groupBy(_.state) val state = CommitState.combine(stateMap.keySet) - val summary = stateMap.map { case (keyState, states) => states.size + " " + keyState.name }.mkString(", ") + val summary = stateMap.map { case (keyState, states) => s"${states.size} ${keyState.name}" }.mkString(", ") state -> summary } @@ -351,7 +351,7 @@ trait RepositoryViewerControllerBase extends ControllerBase { repository = repository, branch = form.branch, path = form.path, - files = files, + files = files.toIndexedSeq, message = form.message.getOrElse("Add files via upload"), loginAccount = context.loginAccount.get ) { @@ -980,7 +980,7 @@ trait RepositoryViewerControllerBase extends ControllerBase { val date = commit.getCommitterIdent.getWhen val sha1 = oid.getName() val repositorySuffix = (if (sha1.startsWith(revision)) sha1 else revision).replace('/', '-') - val pathSuffix = if (path.isEmpty) "" else '-' + path.replace('/', '-') + val pathSuffix = if (path.isEmpty) "" else s"-${path.replace('/', '-')}" val baseName = repository.name + "-" + repositorySuffix + pathSuffix using(new TreeWalk(git.getRepository)) { treeWalk => diff --git a/src/main/scala/gitbucket/core/controller/SystemSettingsController.scala b/src/main/scala/gitbucket/core/controller/SystemSettingsController.scala index a71c83f2f..cff406aec 100644 --- a/src/main/scala/gitbucket/core/controller/SystemSettingsController.scala +++ b/src/main/scala/gitbucket/core/controller/SystemSettingsController.scala @@ -245,10 +245,10 @@ trait SystemSettingsControllerBase extends AccountManagementControllerBase { } } - tables += Table(tableName.toUpperCase, columns) + tables += Table(tableName.toUpperCase, columns.toSeq) } } - html.dbviewer(tables) + html.dbviewer(tables.toSeq) }) post("/admin/dbviewer/_query")(adminOnly { diff --git a/src/main/scala/gitbucket/core/controller/api/ApiGitReferenceControllerBase.scala b/src/main/scala/gitbucket/core/controller/api/ApiGitReferenceControllerBase.scala index 906973391..198c84292 100644 --- a/src/main/scala/gitbucket/core/controller/api/ApiGitReferenceControllerBase.scala +++ b/src/main/scala/gitbucket/core/controller/api/ApiGitReferenceControllerBase.scala @@ -6,7 +6,8 @@ import gitbucket.core.util.ReferrerAuthenticator import gitbucket.core.util.SyntaxSugars.using import gitbucket.core.util.Implicits._ import org.eclipse.jgit.api.Git -import scala.collection.JavaConverters._ + +import scala.jdk.CollectionConverters._ trait ApiGitReferenceControllerBase extends ControllerBase { self: ReferrerAuthenticator => diff --git a/src/main/scala/gitbucket/core/controller/api/ApiPullRequestControllerBase.scala b/src/main/scala/gitbucket/core/controller/api/ApiPullRequestControllerBase.scala index 9872d07bf..63996a14a 100644 --- a/src/main/scala/gitbucket/core/controller/api/ApiPullRequestControllerBase.scala +++ b/src/main/scala/gitbucket/core/controller/api/ApiPullRequestControllerBase.scala @@ -13,7 +13,7 @@ import gitbucket.core.util._ import org.eclipse.jgit.api.Git import org.scalatra.NoContent -import scala.collection.JavaConverters._ +import scala.jdk.CollectionConverters._ trait ApiPullRequestControllerBase extends ControllerBase { self: AccountService diff --git a/src/main/scala/gitbucket/core/plugin/PluginRegistry.scala b/src/main/scala/gitbucket/core/plugin/PluginRegistry.scala index 4dcd05ead..b633691ea 100644 --- a/src/main/scala/gitbucket/core/plugin/PluginRegistry.scala +++ b/src/main/scala/gitbucket/core/plugin/PluginRegistry.scala @@ -17,17 +17,15 @@ import gitbucket.core.service.SystemSettingsService import gitbucket.core.service.SystemSettingsService.SystemSettings import gitbucket.core.util.DatabaseConfig import gitbucket.core.util.Directory._ -import gitbucket.core.util.HttpClientUtil._ import io.github.gitbucket.solidbase.Solidbase import io.github.gitbucket.solidbase.manager.JDBCVersionManager import io.github.gitbucket.solidbase.model.Module import org.apache.commons.io.FileUtils -import org.apache.http.client.methods.HttpGet import org.apache.sshd.server.command.Command import org.slf4j.LoggerFactory import play.twirl.api.Html -import scala.collection.JavaConverters._ +import scala.jdk.CollectionConverters._ class PluginRegistry { @@ -415,7 +413,6 @@ case class PluginInfo( class PluginWatchThread(context: ServletContext, dir: String) extends Thread with SystemSettingsService { import gitbucket.core.model.Profile.profile.blockingApi._ - import scala.collection.JavaConverters._ private val logger = LoggerFactory.getLogger(classOf[PluginWatchThread]) @@ -445,7 +442,7 @@ class PluginWatchThread(context: ServletContext, dir: String) extends Thread wit } if (events.nonEmpty) { events.foreach { event => - logger.info(event.kind + ": " + event.context) + logger.info(s"${event.kind}: ${event.context}") } new Thread { override def run(): Unit = { diff --git a/src/main/scala/gitbucket/core/service/GpgKeyService.scala b/src/main/scala/gitbucket/core/service/GpgKeyService.scala index 3e10b9354..560af3f79 100644 --- a/src/main/scala/gitbucket/core/service/GpgKeyService.scala +++ b/src/main/scala/gitbucket/core/service/GpgKeyService.scala @@ -3,14 +3,14 @@ package gitbucket.core.service import java.io.ByteArrayInputStream import gitbucket.core.model.GpgKey - -import collection.JavaConverters._ import gitbucket.core.model.Profile._ import gitbucket.core.model.Profile.profile.blockingApi._ import org.bouncycastle.bcpg.ArmoredInputStream import org.bouncycastle.openpgp.PGPPublicKeyRing import org.bouncycastle.openpgp.bc.BcPGPObjectFactory +import scala.jdk.CollectionConverters._ + trait GpgKeyService { def getGpgPublicKeys(userName: String)(implicit s: Session): List[GpgKey] = GpgKeys.filter(_.userName === userName.bind).sortBy(_.gpgKeyId).list diff --git a/src/main/scala/gitbucket/core/service/IssuesService.scala b/src/main/scala/gitbucket/core/service/IssuesService.scala index 29665bd8e..9dbc344f0 100644 --- a/src/main/scala/gitbucket/core/service/IssuesService.scala +++ b/src/main/scala/gitbucket/core/service/IssuesService.scala @@ -752,7 +752,7 @@ trait IssuesService { implicit s: Session ): Unit = { extractIssueId(message).foreach { issueId => - val content = fromIssue.issueId + ":" + fromIssue.title + val content = s"${fromIssue.issueId}:${fromIssue.title}" if (getIssue(owner, repository, issueId).isDefined) { // Not add if refer comment already exist. if (!getComments(owner, repository, issueId.toInt).exists { x => diff --git a/src/main/scala/gitbucket/core/service/MergeService.scala b/src/main/scala/gitbucket/core/service/MergeService.scala index 61223744d..e3762e4a1 100644 --- a/src/main/scala/gitbucket/core/service/MergeService.scala +++ b/src/main/scala/gitbucket/core/service/MergeService.scala @@ -8,8 +8,6 @@ import gitbucket.core.service.RepositoryService.RepositoryInfo import gitbucket.core.util.Directory._ import gitbucket.core.util.{JGitUtil, LockUtil} import gitbucket.core.util.SyntaxSugars._ -import gitbucket.core.model.Profile._ -import gitbucket.core.model.Profile.profile._ import gitbucket.core.model.Profile.profile.blockingApi._ import org.eclipse.jgit.merge.{MergeStrategy, Merger, RecursiveMerger} import org.eclipse.jgit.api.Git @@ -18,7 +16,7 @@ import org.eclipse.jgit.errors.NoMergeBaseException import org.eclipse.jgit.lib.{CommitBuilder, ObjectId, PersonIdent, Repository} import org.eclipse.jgit.revwalk.{RevCommit, RevWalk} -import scala.collection.JavaConverters._ +import scala.jdk.CollectionConverters._ trait MergeService { self: AccountService diff --git a/src/main/scala/gitbucket/core/service/OpenIDConnectService.scala b/src/main/scala/gitbucket/core/service/OpenIDConnectService.scala index 2b60dce13..36ace5d95 100644 --- a/src/main/scala/gitbucket/core/service/OpenIDConnectService.scala +++ b/src/main/scala/gitbucket/core/service/OpenIDConnectService.scala @@ -17,7 +17,7 @@ import gitbucket.core.model.Account import gitbucket.core.model.Profile.profile.blockingApi._ import org.slf4j.LoggerFactory -import scala.collection.JavaConverters.{asScalaSet, mapAsJavaMap} +import scala.jdk.CollectionConverters._ /** * Service class for the OpenID Connect authentication. @@ -101,7 +101,7 @@ trait OpenIDConnectService { redirectURI: URI ): Option[AuthenticationSuccessResponse] = try { - AuthenticationResponseParser.parse(redirectURI, mapAsJavaMap(params)) match { + AuthenticationResponseParser.parse(redirectURI, params.asJava) match { case response: AuthenticationSuccessResponse => if (response.getState == state) { Some(response) @@ -207,5 +207,5 @@ object OpenIDConnectService { "RSA" -> Family.RSA, "ECDSA" -> Family.EC, "EdDSA" -> Family.ED - ).toMap.map { case (name, family) => (name, asScalaSet(family).toSet) } + ).toMap.map { case (name, family) => (name, family.asScala.toSet) } } diff --git a/src/main/scala/gitbucket/core/service/PullRequestService.scala b/src/main/scala/gitbucket/core/service/PullRequestService.scala index 05d771f9b..871b3f913 100644 --- a/src/main/scala/gitbucket/core/service/PullRequestService.scala +++ b/src/main/scala/gitbucket/core/service/PullRequestService.scala @@ -19,7 +19,7 @@ import gitbucket.core.view.helpers import org.eclipse.jgit.api.Git import org.eclipse.jgit.lib.ObjectId -import scala.collection.JavaConverters._ +import scala.jdk.CollectionConverters._ trait PullRequestService { self: IssuesService @@ -544,7 +544,7 @@ object PullRequestService { lazy val commitStateSummary: (CommitState, String) = { val stateMap = statuses.groupBy(_.state) val state = CommitState.combine(stateMap.keySet) - val summary = stateMap.map { case (keyState, states) => states.size + " " + keyState.name }.mkString(", ") + val summary = stateMap.map { case (keyState, states) => s"${states.size} ${keyState.name}" }.mkString(", ") state -> summary } lazy val statusesAndRequired: List[(CommitStatus, Boolean)] = statuses.map { s => diff --git a/src/main/scala/gitbucket/core/service/WebHookService.scala b/src/main/scala/gitbucket/core/service/WebHookService.scala index d3dff04fa..4da84b0e4 100644 --- a/src/main/scala/gitbucket/core/service/WebHookService.scala +++ b/src/main/scala/gitbucket/core/service/WebHookService.scala @@ -55,6 +55,7 @@ trait WebHookService { .map { case (w, t) => w -> t.event } .list .groupBy(_._1) + .view .mapValues(_.map(_._2).toSet) .toList .sortBy(_._1.url) @@ -87,6 +88,7 @@ trait WebHookService { .map { case (w, t) => w -> t.event } .list .groupBy(_._1) + .view .mapValues(_.map(_._2).toSet) .headOption @@ -136,6 +138,7 @@ trait WebHookService { .map { case (w, t) => w -> t.event } .list .groupBy(_._1) + .view .mapValues(_.map(_._2).toSet) .toList .sortBy(_._1.url) @@ -164,6 +167,7 @@ trait WebHookService { .map { case (w, t) => w -> t.event } .list .groupBy(_._1) + .view .mapValues(_.map(_._2).toSet) .headOption @@ -396,7 +400,7 @@ trait WebHookPullRequestService extends WebHookService { if wht.event === WebHook.PullRequest.asInstanceOf[WebHook.Event].bind && wht.byRepositoryWebHook(wh) } yield { ((is, iu, pr, bu, ru), wh) - }).list.groupBy(_._1).mapValues(_.map(_._2)) + }).list.groupBy(_._1).map { case (k, v) => (k, v.map(_._2)) } def callPullRequestWebHookByRequestBranch( action: String, diff --git a/src/main/scala/gitbucket/core/service/WikiService.scala b/src/main/scala/gitbucket/core/service/WikiService.scala index 9330fa4ed..47be225ea 100644 --- a/src/main/scala/gitbucket/core/service/WikiService.scala +++ b/src/main/scala/gitbucket/core/service/WikiService.scala @@ -14,7 +14,8 @@ import org.eclipse.jgit.diff.{DiffEntry, DiffFormatter} import java.io.ByteArrayInputStream import org.eclipse.jgit.patch._ import org.eclipse.jgit.api.errors.PatchFormatException -import scala.collection.JavaConverters._ + +import scala.jdk.CollectionConverters._ object WikiService { diff --git a/src/main/scala/gitbucket/core/servlet/ApiAuthenticationFilter.scala b/src/main/scala/gitbucket/core/servlet/ApiAuthenticationFilter.scala index 04cd7fc67..82cd80e9b 100644 --- a/src/main/scala/gitbucket/core/servlet/ApiAuthenticationFilter.scala +++ b/src/main/scala/gitbucket/core/servlet/ApiAuthenticationFilter.scala @@ -8,6 +8,9 @@ import gitbucket.core.service.SystemSettingsService.SystemSettings import gitbucket.core.service.{AccessTokenService, AccountService, SystemSettingsService} import gitbucket.core.util.{AuthUtil, Keys} import gitbucket.core.model.Profile.profile.blockingApi._ +// Imported names have higher precedence than names, defined in other files. +// If Database is not bound by explicit import, then "Database" refers to the Database introduced by the wildcard import above. +import gitbucket.core.servlet.Database class ApiAuthenticationFilter extends Filter with AccessTokenService with AccountService with SystemSettingsService { diff --git a/src/main/scala/gitbucket/core/servlet/GitAuthenticationFilter.scala b/src/main/scala/gitbucket/core/servlet/GitAuthenticationFilter.scala index 71d8144a4..e299d4ec0 100644 --- a/src/main/scala/gitbucket/core/servlet/GitAuthenticationFilter.scala +++ b/src/main/scala/gitbucket/core/servlet/GitAuthenticationFilter.scala @@ -4,12 +4,16 @@ import javax.servlet._ import javax.servlet.http._ import gitbucket.core.model.Account -import gitbucket.core.model.Profile.profile.blockingApi._ import gitbucket.core.plugin.{GitRepositoryFilter, GitRepositoryRouting, PluginRegistry} import gitbucket.core.service.SystemSettingsService.SystemSettings import gitbucket.core.service.{AccessTokenService, AccountService, RepositoryService, SystemSettingsService} import gitbucket.core.util.Implicits._ -import gitbucket.core.util.{AuthUtil, Implicits, Keys} +import gitbucket.core.util.{AuthUtil, Keys} +import gitbucket.core.model.Profile.profile.blockingApi._ +// Imported names have higher precedence than names, defined in other files. +// If Database is not bound by explicit import, then "Database" refers to the Database introduced by the wildcard import above. +import gitbucket.core.servlet.Database + import org.slf4j.LoggerFactory /** diff --git a/src/main/scala/gitbucket/core/servlet/GitRepositoryServlet.scala b/src/main/scala/gitbucket/core/servlet/GitRepositoryServlet.scala index 2c9e43f48..6151e09ef 100644 --- a/src/main/scala/gitbucket/core/servlet/GitRepositoryServlet.scala +++ b/src/main/scala/gitbucket/core/servlet/GitRepositoryServlet.scala @@ -6,7 +6,6 @@ import java.util.Date import gitbucket.core.api import gitbucket.core.model.WebHook -import gitbucket.core.model.Profile.profile.blockingApi._ import gitbucket.core.plugin.{GitRepositoryRouting, PluginRegistry} import gitbucket.core.service.IssuesService.IssueSearchCondition import gitbucket.core.service.WebHookService._ @@ -14,6 +13,11 @@ import gitbucket.core.service._ import gitbucket.core.util.SyntaxSugars._ import gitbucket.core.util.Implicits._ import gitbucket.core.util._ +import gitbucket.core.model.Profile.profile.blockingApi._ +// Imported names have higher precedence than names, defined in other files. +// If Database is not bound by explicit import, then "Database" refers to the Database introduced by the wildcard import above. +import gitbucket.core.servlet.Database + import org.eclipse.jgit.api.Git import org.eclipse.jgit.http.server.GitServlet import org.eclipse.jgit.lib._ @@ -108,7 +112,7 @@ class GitRepositoryServlet extends GitServlet with SystemSettingsService { GitLfs.Action( href = baseUrl + "/git-lfs/" + owner + "/" + repository + "/" + requestObject.oid, header = - Map("Authorization" -> StringUtil.encodeBlowfish(timeout + " " + requestObject.oid)), + Map("Authorization" -> StringUtil.encodeBlowfish(s"$timeout ${requestObject.oid}")), expires_at = new Date(timeout) ) ) @@ -129,7 +133,7 @@ class GitRepositoryServlet extends GitServlet with SystemSettingsService { GitLfs.Action( href = baseUrl + "/git-lfs/" + owner + "/" + repository + "/" + requestObject.oid, header = - Map("Authorization" -> StringUtil.encodeBlowfish(timeout + " " + requestObject.oid)), + Map("Authorization" -> StringUtil.encodeBlowfish(s"$timeout ${requestObject.oid}")), expires_at = new Date(timeout) ) ) @@ -216,7 +220,7 @@ class GitBucketReceivePackFactory extends ReceivePackFactory[HttpServletRequest] } } -import scala.collection.JavaConverters._ +import scala.jdk.CollectionConverters._ class CommitLogHook(owner: String, repository: String, pusher: String, baseUrl: String, sshUrl: Option[String]) extends PostReceiveHook diff --git a/src/main/scala/gitbucket/core/servlet/InitializeListener.scala b/src/main/scala/gitbucket/core/servlet/InitializeListener.scala index 74c043c58..1c03e5a0b 100644 --- a/src/main/scala/gitbucket/core/servlet/InitializeListener.scala +++ b/src/main/scala/gitbucket/core/servlet/InitializeListener.scala @@ -12,6 +12,10 @@ import gitbucket.core.util.Directory._ import gitbucket.core.util.SyntaxSugars._ import gitbucket.core.util.JDBCUtil._ import gitbucket.core.model.Profile.profile.blockingApi._ +// Imported names have higher precedence than names, defined in other files. +// If Database is not bound by explicit import, then "Database" refers to the Database introduced by the wildcard import above. +import gitbucket.core.servlet.Database + import io.github.gitbucket.solidbase.Solidbase import io.github.gitbucket.solidbase.manager.JDBCVersionManager import javax.servlet.{ServletContextEvent, ServletContextListener} @@ -21,7 +25,7 @@ import org.slf4j.LoggerFactory import akka.actor.{Actor, ActorSystem, Props} import com.typesafe.akka.extension.quartz.QuartzSchedulerExtension -import scala.collection.JavaConverters._ +import scala.jdk.CollectionConverters._ /** * Initialize GitBucket system. diff --git a/src/main/scala/gitbucket/core/util/FileUtil.scala b/src/main/scala/gitbucket/core/util/FileUtil.scala index ab42edd69..5da060dd8 100644 --- a/src/main/scala/gitbucket/core/util/FileUtil.scala +++ b/src/main/scala/gitbucket/core/util/FileUtil.scala @@ -36,7 +36,7 @@ object FileUtil { def isText(content: Array[Byte]): Boolean = !content.contains(0) - def generateFileId: String = System.currentTimeMillis + Random.alphanumeric.take(10).mkString + def generateFileId: String = s"${System.currentTimeMillis}${Random.alphanumeric.take(10).mkString}" def getExtension(name: String): String = name.lastIndexOf('.') match { @@ -56,7 +56,7 @@ object FileUtil { } def getLfsFilePath(owner: String, repository: String, oid: String): String = - Directory.getLfsDir(owner, repository) + "/" + checkFilename(oid) + s"${Directory.getLfsDir(owner, repository)}/${checkFilename(oid)}" def readableSize(size: Long): String = FileUtils.byteCountToDisplaySize(size) diff --git a/src/main/scala/gitbucket/core/util/GpgUtil.scala b/src/main/scala/gitbucket/core/util/GpgUtil.scala index 5d5edb475..c5f0a7365 100644 --- a/src/main/scala/gitbucket/core/util/GpgUtil.scala +++ b/src/main/scala/gitbucket/core/util/GpgUtil.scala @@ -1,7 +1,8 @@ package gitbucket.core.util import java.io.ByteArrayInputStream -import collection.JavaConverters._ +import scala.jdk.CollectionConverters._ + import gitbucket.core.model.Profile._ import gitbucket.core.model.Profile.profile.blockingApi._ import org.bouncycastle.bcpg.ArmoredInputStream diff --git a/src/main/scala/gitbucket/core/util/JDBCUtil.scala b/src/main/scala/gitbucket/core/util/JDBCUtil.scala index 9d34c8483..6e7e04395 100644 --- a/src/main/scala/gitbucket/core/util/JDBCUtil.scala +++ b/src/main/scala/gitbucket/core/util/JDBCUtil.scala @@ -218,7 +218,7 @@ object JDBCUtil { ordered ++ orphans } - def tsort[A](edges: Traversable[(A, A)]): Iterable[A] = { + def tsort[A](edges: Iterable[(A, A)]): Iterable[A] = { @tailrec def tsort(toPreds: Map[A, Set[A]], done: Iterable[A]): Iterable[A] = { val (noPreds, hasPreds) = toPreds.partition { _._2.isEmpty } @@ -226,7 +226,7 @@ object JDBCUtil { if (hasPreds.isEmpty) done else sys.error(hasPreds.toString) } else { val found = noPreds.map { _._1 } - tsort(hasPreds.mapValues { _ -- found }, done ++ found) + tsort(hasPreds.map { case (k, v) => (k, v -- found) }, done ++ found) } } diff --git a/src/main/scala/gitbucket/core/util/JGitUtil.scala b/src/main/scala/gitbucket/core/util/JGitUtil.scala index e875a2b39..c2ad5e223 100644 --- a/src/main/scala/gitbucket/core/util/JGitUtil.scala +++ b/src/main/scala/gitbucket/core/util/JGitUtil.scala @@ -9,7 +9,7 @@ import StringUtil._ import SyntaxSugars._ import scala.annotation.tailrec -import scala.collection.JavaConverters._ +import scala.jdk.CollectionConverters._ import org.eclipse.jgit.lib._ import org.eclipse.jgit.revwalk._ import org.eclipse.jgit.revwalk.filter._ @@ -20,7 +20,6 @@ import org.eclipse.jgit.errors.{ConfigInvalidException, IncorrectObjectTypeExcep import org.eclipse.jgit.transport.RefSpec import java.util.Date import java.util.concurrent.TimeUnit -import java.util.function.Consumer import org.cache2k.Cache2kBuilder import org.eclipse.jgit.api.errors._ @@ -684,7 +683,7 @@ object JGitUtil { df.setRepository(git.getRepository) val toCommit = revWalk.parseCommit(git.getRepository.resolve(to)) - from match { + (from match { case None => { toCommit.getParentCount match { case 0 => @@ -700,7 +699,7 @@ object JGitUtil { val fromCommit = revWalk.parseCommit(git.getRepository.resolve(from)) df.scan(fromCommit.getTree, toCommit.getTree).asScala } - } + }).toSeq } } @@ -908,10 +907,10 @@ object JGitUtil { } Right("Tag added.") } catch { - case e: GitAPIException => Left("Sorry, some Git operation error occurs.") - case e: ConcurrentRefUpdateException => Left("Sorry some error occurs.") + case e: ConcurrentRefUpdateException => Left("Sorry, some error occurs.") case e: InvalidTagNameException => Left("Sorry, that name is invalid.") case e: NoHeadException => Left("Sorry, this repo doesn't have HEAD reference") + case e: GitAPIException => Left("Sorry, some Git operation error occurs.") } } @@ -1247,7 +1246,7 @@ object JGitUtil { } finally { walk.dispose() } - } + }.toSeq } def getBlame(git: Git, id: String, path: String): Iterable[BlameInfo] = { @@ -1277,7 +1276,7 @@ object JGitUtil { } idLine :+= (c.name, i) } - val limeMap = idLine.groupBy(_._1).mapValues(_.map(_._2).toSet) + val limeMap = idLine.groupBy(_._1).view.mapValues(_.map(_._2).toSet) blameMap.values.map { b => b.copy(lines = limeMap(b.id)) } diff --git a/src/main/twirl/gitbucket/core/issues/labels/edit.scala.html b/src/main/twirl/gitbucket/core/issues/labels/edit.scala.html index 62edc4a0a..2c40a4201 100644 --- a/src/main/twirl/gitbucket/core/issues/labels/edit.scala.html +++ b/src/main/twirl/gitbucket/core/issues/labels/edit.scala.html @@ -22,7 +22,7 @@