mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-07 05:55:51 +01:00
Deprecate using
This commit is contained in:
@@ -20,6 +20,7 @@ import javax.servlet.{FilterChain, ServletRequest, ServletResponse}
|
||||
import is.tagomor.woothee.Classifier
|
||||
|
||||
import scala.util.Try
|
||||
import scala.util.Using
|
||||
import net.coobird.thumbnailator.Thumbnails
|
||||
import org.eclipse.jgit.api.Git
|
||||
import org.eclipse.jgit.lib.ObjectId
|
||||
@@ -240,7 +241,7 @@ abstract class ControllerBase
|
||||
case false => None
|
||||
}
|
||||
|
||||
using(new TreeWalk(git.getRepository)) { treeWalk =>
|
||||
Using.resource(new TreeWalk(git.getRepository)) { treeWalk =>
|
||||
treeWalk.addTree(revCommit.getTree)
|
||||
treeWalk.setRecursive(true)
|
||||
_getPathObjectId(path, treeWalk)
|
||||
@@ -268,7 +269,7 @@ abstract class ControllerBase
|
||||
response.setContentLength(attrs("size").toInt)
|
||||
val oid = attrs("oid").split(":")(1)
|
||||
|
||||
using(new FileInputStream(FileUtil.getLfsFilePath(repository.owner, repository.name, oid))) { in =>
|
||||
Using.resource(new FileInputStream(FileUtil.getLfsFilePath(repository.owner, repository.name, oid))) { in =>
|
||||
IOUtils.copy(in, response.getOutputStream)
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -16,6 +16,8 @@ import org.scalatra._
|
||||
import org.scalatra.servlet.{FileItem, FileUploadSupport, MultipartConfig}
|
||||
import org.apache.commons.io.{FileUtils, IOUtils}
|
||||
|
||||
import scala.util.Using
|
||||
|
||||
/**
|
||||
* Provides Ajax based file upload functionality.
|
||||
*
|
||||
@@ -80,7 +82,7 @@ class FileUploadController
|
||||
{ (file, fileId) =>
|
||||
val fileName = file.getName
|
||||
LockUtil.lock(s"${owner}/${repository}/wiki") {
|
||||
using(Git.open(Directory.getWikiRepositoryDir(owner, repository))) {
|
||||
Using.resource(Git.open(Directory.getWikiRepositoryDir(owner, repository))) {
|
||||
git =>
|
||||
val builder = DirCache.newInCore.builder()
|
||||
val inserter = git.getRepository.newObjectInserter()
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
package gitbucket.core.controller
|
||||
|
||||
import gitbucket.core.model.{CommitComment, CommitComments, IssueComment, WebHook}
|
||||
import gitbucket.core.plugin.PluginRegistry
|
||||
import gitbucket.core.pulls.html
|
||||
import gitbucket.core.service.CommitStatusService
|
||||
import gitbucket.core.service.MergeService
|
||||
@@ -15,11 +13,9 @@ import gitbucket.core.util.Implicits._
|
||||
import gitbucket.core.util._
|
||||
import org.scalatra.forms._
|
||||
import org.eclipse.jgit.api.Git
|
||||
import org.eclipse.jgit.lib.{ObjectId, PersonIdent}
|
||||
import org.eclipse.jgit.revwalk.RevWalk
|
||||
import org.scalatra.BadRequest
|
||||
|
||||
import scala.collection.JavaConverters._
|
||||
import scala.util.Using
|
||||
|
||||
class PullRequestsController
|
||||
extends PullRequestsControllerBase
|
||||
@@ -273,7 +269,7 @@ trait PullRequestsControllerBase extends ControllerBase {
|
||||
} else {
|
||||
if (repository.repository.defaultBranch != pullreq.requestBranch) {
|
||||
val userName = context.loginAccount.get.userName
|
||||
using(Git.open(getRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
Using.resource(Git.open(getRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
git.branchDelete().setForce(true).setBranchNames(pullreq.requestBranch).call()
|
||||
recordDeleteBranchActivity(repository.owner, repository.name, userName, pullreq.requestBranch)
|
||||
}
|
||||
@@ -316,9 +312,11 @@ trait PullRequestsControllerBase extends ControllerBase {
|
||||
} else {
|
||||
s"${pullreq.userName}:${pullreq.branch}"
|
||||
}
|
||||
val existIds = using(Git.open(Directory.getRepositoryDir(owner, name))) { git =>
|
||||
val existIds = Using
|
||||
.resource(Git.open(Directory.getRepositoryDir(owner, name))) { git =>
|
||||
JGitUtil.getAllCommitIds(git)
|
||||
}.toSet
|
||||
}
|
||||
.toSet
|
||||
pullRemote(
|
||||
repository,
|
||||
pullreq.requestBranch,
|
||||
@@ -372,7 +370,7 @@ trait PullRequestsControllerBase extends ControllerBase {
|
||||
case (Some(originUserName), Some(originRepositoryName)) => {
|
||||
getRepository(originUserName, originRepositoryName).map {
|
||||
originRepository =>
|
||||
using(
|
||||
Using.resources(
|
||||
Git.open(getRepositoryDir(originUserName, originRepositoryName)),
|
||||
Git.open(getRepositoryDir(forkedRepository.owner, forkedRepository.name))
|
||||
) { (oldGit, newGit) =>
|
||||
@@ -388,7 +386,7 @@ trait PullRequestsControllerBase extends ControllerBase {
|
||||
} getOrElse NotFound()
|
||||
}
|
||||
case _ => {
|
||||
using(Git.open(getRepositoryDir(forkedRepository.owner, forkedRepository.name))) { git =>
|
||||
Using.resource(Git.open(getRepositoryDir(forkedRepository.owner, forkedRepository.name))) { git =>
|
||||
JGitUtil.getDefaultBranch(git, forkedRepository).map {
|
||||
case (_, defaultBranch) =>
|
||||
redirect(
|
||||
@@ -510,7 +508,7 @@ trait PullRequestsControllerBase extends ControllerBase {
|
||||
}
|
||||
};
|
||||
originRepository <- getRepository(originOwner, originRepositoryName)) yield {
|
||||
using(
|
||||
Using.resources(
|
||||
Git.open(getRepositoryDir(originRepository.owner, originRepository.name)),
|
||||
Git.open(getRepositoryDir(forkedRepository.owner, forkedRepository.name))
|
||||
) {
|
||||
@@ -585,7 +583,7 @@ trait PullRequestsControllerBase extends ControllerBase {
|
||||
context.loginAccount.map(x => Seq(x.mailAddress) ++ getAccountExtraMailAddresses(x.userName)).getOrElse(Nil)
|
||||
|
||||
val branches =
|
||||
using(Git.open(getRepositoryDir(repository.owner, repository.name))) {
|
||||
Using.resource(Git.open(getRepositoryDir(repository.owner, repository.name))) {
|
||||
git =>
|
||||
JGitUtil
|
||||
.getBranches(
|
||||
|
||||
@@ -12,12 +12,14 @@ import gitbucket.core.util.JGitUtil._
|
||||
import gitbucket.core.util.SyntaxSugars._
|
||||
import gitbucket.core.util.Implicits._
|
||||
import gitbucket.core.util.Directory._
|
||||
import gitbucket.core.model.WebHookContentType
|
||||
import org.scalatra.forms._
|
||||
import org.scalatra.i18n.Messages
|
||||
import org.eclipse.jgit.api.Git
|
||||
import org.eclipse.jgit.lib.Constants
|
||||
import org.eclipse.jgit.lib.ObjectId
|
||||
import gitbucket.core.model.WebHookContentType
|
||||
|
||||
import scala.util.Using
|
||||
|
||||
class RepositorySettingsController
|
||||
extends RepositorySettingsControllerBase
|
||||
@@ -164,7 +166,7 @@ trait RepositorySettingsControllerBase extends ControllerBase {
|
||||
} else {
|
||||
saveRepositoryDefaultBranch(repository.owner, repository.name, form.defaultBranch)
|
||||
// Change repository HEAD
|
||||
using(Git.open(getRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
Using.resource(Git.open(getRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
git.getRepository.updateRef(Constants.HEAD, true).link(Constants.R_HEADS + form.defaultBranch)
|
||||
}
|
||||
flash.update("info", "Repository default branch has been updated.")
|
||||
@@ -252,7 +254,7 @@ trait RepositorySettingsControllerBase extends ControllerBase {
|
||||
Array(h.getName, h.getValue)
|
||||
}
|
||||
|
||||
using(Git.open(getRepositoryDir(repository.owner, repository.name))) {
|
||||
Using.resource(Git.open(getRepositoryDir(repository.owner, repository.name))) {
|
||||
git =>
|
||||
import scala.concurrent.duration._
|
||||
import scala.concurrent._
|
||||
@@ -386,7 +388,7 @@ trait RepositorySettingsControllerBase extends ControllerBase {
|
||||
*/
|
||||
post("/:owner/:repository/settings/gc")(ownerOnly { repository =>
|
||||
LockUtil.lock(s"${repository.owner}/${repository.name}") {
|
||||
using(Git.open(getRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
Using.resource(Git.open(getRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
git.gc().call()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package gitbucket.core.controller
|
||||
|
||||
import java.io.File
|
||||
|
||||
import scala.util.Using
|
||||
import javax.servlet.http.{HttpServletRequest, HttpServletResponse}
|
||||
import gitbucket.core.plugin.PluginRegistry
|
||||
import gitbucket.core.repo.html
|
||||
@@ -262,7 +263,7 @@ trait RepositoryViewerControllerBase extends ControllerBase {
|
||||
state -> summary
|
||||
}
|
||||
|
||||
using(Git.open(getRepositoryDir(repository.owner, repository.name))) {
|
||||
Using(Git.open(getRepositoryDir(repository.owner, repository.name))) {
|
||||
git =>
|
||||
def getTags(sha: String): List[String] = {
|
||||
JGitUtil.getTagsOnCommit(git, sha)
|
||||
@@ -315,7 +316,7 @@ trait RepositoryViewerControllerBase extends ControllerBase {
|
||||
val protectedBranch = getProtectedBranchInfo(repository.owner, repository.name, branch)
|
||||
.needStatusCheck(context.loginAccount.get.userName)
|
||||
|
||||
using(Git.open(getRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
Using(Git.open(getRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
val revCommit = JGitUtil.getRevCommitFromId(git, git.getRepository.resolve(branch))
|
||||
|
||||
html.editor(
|
||||
@@ -384,7 +385,7 @@ trait RepositoryViewerControllerBase extends ControllerBase {
|
||||
val protectedBranch = getProtectedBranchInfo(repository.owner, repository.name, branch)
|
||||
.needStatusCheck(context.loginAccount.get.userName)
|
||||
|
||||
using(Git.open(getRepositoryDir(repository.owner, repository.name))) {
|
||||
Using(Git.open(getRepositoryDir(repository.owner, repository.name))) {
|
||||
git =>
|
||||
val revCommit = JGitUtil.getRevCommitFromId(git, git.getRepository.resolve(branch))
|
||||
|
||||
@@ -411,7 +412,7 @@ trait RepositoryViewerControllerBase extends ControllerBase {
|
||||
|
||||
get("/:owner/:repository/remove/*")(writableUsersOnly { repository =>
|
||||
val (branch, path) = repository.splitPath(multiParams("splat").head)
|
||||
using(Git.open(getRepositoryDir(repository.owner, repository.name))) {
|
||||
Using(Git.open(getRepositoryDir(repository.owner, repository.name))) {
|
||||
git =>
|
||||
val revCommit = JGitUtil.getRevCommitFromId(git, git.getRepository.resolve(branch))
|
||||
|
||||
@@ -487,8 +488,6 @@ trait RepositoryViewerControllerBase extends ControllerBase {
|
||||
loginAccount = context.loginAccount.get
|
||||
)
|
||||
|
||||
println(form.path)
|
||||
|
||||
redirect(
|
||||
s"/${repository.owner}/${repository.name}/tree/${form.branch}${if (form.path.length == 0) "" else "/" + form.path}"
|
||||
)
|
||||
@@ -496,7 +495,7 @@ trait RepositoryViewerControllerBase extends ControllerBase {
|
||||
|
||||
get("/:owner/:repository/raw/*")(referrersOnly { repository =>
|
||||
val (id, path) = repository.splitPath(multiParams("splat").head)
|
||||
using(Git.open(getRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
Using(Git.open(getRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
val revCommit = JGitUtil.getRevCommitFromId(git, git.getRepository.resolve(id))
|
||||
|
||||
getPathObjectId(git, path, revCommit).map { objectId =>
|
||||
@@ -511,7 +510,7 @@ trait RepositoryViewerControllerBase extends ControllerBase {
|
||||
val blobRoute = get("/:owner/:repository/blob/*")(referrersOnly { repository =>
|
||||
val (id, path) = repository.splitPath(multiParams("splat").head)
|
||||
val raw = params.get("raw").getOrElse("false").toBoolean
|
||||
using(Git.open(getRepositoryDir(repository.owner, repository.name))) {
|
||||
Using(Git.open(getRepositoryDir(repository.owner, repository.name))) {
|
||||
git =>
|
||||
val revCommit = JGitUtil.getRevCommitFromId(git, git.getRepository.resolve(id))
|
||||
getPathObjectId(git, path, revCommit).map {
|
||||
@@ -551,7 +550,7 @@ trait RepositoryViewerControllerBase extends ControllerBase {
|
||||
ajaxGet("/:owner/:repository/get-blame/*")(referrersOnly { repository =>
|
||||
val (id, path) = repository.splitPath(multiParams("splat").head)
|
||||
contentType = formats("json")
|
||||
using(Git.open(getRepositoryDir(repository.owner, repository.name))) {
|
||||
Using(Git.open(getRepositoryDir(repository.owner, repository.name))) {
|
||||
git =>
|
||||
val last = git.log.add(git.getRepository.resolve(id)).addPath(path).setMaxCount(1).call.iterator.next.name
|
||||
Serialization.write(
|
||||
@@ -586,7 +585,7 @@ trait RepositoryViewerControllerBase extends ControllerBase {
|
||||
val id = params("id")
|
||||
|
||||
try {
|
||||
using(Git.open(getRepositoryDir(repository.owner, repository.name))) {
|
||||
Using(Git.open(getRepositoryDir(repository.owner, repository.name))) {
|
||||
git =>
|
||||
defining(JGitUtil.getRevCommitFromId(git, git.getRepository.resolve(id))) {
|
||||
revCommit =>
|
||||
@@ -615,7 +614,7 @@ trait RepositoryViewerControllerBase extends ControllerBase {
|
||||
|
||||
get("/:owner/:repository/patch/:id")(referrersOnly { repository =>
|
||||
try {
|
||||
using(Git.open(getRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
Using(Git.open(getRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
val diff = JGitUtil.getPatch(git, None, params("id"))
|
||||
contentType = formats("txt")
|
||||
diff
|
||||
@@ -628,7 +627,7 @@ trait RepositoryViewerControllerBase extends ControllerBase {
|
||||
get("/:owner/:repository/patch/*...*")(referrersOnly { repository =>
|
||||
try {
|
||||
val Seq(fromId, toId) = multiParams("splat")
|
||||
using(Git.open(getRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
Using(Git.open(getRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
val diff = JGitUtil.getPatch(git, Some(fromId), toId)
|
||||
contentType = formats("txt")
|
||||
diff
|
||||
@@ -748,7 +747,7 @@ trait RepositoryViewerControllerBase extends ControllerBase {
|
||||
*/
|
||||
get("/:owner/:repository/branches")(referrersOnly { repository =>
|
||||
val protectedBranches = getProtectedBranchList(repository.owner, repository.name).toSet
|
||||
val branches = using(Git.open(getRepositoryDir(repository.owner, repository.name))) {
|
||||
val branches = Using.resource(Git.open(getRepositoryDir(repository.owner, repository.name))) {
|
||||
git =>
|
||||
JGitUtil
|
||||
.getBranches(
|
||||
@@ -788,7 +787,7 @@ trait RepositoryViewerControllerBase extends ControllerBase {
|
||||
* Creates a tag.
|
||||
*/
|
||||
post("/:owner/:repository/tag", tagForm)(writableUsersOnly { (form, repository) =>
|
||||
using(Git.open(getRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
Using.resource(Git.open(getRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
JGitUtil.createTag(git, form.tagName, form.message, form.commitId)
|
||||
} match {
|
||||
case Right(message) =>
|
||||
@@ -806,7 +805,7 @@ trait RepositoryViewerControllerBase extends ControllerBase {
|
||||
post("/:owner/:repository/branches")(writableUsersOnly { repository =>
|
||||
val newBranchName = params.getOrElse("new", halt(400))
|
||||
val fromBranchName = params.getOrElse("from", halt(400))
|
||||
using(Git.open(getRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
Using.resource(Git.open(getRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
JGitUtil.createBranch(git, fromBranchName, newBranchName)
|
||||
} match {
|
||||
case Right(message) =>
|
||||
@@ -827,7 +826,7 @@ trait RepositoryViewerControllerBase extends ControllerBase {
|
||||
val branchName = multiParams("splat").head
|
||||
val userName = context.loginAccount.get.userName
|
||||
if (repository.repository.defaultBranch != branchName) {
|
||||
using(Git.open(getRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
Using.resource(Git.open(getRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
git.branchDelete().setForce(true).setBranchNames(branchName).call()
|
||||
recordDeleteBranchActivity(repository.owner, repository.name, userName, branchName)
|
||||
}
|
||||
@@ -879,7 +878,7 @@ trait RepositoryViewerControllerBase extends ControllerBase {
|
||||
* Displays the file find of branch.
|
||||
*/
|
||||
get("/:owner/:repository/find/*")(referrersOnly { repository =>
|
||||
using(Git.open(getRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
Using.resource(Git.open(getRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
val ref = multiParams("splat").head
|
||||
JGitUtil.getTreeId(git, ref).map { treeId =>
|
||||
html.find(ref, treeId, repository)
|
||||
@@ -891,7 +890,7 @@ trait RepositoryViewerControllerBase extends ControllerBase {
|
||||
* Get all file list of branch.
|
||||
*/
|
||||
ajaxGet("/:owner/:repository/tree-list/:tree")(referrersOnly { repository =>
|
||||
using(Git.open(getRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
Using.resource(Git.open(getRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
val treeId = params("tree")
|
||||
contentType = formats("json")
|
||||
Map("paths" -> JGitUtil.getAllFileListByTreeId(git, treeId))
|
||||
@@ -915,7 +914,7 @@ trait RepositoryViewerControllerBase extends ControllerBase {
|
||||
* @return HTML of the file list
|
||||
*/
|
||||
private def fileList(repository: RepositoryService.RepositoryInfo, revstr: String = "", path: String = ".") = {
|
||||
using(Git.open(getRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
Using.resource(Git.open(getRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
if (JGitUtil.isEmpty(git)) {
|
||||
html.guide(repository, hasDeveloperRole(repository.owner, repository.name, context.loginAccount))
|
||||
} else {
|
||||
@@ -974,7 +973,7 @@ trait RepositoryViewerControllerBase extends ControllerBase {
|
||||
def archive(revision: String, archiveFormat: String, archive: ArchiveOutputStream)(
|
||||
entryCreator: (String, Long, java.util.Date, Int) => ArchiveEntry
|
||||
): Unit = {
|
||||
using(Git.open(getRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
Using.resource(Git.open(getRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
val oid = git.getRepository.resolve(revision)
|
||||
val commit = JGitUtil.getRevCommitFromId(git, oid)
|
||||
val date = commit.getCommitterIdent.getWhen
|
||||
@@ -983,7 +982,7 @@ trait RepositoryViewerControllerBase extends ControllerBase {
|
||||
val pathSuffix = if (path.isEmpty) "" else s"-${path.replace('/', '-')}"
|
||||
val baseName = repository.name + "-" + repositorySuffix + pathSuffix
|
||||
|
||||
using(new TreeWalk(git.getRepository)) { treeWalk =>
|
||||
Using.resource(new TreeWalk(git.getRepository)) { treeWalk =>
|
||||
treeWalk.addTree(commit.getTree)
|
||||
treeWalk.setRecursive(true)
|
||||
if (!path.isEmpty) {
|
||||
@@ -1032,7 +1031,7 @@ trait RepositoryViewerControllerBase extends ControllerBase {
|
||||
)
|
||||
contentType = "application/octet-stream"
|
||||
response.setBufferSize(1024 * 1024)
|
||||
using(new ZipArchiveOutputStream(response.getOutputStream)) { zip =>
|
||||
Using.resource(new ZipArchiveOutputStream(response.getOutputStream)) { zip =>
|
||||
archive(revision, ".zip", zip) { (path, size, date, mode) =>
|
||||
val entry = new ZipArchiveEntry(path)
|
||||
entry.setUnixMode(mode)
|
||||
@@ -1048,12 +1047,12 @@ trait RepositoryViewerControllerBase extends ControllerBase {
|
||||
)
|
||||
contentType = "application/octet-stream"
|
||||
response.setBufferSize(1024 * 1024)
|
||||
using(compressor match {
|
||||
Using.resource(compressor match {
|
||||
case "gz" => new GzipCompressorOutputStream(response.getOutputStream)
|
||||
case "bz2" => new BZip2CompressorOutputStream(response.getOutputStream)
|
||||
case "xz" => new XZCompressorOutputStream(response.getOutputStream)
|
||||
}) { compressorOutputStream =>
|
||||
using(new TarArchiveOutputStream(compressorOutputStream)) { tar =>
|
||||
Using.resource(new TarArchiveOutputStream(compressorOutputStream)) { tar =>
|
||||
tar.setBigNumberMode(TarArchiveOutputStream.BIGNUMBER_STAR)
|
||||
tar.setLongFileMode(TarArchiveOutputStream.LONGFILE_GNU)
|
||||
tar.setAddPaxHeadersForNonAsciiNames(true)
|
||||
@@ -1081,7 +1080,7 @@ trait RepositoryViewerControllerBase extends ControllerBase {
|
||||
val branch = params("branch")
|
||||
|
||||
LockUtil.lock(s"${owner}/${repository}") {
|
||||
using(Git.open(getRepositoryDir(owner, repository))) { git =>
|
||||
Using.resource(Git.open(getRepositoryDir(owner, repository))) { git =>
|
||||
val headName = s"refs/heads/${branch}"
|
||||
val headTip = git.getRepository.resolve(headName)
|
||||
if (headTip.getName != value) {
|
||||
|
||||
@@ -19,6 +19,7 @@ import org.scalatra.forms._
|
||||
import org.scalatra.i18n.Messages
|
||||
|
||||
import scala.collection.mutable.ListBuffer
|
||||
import scala.util.Using
|
||||
|
||||
class SystemSettingsController
|
||||
extends SystemSettingsControllerBase
|
||||
@@ -225,20 +226,20 @@ trait SystemSettingsControllerBase extends AccountManagementControllerBase {
|
||||
val conn = request2Session(request).conn
|
||||
val meta = conn.getMetaData
|
||||
val tables = ListBuffer[Table]()
|
||||
using(meta.getTables(null, "%", "%", Array("TABLE", "VIEW"))) {
|
||||
Using.resource(meta.getTables(null, "%", "%", Array("TABLE", "VIEW"))) {
|
||||
rs =>
|
||||
while (rs.next()) {
|
||||
val tableName = rs.getString("TABLE_NAME")
|
||||
|
||||
val pkColumns = ListBuffer[String]()
|
||||
using(meta.getPrimaryKeys(null, null, tableName)) { rs =>
|
||||
Using.resource(meta.getPrimaryKeys(null, null, tableName)) { rs =>
|
||||
while (rs.next()) {
|
||||
pkColumns += rs.getString("COLUMN_NAME").toUpperCase
|
||||
}
|
||||
}
|
||||
|
||||
val columns = ListBuffer[Column]()
|
||||
using(meta.getColumns(null, "%", tableName, "%")) { rs =>
|
||||
Using.resource(meta.getColumns(null, "%", tableName, "%")) { rs =>
|
||||
while (rs.next()) {
|
||||
val columnName = rs.getString("COLUMN_NAME").toUpperCase
|
||||
columns += Column(columnName, pkColumns.contains(columnName))
|
||||
@@ -259,10 +260,10 @@ trait SystemSettingsControllerBase extends AccountManagementControllerBase {
|
||||
if (trimmedQuery.nonEmpty) {
|
||||
try {
|
||||
val conn = request2Session(request).conn
|
||||
using(conn.prepareStatement(query)) {
|
||||
Using.resource(conn.prepareStatement(query)) {
|
||||
stmt =>
|
||||
if (trimmedQuery.toUpperCase.startsWith("SELECT")) {
|
||||
using(stmt.executeQuery()) {
|
||||
Using.resource(stmt.executeQuery()) {
|
||||
rs =>
|
||||
val meta = rs.getMetaData
|
||||
val columns = for (i <- 1 to meta.getColumnCount) yield {
|
||||
@@ -516,7 +517,7 @@ trait SystemSettingsControllerBase extends AccountManagementControllerBase {
|
||||
response.setHeader("Content-Disposition", "attachment; filename=" + file.getName)
|
||||
response.setContentLength(file.length.toInt)
|
||||
|
||||
using(new FileInputStream(file)) { in =>
|
||||
Using.resource(new FileInputStream(file)) { in =>
|
||||
IOUtils.copy(in, response.outputStream)
|
||||
}
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ import gitbucket.core.util.Directory._
|
||||
import org.scalatra.forms._
|
||||
import org.eclipse.jgit.api.Git
|
||||
import org.scalatra.i18n.Messages
|
||||
import scala.util.Using
|
||||
|
||||
class WikiController
|
||||
extends WikiControllerBase
|
||||
@@ -90,7 +91,7 @@ trait WikiControllerBase extends ControllerBase {
|
||||
get("/:owner/:repository/wiki/:page/_history")(referrersOnly { repository =>
|
||||
val pageName = StringUtil.urlDecode(params("page"))
|
||||
|
||||
using(Git.open(getWikiRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
Using.resource(Git.open(getWikiRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
JGitUtil.getCommitLog(git, "master", path = pageName + ".md") match {
|
||||
case Right((logs, hasNext)) => html.history(Some(pageName), logs, repository, isEditable(repository))
|
||||
case Left(_) => NotFound()
|
||||
@@ -102,7 +103,7 @@ trait WikiControllerBase extends ControllerBase {
|
||||
val pageName = StringUtil.urlDecode(params("page"))
|
||||
val Array(from, to) = params("commitId").split("\\.\\.\\.")
|
||||
|
||||
using(Git.open(getWikiRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
Using.resource(Git.open(getWikiRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
html.compare(
|
||||
Some(pageName),
|
||||
from,
|
||||
@@ -118,7 +119,7 @@ trait WikiControllerBase extends ControllerBase {
|
||||
get("/:owner/:repository/wiki/_compare/:commitId")(referrersOnly { repository =>
|
||||
val Array(from, to) = params("commitId").split("\\.\\.\\.")
|
||||
|
||||
using(Git.open(getWikiRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
Using.resource(Git.open(getWikiRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
html.compare(
|
||||
None,
|
||||
from,
|
||||
@@ -269,7 +270,7 @@ trait WikiControllerBase extends ControllerBase {
|
||||
})
|
||||
|
||||
get("/:owner/:repository/wiki/_history")(referrersOnly { repository =>
|
||||
using(Git.open(getWikiRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
Using.resource(Git.open(getWikiRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
JGitUtil.getCommitLog(git, "master") match {
|
||||
case Right((logs, hasNext)) => html.history(None, logs, repository, isEditable(repository))
|
||||
case Left(_) => NotFound()
|
||||
@@ -279,7 +280,7 @@ trait WikiControllerBase extends ControllerBase {
|
||||
|
||||
get("/:owner/:repository/wiki/_blob/*")(referrersOnly { repository =>
|
||||
val path = multiParams("splat").head
|
||||
using(Git.open(getWikiRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
Using.resource(Git.open(getWikiRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
val revCommit = JGitUtil.getRevCommitFromId(git, git.getRepository.resolve("master"))
|
||||
|
||||
getPathObjectId(git, path, revCommit).map { objectId =>
|
||||
|
||||
@@ -3,11 +3,11 @@ import gitbucket.core.api.{ApiObject, ApiRef, JsonFormat}
|
||||
import gitbucket.core.controller.ControllerBase
|
||||
import gitbucket.core.util.Directory.getRepositoryDir
|
||||
import gitbucket.core.util.ReferrerAuthenticator
|
||||
import gitbucket.core.util.SyntaxSugars.using
|
||||
import gitbucket.core.util.Implicits._
|
||||
import org.eclipse.jgit.api.Git
|
||||
|
||||
import scala.jdk.CollectionConverters._
|
||||
import scala.util.Using
|
||||
|
||||
trait ApiGitReferenceControllerBase extends ControllerBase {
|
||||
self: ReferrerAuthenticator =>
|
||||
@@ -18,7 +18,7 @@ trait ApiGitReferenceControllerBase extends ControllerBase {
|
||||
*/
|
||||
get("/api/v3/repos/:owner/:repository/git/refs/*")(referrersOnly { repository =>
|
||||
val revstr = multiParams("splat").head
|
||||
using(Git.open(getRepositoryDir(params("owner"), params("repository")))) { git =>
|
||||
Using.resource(Git.open(getRepositoryDir(params("owner"), params("repository")))) { git =>
|
||||
val ref = git.getRepository().findRef(revstr)
|
||||
|
||||
if (ref != null) {
|
||||
|
||||
@@ -3,11 +3,11 @@ import gitbucket.core.api._
|
||||
import gitbucket.core.controller.ControllerBase
|
||||
import gitbucket.core.service.{AccountService, ProtectedBranchService, RepositoryService}
|
||||
import gitbucket.core.util._
|
||||
import gitbucket.core.util.SyntaxSugars._
|
||||
import gitbucket.core.util.Directory._
|
||||
import gitbucket.core.util.Implicits._
|
||||
import gitbucket.core.util.JGitUtil.getBranches
|
||||
import org.eclipse.jgit.api.Git
|
||||
import scala.util.Using
|
||||
|
||||
trait ApiRepositoryBranchControllerBase extends ControllerBase {
|
||||
self: RepositoryService
|
||||
@@ -25,7 +25,7 @@ trait ApiRepositoryBranchControllerBase extends ControllerBase {
|
||||
* https://developer.github.com/v3/repos/branches/#list-branches
|
||||
*/
|
||||
get("/api/v3/repos/:owner/:repository/branches")(referrersOnly { repository =>
|
||||
using(Git.open(getRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
Using.resource(Git.open(getRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
JsonFormat(
|
||||
JGitUtil
|
||||
.getBranches(
|
||||
@@ -45,7 +45,7 @@ trait ApiRepositoryBranchControllerBase extends ControllerBase {
|
||||
* https://developer.github.com/v3/repos/branches/#get-branch
|
||||
*/
|
||||
get("/api/v3/repos/:owner/:repository/branches/*")(referrersOnly { repository =>
|
||||
using(Git.open(getRepositoryDir(repository.owner, repository.name))) {
|
||||
Using.resource(Git.open(getRepositoryDir(repository.owner, repository.name))) {
|
||||
git =>
|
||||
(for {
|
||||
branch <- params.get("splat") if repository.branchList.contains(branch)
|
||||
@@ -214,7 +214,7 @@ trait ApiRepositoryBranchControllerBase extends ControllerBase {
|
||||
*/
|
||||
patch("/api/v3/repos/:owner/:repository/branches/*")(ownerOnly { repository =>
|
||||
import gitbucket.core.api._
|
||||
using(Git.open(getRepositoryDir(repository.owner, repository.name))) {
|
||||
Using.resource(Git.open(getRepositoryDir(repository.owner, repository.name))) {
|
||||
git =>
|
||||
(for {
|
||||
branch <- params.get("splat") if repository.branchList.contains(branch)
|
||||
|
||||
@@ -7,9 +7,9 @@ import gitbucket.core.util.Directory.getRepositoryDir
|
||||
import gitbucket.core.util.Implicits._
|
||||
import gitbucket.core.util.JGitUtil.CommitInfo
|
||||
import gitbucket.core.util.{JGitUtil, ReferrerAuthenticator, RepositoryName}
|
||||
import gitbucket.core.util.SyntaxSugars.using
|
||||
import org.eclipse.jgit.api.Git
|
||||
import org.eclipse.jgit.revwalk.RevWalk
|
||||
import scala.util.Using
|
||||
|
||||
trait ApiRepositoryCommitControllerBase extends ControllerBase {
|
||||
self: AccountService with CommitsService with ReferrerAuthenticator =>
|
||||
@@ -27,11 +27,11 @@ trait ApiRepositoryCommitControllerBase extends ControllerBase {
|
||||
val name = repository.name
|
||||
val sha = params("sha")
|
||||
|
||||
using(Git.open(getRepositoryDir(owner, name))) {
|
||||
Using.resource(Git.open(getRepositoryDir(owner, name))) {
|
||||
git =>
|
||||
val repo = git.getRepository
|
||||
val objectId = repo.resolve(sha)
|
||||
val commitInfo = using(new RevWalk(repo)) { revWalk =>
|
||||
val commitInfo = Using.resource(new RevWalk(repo)) { revWalk =>
|
||||
new CommitInfo(revWalk.parseCommit(objectId))
|
||||
}
|
||||
|
||||
|
||||
@@ -6,12 +6,12 @@ import gitbucket.core.servlet.Database
|
||||
import gitbucket.core.util.Directory.getRepositoryDir
|
||||
import gitbucket.core.util._
|
||||
import gitbucket.core.util.Implicits._
|
||||
import gitbucket.core.util.SyntaxSugars.using
|
||||
import gitbucket.core.model.Profile.profile.blockingApi._
|
||||
import org.eclipse.jgit.api.Git
|
||||
|
||||
import scala.concurrent.Await
|
||||
import scala.concurrent.duration.Duration
|
||||
import scala.util.Using
|
||||
|
||||
trait ApiRepositoryControllerBase extends ControllerBase {
|
||||
self: RepositoryService
|
||||
@@ -193,7 +193,7 @@ trait ApiRepositoryControllerBase extends ControllerBase {
|
||||
*/
|
||||
get("/api/v3/repos/:owner/:repository/raw/*")(referrersOnly { repository =>
|
||||
val (id, path) = repository.splitPath(multiParams("splat").head)
|
||||
using(Git.open(getRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
Using.resource(Git.open(getRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
val revCommit = JGitUtil.getRevCommitFromId(git, git.getRepository.resolve(id))
|
||||
|
||||
getPathObjectId(git, path, revCommit).map { objectId =>
|
||||
|
||||
@@ -6,10 +6,10 @@ import gitbucket.core.controller.{Context, ControllerBase}
|
||||
import gitbucket.core.model.{Account, Issue}
|
||||
import gitbucket.core.service.RepositoryService.RepositoryInfo
|
||||
import gitbucket.core.service.SystemSettingsService.SystemSettings
|
||||
import gitbucket.core.util.SyntaxSugars._
|
||||
import io.github.gitbucket.solidbase.model.Version
|
||||
import org.apache.sshd.server.command.Command
|
||||
import play.twirl.api.Html
|
||||
import scala.util.Using
|
||||
|
||||
/**
|
||||
* Trait for define plugin interface.
|
||||
@@ -434,7 +434,7 @@ abstract class Plugin {
|
||||
* Helper method to get a resource from classpath.
|
||||
*/
|
||||
protected def fromClassPath(path: String): Array[Byte] =
|
||||
using(getClass.getClassLoader.getResourceAsStream(path)) { in =>
|
||||
Using.resource(getClass.getClassLoader.getResourceAsStream(path)) { in =>
|
||||
val bytes = new Array[Byte](in.available)
|
||||
in.read(bytes)
|
||||
bytes
|
||||
|
||||
@@ -7,7 +7,6 @@ import gitbucket.core.plugin.PluginRegistry
|
||||
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.profile.blockingApi._
|
||||
import org.eclipse.jgit.merge.{MergeStrategy, Merger, RecursiveMerger}
|
||||
import org.eclipse.jgit.api.Git
|
||||
@@ -17,6 +16,7 @@ import org.eclipse.jgit.lib.{CommitBuilder, ObjectId, PersonIdent, Repository}
|
||||
import org.eclipse.jgit.revwalk.{RevCommit, RevWalk}
|
||||
|
||||
import scala.jdk.CollectionConverters._
|
||||
import scala.util.Using
|
||||
|
||||
trait MergeService {
|
||||
self: AccountService
|
||||
@@ -33,7 +33,7 @@ trait MergeService {
|
||||
* Returns true if conflict will be caused.
|
||||
*/
|
||||
def checkConflict(userName: String, repositoryName: String, branch: String, issueId: Int): Option[String] = {
|
||||
using(Git.open(getRepositoryDir(userName, repositoryName))) { git =>
|
||||
Using.resource(Git.open(getRepositoryDir(userName, repositoryName))) { git =>
|
||||
new MergeCacheInfo(git, branch, issueId).checkConflict()
|
||||
}
|
||||
}
|
||||
@@ -50,7 +50,7 @@ trait MergeService {
|
||||
branch: String,
|
||||
issueId: Int
|
||||
): Option[Option[String]] = {
|
||||
using(Git.open(getRepositoryDir(userName, repositoryName))) { git =>
|
||||
Using.resource(Git.open(getRepositoryDir(userName, repositoryName))) { git =>
|
||||
new MergeCacheInfo(git, branch, issueId).checkConflictCache()
|
||||
}
|
||||
}
|
||||
@@ -97,7 +97,7 @@ trait MergeService {
|
||||
requestBranch: String,
|
||||
issueId: Int
|
||||
): Unit = {
|
||||
using(Git.open(getRepositoryDir(userName, repositoryName))) { git =>
|
||||
Using.resource(Git.open(getRepositoryDir(userName, repositoryName))) { git =>
|
||||
git.fetch
|
||||
.setRemote(getRepositoryDir(requestUserName, requestRepositoryName).toURI.toString)
|
||||
.setRefSpecs(new RefSpec(s"refs/heads/${requestBranch}:refs/pull/${issueId}/head"))
|
||||
@@ -116,7 +116,7 @@ trait MergeService {
|
||||
remoteRepositoryName: String,
|
||||
remoteBranch: String
|
||||
): Either[String, (ObjectId, ObjectId, ObjectId)] = {
|
||||
using(Git.open(getRepositoryDir(localUserName, localRepositoryName))) { git =>
|
||||
Using.resource(Git.open(getRepositoryDir(localUserName, localRepositoryName))) { git =>
|
||||
val remoteRefName = s"refs/heads/${remoteBranch}"
|
||||
val tmpRefName = s"refs/remote-temp/${remoteUserName}/${remoteRepositoryName}/${remoteBranch}"
|
||||
val refSpec = new RefSpec(s"${remoteRefName}:${tmpRefName}").setForceUpdate(true)
|
||||
@@ -175,7 +175,7 @@ trait MergeService {
|
||||
val remoteRepositoryName = remoteRepository.name
|
||||
tryMergeRemote(localUserName, localRepositoryName, localBranch, remoteUserName, remoteRepositoryName, remoteBranch).map {
|
||||
case (newTreeId, oldBaseId, oldHeadId) =>
|
||||
using(Git.open(getRepositoryDir(localUserName, localRepositoryName))) { git =>
|
||||
Using.resource(Git.open(getRepositoryDir(localUserName, localRepositoryName))) { git =>
|
||||
val existIds = JGitUtil.getAllCommitIds(git).toSet
|
||||
|
||||
val committer = new PersonIdent(loginAccount.fullName, loginAccount.mailAddress)
|
||||
@@ -259,7 +259,7 @@ trait MergeService {
|
||||
getPullRequest(repository.owner, repository.name, issueId)
|
||||
.map {
|
||||
case (issue, pullreq) =>
|
||||
using(Git.open(getRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
Using.resource(Git.open(getRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
// mark issue as merged and close.
|
||||
val commentId =
|
||||
createComment(repository.owner, repository.name, loginAccount.userName, issueId, message, "merge")
|
||||
@@ -278,11 +278,13 @@ trait MergeService {
|
||||
pullreq.commitIdTo
|
||||
)
|
||||
|
||||
val revCommits = using(new RevWalk(git.getRepository)) { revWalk =>
|
||||
val revCommits = Using
|
||||
.resource(new RevWalk(git.getRepository)) { revWalk =>
|
||||
commits.flatten.map { commit =>
|
||||
revWalk.parseCommit(git.getRepository.resolve(commit.id))
|
||||
}
|
||||
}.reverse
|
||||
}
|
||||
.reverse
|
||||
|
||||
// merge git repository
|
||||
(strategy match {
|
||||
@@ -402,7 +404,7 @@ object MergeService {
|
||||
mergeCommit.setCommitter(committer)
|
||||
mergeCommit.setMessage(message)
|
||||
// insertObject and got mergeCommit Object Id
|
||||
using(repository.newObjectInserter) { inserter =>
|
||||
Using.resource(repository.newObjectInserter) { inserter =>
|
||||
val mergeCommitId = inserter.insert(mergeCommit)
|
||||
inserter.flush()
|
||||
mergeCommitId
|
||||
@@ -470,7 +472,7 @@ object MergeService {
|
||||
} catch {
|
||||
case e: NoMergeBaseException => true
|
||||
}
|
||||
val mergeTipCommit = using(new RevWalk(repository))(_.parseCommit(mergeTip))
|
||||
val mergeTipCommit = Using.resource(new RevWalk(repository))(_.parseCommit(mergeTip))
|
||||
val committer = mergeTipCommit.getCommitterIdent
|
||||
|
||||
def _updateBranch(treeId: ObjectId, message: String, branchName: String): Unit = {
|
||||
@@ -523,10 +525,10 @@ object MergeService {
|
||||
newCommit
|
||||
}
|
||||
|
||||
val mergeBaseTipCommit = using(new RevWalk(repository))(_.parseCommit(mergeBaseTip))
|
||||
val mergeBaseTipCommit = Using.resource(new RevWalk(repository))(_.parseCommit(mergeBaseTip))
|
||||
var previousId = mergeBaseTipCommit.getId
|
||||
|
||||
using(repository.newObjectInserter) { inserter =>
|
||||
Using.resource(repository.newObjectInserter) { inserter =>
|
||||
commits.foreach { commit =>
|
||||
val nextCommit = _cloneCommit(commit, previousId, mergeBaseTipCommit.getId)
|
||||
previousId = inserter.insert(nextCommit)
|
||||
@@ -542,8 +544,9 @@ object MergeService {
|
||||
throw new RuntimeException("This pull request can't merge automatically.")
|
||||
}
|
||||
|
||||
val mergeBaseTipCommit = using(new RevWalk(repository))(_.parseCommit(mergeBaseTip))
|
||||
val mergeBranchHeadCommit = using(new RevWalk(repository))(_.parseCommit(repository.resolve(mergedBranchName)))
|
||||
val mergeBaseTipCommit = Using.resource(new RevWalk(repository))(_.parseCommit(mergeBaseTip))
|
||||
val mergeBranchHeadCommit =
|
||||
Using.resource(new RevWalk(repository))(_.parseCommit(repository.resolve(mergedBranchName)))
|
||||
|
||||
// Create squash commit
|
||||
val mergeCommit = new CommitBuilder()
|
||||
@@ -554,7 +557,7 @@ object MergeService {
|
||||
mergeCommit.setMessage(message)
|
||||
|
||||
// insertObject and got squash commit Object Id
|
||||
val newCommitId = using(repository.newObjectInserter) { inserter =>
|
||||
val newCommitId = Using.resource(repository.newObjectInserter) { inserter =>
|
||||
val newCommitId = inserter.insert(mergeCommit)
|
||||
inserter.flush()
|
||||
newCommitId
|
||||
@@ -577,7 +580,7 @@ object MergeService {
|
||||
private def createMergeCommit(treeId: ObjectId, committer: PersonIdent, message: String) =
|
||||
Util.createMergeCommit(repository, treeId, committer, message, Seq[ObjectId](mergeBaseTip, mergeTip))
|
||||
|
||||
private def parseCommit(id: ObjectId) = using(new RevWalk(repository))(_.parseCommit(id))
|
||||
private def parseCommit(id: ObjectId) = Using.resource(new RevWalk(repository))(_.parseCommit(id))
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -8,7 +8,6 @@ import gitbucket.core.service.RepositoryService.RepositoryInfo
|
||||
import gitbucket.core.api.JsonFormat
|
||||
import gitbucket.core.controller.Context
|
||||
import gitbucket.core.plugin.PluginRegistry
|
||||
import gitbucket.core.util.SyntaxSugars._
|
||||
import gitbucket.core.util.Directory._
|
||||
import gitbucket.core.util.Implicits._
|
||||
import gitbucket.core.util.JGitUtil
|
||||
@@ -20,6 +19,7 @@ import org.eclipse.jgit.api.Git
|
||||
import org.eclipse.jgit.lib.ObjectId
|
||||
|
||||
import scala.jdk.CollectionConverters._
|
||||
import scala.util.Using
|
||||
|
||||
trait PullRequestService {
|
||||
self: IssuesService
|
||||
@@ -387,7 +387,7 @@ trait PullRequestService {
|
||||
requestRepositoryName: String,
|
||||
requestCommitId: String
|
||||
): (Seq[Seq[CommitInfo]], Seq[DiffInfo]) =
|
||||
using(
|
||||
Using.resources(
|
||||
Git.open(getRepositoryDir(userName, repositoryName)),
|
||||
Git.open(getRepositoryDir(requestUserName, requestRepositoryName))
|
||||
) { (oldGit, newGit) =>
|
||||
@@ -478,7 +478,7 @@ trait PullRequestService {
|
||||
originId: String,
|
||||
forkedId: String
|
||||
): (Option[ObjectId], Option[ObjectId]) = {
|
||||
using(
|
||||
Using.resources(
|
||||
Git.open(getRepositoryDir(originRepository.owner, originRepository.name)),
|
||||
Git.open(getRepositoryDir(forkedRepository.owner, forkedRepository.name))
|
||||
) {
|
||||
|
||||
@@ -8,11 +8,11 @@ import gitbucket.core.service.WebHookService.WebHookPushPayload
|
||||
import gitbucket.core.util.Directory.getRepositoryDir
|
||||
import gitbucket.core.util.JGitUtil.CommitInfo
|
||||
import gitbucket.core.util.{JGitUtil, LockUtil}
|
||||
import gitbucket.core.util.SyntaxSugars.using
|
||||
import org.eclipse.jgit.api.Git
|
||||
import org.eclipse.jgit.dircache.{DirCache, DirCacheBuilder}
|
||||
import org.eclipse.jgit.lib._
|
||||
import org.eclipse.jgit.transport.{ReceiveCommand, ReceivePack}
|
||||
import scala.util.Using
|
||||
|
||||
trait RepositoryCommitFileService {
|
||||
self: AccountService with ActivityService with IssuesService with PullRequestService with WebHookPullRequestService =>
|
||||
@@ -117,7 +117,7 @@ trait RepositoryCommitFileService {
|
||||
)(implicit s: Session, c: JsonFormat.Context): ObjectId = {
|
||||
|
||||
LockUtil.lock(s"${repository.owner}/${repository.name}") {
|
||||
using(Git.open(getRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
Using.resource(Git.open(getRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
val builder = DirCache.newInCore.builder()
|
||||
val inserter = git.getRepository.newObjectInserter()
|
||||
val headName = s"refs/heads/${branch}"
|
||||
|
||||
@@ -4,12 +4,12 @@ import gitbucket.core.model.Issue
|
||||
import gitbucket.core.util._
|
||||
import gitbucket.core.util.StringUtil
|
||||
import Directory._
|
||||
import SyntaxSugars._
|
||||
import org.eclipse.jgit.revwalk.RevWalk
|
||||
import org.eclipse.jgit.treewalk.TreeWalk
|
||||
import org.eclipse.jgit.lib.FileMode
|
||||
import org.eclipse.jgit.api.Git
|
||||
import gitbucket.core.model.Profile.profile.blockingApi._
|
||||
import scala.util.Using
|
||||
|
||||
trait RepositorySearchService { self: IssuesService =>
|
||||
import RepositorySearchService._
|
||||
@@ -37,12 +37,12 @@ trait RepositorySearchService { self: IssuesService =>
|
||||
}
|
||||
|
||||
def countFiles(owner: String, repository: String, query: String): Int =
|
||||
using(Git.open(getRepositoryDir(owner, repository))) { git =>
|
||||
Using.resource(Git.open(getRepositoryDir(owner, repository))) { git =>
|
||||
if (JGitUtil.isEmpty(git)) 0 else searchRepositoryFiles(git, query).length
|
||||
}
|
||||
|
||||
def searchFiles(owner: String, repository: String, query: String): List[FileSearchResult] =
|
||||
using(Git.open(getRepositoryDir(owner, repository))) { git =>
|
||||
Using.resource(Git.open(getRepositoryDir(owner, repository))) { git =>
|
||||
if (JGitUtil.isEmpty(git)) {
|
||||
Nil
|
||||
} else {
|
||||
@@ -57,12 +57,12 @@ trait RepositorySearchService { self: IssuesService =>
|
||||
}
|
||||
|
||||
def countWikiPages(owner: String, repository: String, query: String): Int =
|
||||
using(Git.open(Directory.getWikiRepositoryDir(owner, repository))) { git =>
|
||||
Using.resource(Git.open(Directory.getWikiRepositoryDir(owner, repository))) { git =>
|
||||
if (JGitUtil.isEmpty(git)) 0 else searchRepositoryFiles(git, query).length
|
||||
}
|
||||
|
||||
def searchWikiPages(owner: String, repository: String, query: String): List[FileSearchResult] =
|
||||
using(Git.open(Directory.getWikiRepositoryDir(owner, repository))) { git =>
|
||||
Using.resource(Git.open(Directory.getWikiRepositoryDir(owner, repository))) { git =>
|
||||
if (JGitUtil.isEmpty(git)) {
|
||||
Nil
|
||||
} else {
|
||||
|
||||
@@ -17,6 +17,7 @@ import org.eclipse.jgit.api.Git
|
||||
import org.eclipse.jgit.dircache.{DirCache, DirCacheBuilder}
|
||||
import org.eclipse.jgit.lib.{Repository => _, _}
|
||||
import org.eclipse.jgit.transport.{ReceiveCommand, ReceivePack}
|
||||
import scala.util.Using
|
||||
|
||||
trait RepositoryService {
|
||||
self: AccountService =>
|
||||
@@ -763,7 +764,7 @@ trait RepositoryService {
|
||||
}
|
||||
|
||||
// Get template file from project root. When didn't find, will lookup default folder.
|
||||
using(Git.open(Directory.getRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
Using.resource(Git.open(Directory.getRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
choiceTemplate(JGitUtil.getFileList(git, repository.repository.defaultBranch, "."))
|
||||
.orElse {
|
||||
choiceTemplate(JGitUtil.getFileList(git, repository.repository.defaultBranch, ".gitbucket"))
|
||||
|
||||
@@ -8,6 +8,7 @@ import gitbucket.core.service.SystemSettingsService._
|
||||
import gitbucket.core.util.ConfigUtil._
|
||||
import gitbucket.core.util.Directory._
|
||||
import gitbucket.core.util.SyntaxSugars._
|
||||
import scala.util.Using
|
||||
|
||||
trait SystemSettingsService {
|
||||
|
||||
@@ -70,7 +71,7 @@ trait SystemSettingsService {
|
||||
props.setProperty(SkinName, settings.skinName.toString)
|
||||
props.setProperty(ShowMailAddress, settings.showMailAddress.toString)
|
||||
|
||||
using(new java.io.FileOutputStream(GitBucketConf)) { out =>
|
||||
Using.resource(new java.io.FileOutputStream(GitBucketConf)) { out =>
|
||||
props.store(out, null)
|
||||
}
|
||||
}
|
||||
@@ -79,7 +80,7 @@ trait SystemSettingsService {
|
||||
def loadSystemSettings(): SystemSettings = {
|
||||
defining(new java.util.Properties()) { props =>
|
||||
if (GitBucketConf.exists) {
|
||||
using(new java.io.FileInputStream(GitBucketConf)) { in =>
|
||||
Using.resource(new java.io.FileInputStream(GitBucketConf)) { in =>
|
||||
props.load(in)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ import org.eclipse.jgit.patch._
|
||||
import org.eclipse.jgit.api.errors.PatchFormatException
|
||||
|
||||
import scala.jdk.CollectionConverters._
|
||||
import scala.util.Using
|
||||
|
||||
object WikiService {
|
||||
|
||||
@@ -74,7 +75,7 @@ trait WikiService {
|
||||
* Returns the wiki page.
|
||||
*/
|
||||
def getWikiPage(owner: String, repository: String, pageName: String): Option[WikiPageInfo] = {
|
||||
using(Git.open(Directory.getWikiRepositoryDir(owner, repository))) { git =>
|
||||
Using.resource(Git.open(Directory.getWikiRepositoryDir(owner, repository))) { git =>
|
||||
if (!JGitUtil.isEmpty(git)) {
|
||||
JGitUtil.getFileList(git, "master", ".").find(_.name == pageName + ".md").map { file =>
|
||||
WikiPageInfo(
|
||||
@@ -93,7 +94,7 @@ trait WikiService {
|
||||
* Returns the list of wiki page names.
|
||||
*/
|
||||
def getWikiPageList(owner: String, repository: String): List[String] = {
|
||||
using(Git.open(Directory.getWikiRepositoryDir(owner, repository))) { git =>
|
||||
Using.resource(Git.open(Directory.getWikiRepositoryDir(owner, repository))) { git =>
|
||||
JGitUtil
|
||||
.getFileList(git, "master", ".")
|
||||
.filter(_.name.endsWith(".md"))
|
||||
@@ -119,7 +120,7 @@ trait WikiService {
|
||||
|
||||
try {
|
||||
LockUtil.lock(s"${owner}/${repository}/wiki") {
|
||||
using(Git.open(Directory.getWikiRepositoryDir(owner, repository))) { git =>
|
||||
Using.resource(Git.open(Directory.getWikiRepositoryDir(owner, repository))) { git =>
|
||||
val reader = git.getRepository.newObjectReader
|
||||
val oldTreeIter = new CanonicalTreeParser
|
||||
oldTreeIter.reset(reader, git.getRepository.resolve(from + "^{tree}"))
|
||||
@@ -134,7 +135,7 @@ trait WikiService {
|
||||
}
|
||||
}
|
||||
|
||||
val patch = using(new java.io.ByteArrayOutputStream()) { out =>
|
||||
val patch = Using.resource(new java.io.ByteArrayOutputStream()) { out =>
|
||||
val formatter = new DiffFormatter(out)
|
||||
formatter.setRepository(git.getRepository)
|
||||
formatter.format(diffs.asJava)
|
||||
@@ -238,7 +239,7 @@ trait WikiService {
|
||||
currentId: Option[String]
|
||||
): Option[String] = {
|
||||
LockUtil.lock(s"${owner}/${repository}/wiki") {
|
||||
using(Git.open(Directory.getWikiRepositoryDir(owner, repository))) { git =>
|
||||
Using.resource(Git.open(Directory.getWikiRepositoryDir(owner, repository))) { git =>
|
||||
val builder = DirCache.newInCore.builder()
|
||||
val inserter = git.getRepository.newObjectInserter()
|
||||
val headId = git.getRepository.resolve(Constants.HEAD + "^{commit}")
|
||||
@@ -310,7 +311,7 @@ trait WikiService {
|
||||
message: String
|
||||
): Unit = {
|
||||
LockUtil.lock(s"${owner}/${repository}/wiki") {
|
||||
using(Git.open(Directory.getWikiRepositoryDir(owner, repository))) { git =>
|
||||
Using.resource(Git.open(Directory.getWikiRepositoryDir(owner, repository))) { git =>
|
||||
val builder = DirCache.newInCore.builder()
|
||||
val inserter = git.getRepository.newObjectInserter()
|
||||
val headId = git.getRepository.resolve(Constants.HEAD + "^{commit}")
|
||||
|
||||
@@ -8,7 +8,8 @@ import gitbucket.core.util.{FileUtil, StringUtil}
|
||||
import org.apache.commons.io.{FileUtils, IOUtils}
|
||||
import org.json4s.jackson.Serialization._
|
||||
import org.apache.http.HttpStatus
|
||||
import gitbucket.core.util.SyntaxSugars._
|
||||
|
||||
import scala.util.Using
|
||||
|
||||
/**
|
||||
* Provides GitLFS Transfer API
|
||||
@@ -29,7 +30,7 @@ class GitLfsTransferServlet extends HttpServlet {
|
||||
res.setStatus(HttpStatus.SC_OK)
|
||||
res.setContentType("application/octet-stream")
|
||||
res.setHeader("Content-Length", file.length.toString)
|
||||
using(new FileInputStream(file), res.getOutputStream) { (in, out) =>
|
||||
Using.resources(new FileInputStream(file), res.getOutputStream) { (in, out) =>
|
||||
IOUtils.copy(in, out)
|
||||
out.flush()
|
||||
}
|
||||
@@ -45,7 +46,7 @@ class GitLfsTransferServlet extends HttpServlet {
|
||||
} yield {
|
||||
val file = new File(FileUtil.getLfsFilePath(owner, repository, oid))
|
||||
FileUtils.forceMkdir(file.getParentFile)
|
||||
using(req.getInputStream, new FileOutputStream(file)) { (in, out) =>
|
||||
Using.resources(req.getInputStream, new FileOutputStream(file)) { (in, out) =>
|
||||
IOUtils.copy(in, out)
|
||||
}
|
||||
res.setStatus(HttpStatus.SC_OK)
|
||||
@@ -71,7 +72,7 @@ class GitLfsTransferServlet extends HttpServlet {
|
||||
|
||||
private def sendError(res: HttpServletResponse, status: Int, message: String): Unit = {
|
||||
res.setStatus(status)
|
||||
using(res.getWriter()) { out =>
|
||||
Using.resource(res.getWriter()) { out =>
|
||||
out.write(write(GitLfs.Error(message)))
|
||||
out.flush()
|
||||
}
|
||||
|
||||
@@ -4,6 +4,8 @@ import java.io.File
|
||||
import java.util
|
||||
import java.util.Date
|
||||
|
||||
import scala.util.Using
|
||||
|
||||
import gitbucket.core.api
|
||||
import gitbucket.core.model.WebHook
|
||||
import gitbucket.core.plugin.{GitRepositoryRouting, PluginRegistry}
|
||||
@@ -144,7 +146,7 @@ class GitRepositoryServlet extends GitServlet with SystemSettingsService {
|
||||
}
|
||||
|
||||
res.setContentType("application/vnd.git-lfs+json")
|
||||
using(res.getWriter) { out =>
|
||||
Using.resource(res.getWriter) { out =>
|
||||
out.print(write(batchResponse))
|
||||
out.flush()
|
||||
}
|
||||
@@ -254,7 +256,7 @@ class CommitLogHook(owner: String, repository: String, pusher: String, baseUrl:
|
||||
command.setResult(ReceiveCommand.Result.REJECTED_OTHER_REASON, error)
|
||||
}
|
||||
}
|
||||
using(Git.open(Directory.getRepositoryDir(owner, repository))) { git =>
|
||||
Using.resource(Git.open(Directory.getRepositoryDir(owner, repository))) { git =>
|
||||
existIds = JGitUtil.getAllCommitIds(git)
|
||||
}
|
||||
} catch {
|
||||
@@ -269,7 +271,7 @@ class CommitLogHook(owner: String, repository: String, pusher: String, baseUrl:
|
||||
def onPostReceive(receivePack: ReceivePack, commands: java.util.Collection[ReceiveCommand]): Unit = {
|
||||
Database() withTransaction { implicit session =>
|
||||
try {
|
||||
using(Git.open(Directory.getRepositoryDir(owner, repository))) { git =>
|
||||
Using.resource(Git.open(Directory.getRepositoryDir(owner, repository))) { git =>
|
||||
JGitUtil.removeCache(git)
|
||||
|
||||
val pushedIds = scala.collection.mutable.Set[String]()
|
||||
@@ -293,7 +295,7 @@ class CommitLogHook(owner: String, repository: String, pusher: String, baseUrl:
|
||||
if (JGitUtil.isEmpty(git) && commits.nonEmpty && branchName != repositoryInfo.repository.defaultBranch) {
|
||||
saveRepositoryDefaultBranch(owner, repository, branchName)
|
||||
// Change repository HEAD
|
||||
using(Git.open(Directory.getRepositoryDir(owner, repository))) { git =>
|
||||
Using.resource(Git.open(Directory.getRepositoryDir(owner, repository))) { git =>
|
||||
git.getRepository.updateRef(Constants.HEAD, true).link(Constants.R_HEADS + branchName)
|
||||
}
|
||||
}
|
||||
@@ -447,7 +449,7 @@ class WikiCommitHook(owner: String, repository: String, pusher: String, baseUrl:
|
||||
|
||||
commitIds.foreach {
|
||||
case (oldCommitId, newCommitId) =>
|
||||
val commits = using(Git.open(Directory.getWikiRepositoryDir(owner, repository))) { git =>
|
||||
val commits = Using.resource(Git.open(Directory.getWikiRepositoryDir(owner, repository))) { git =>
|
||||
JGitUtil.getCommitLog(git, oldCommitId, newCommitId).flatMap { commit =>
|
||||
val diffs = JGitUtil.getDiffs(git, None, commit.id, false, false)
|
||||
diffs.collect {
|
||||
|
||||
@@ -9,7 +9,6 @@ import gitbucket.core.plugin.PluginRegistry
|
||||
import gitbucket.core.service.{ActivityService, SystemSettingsService}
|
||||
import gitbucket.core.util.DatabaseConfig
|
||||
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.
|
||||
@@ -26,6 +25,7 @@ import akka.actor.{Actor, ActorSystem, Props}
|
||||
import com.typesafe.akka.extension.quartz.QuartzSchedulerExtension
|
||||
|
||||
import scala.jdk.CollectionConverters._
|
||||
import scala.util.Using
|
||||
|
||||
/**
|
||||
* Initialize GitBucket system.
|
||||
@@ -142,7 +142,7 @@ class InitializeListener extends ServletContextListener with SystemSettingsServi
|
||||
logger.info("Extract bundled plugins...")
|
||||
val cl = Thread.currentThread.getContextClassLoader
|
||||
try {
|
||||
using(cl.getResourceAsStream("bundle-plugins.txt")) { pluginsFile =>
|
||||
Using.resource(cl.getResourceAsStream("bundle-plugins.txt")) { pluginsFile =>
|
||||
if (pluginsFile != null) {
|
||||
val plugins = IOUtils.readLines(pluginsFile, "UTF-8")
|
||||
val gitbucketVersion = GitBucketCoreModule.getVersions.asScala.last.getVersion
|
||||
@@ -157,7 +157,7 @@ class InitializeListener extends ServletContextListener with SystemSettingsServi
|
||||
logger.info(s"Extract to ${file.getAbsolutePath}")
|
||||
|
||||
FileUtils.forceMkdirParent(file)
|
||||
using(in, new FileOutputStream(file)) {
|
||||
Using.resources(in, new FileOutputStream(file)) {
|
||||
case (in, out) => IOUtils.copy(in, out)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,13 +11,13 @@ import org.apache.sshd.server.session.ServerSession
|
||||
import org.slf4j.LoggerFactory
|
||||
import java.io.{File, InputStream, OutputStream}
|
||||
|
||||
import SyntaxSugars._
|
||||
import org.eclipse.jgit.api.Git
|
||||
import Directory._
|
||||
import gitbucket.core.ssh.PublicKeyAuthenticator.AuthType
|
||||
import org.eclipse.jgit.transport.{ReceivePack, UploadPack}
|
||||
import org.apache.sshd.server.shell.UnknownCommand
|
||||
import org.eclipse.jgit.errors.RepositoryNotFoundException
|
||||
import scala.util.Using
|
||||
|
||||
object GitCommand {
|
||||
val DefaultCommandRegex = """\Agit-(upload|receive)-pack '/([a-zA-Z0-9\-_.]+)/([a-zA-Z0-9\-\+_.]+).git'\Z""".r
|
||||
@@ -152,7 +152,7 @@ class DefaultGitUploadPack(owner: String, repoName: String)
|
||||
}
|
||||
|
||||
if (execute) {
|
||||
using(Git.open(getRepositoryDir(owner, repoName))) { git =>
|
||||
Using.resource(Git.open(getRepositoryDir(owner, repoName))) { git =>
|
||||
val repository = git.getRepository
|
||||
val upload = new UploadPack(repository)
|
||||
upload.upload(in, out, err)
|
||||
@@ -177,7 +177,7 @@ class DefaultGitReceivePack(owner: String, repoName: String, baseUrl: String, ss
|
||||
}
|
||||
|
||||
if (execute) {
|
||||
using(Git.open(getRepositoryDir(owner, repoName))) { git =>
|
||||
Using.resource(Git.open(getRepositoryDir(owner, repoName))) { git =>
|
||||
val repository = git.getRepository
|
||||
val receive = new ReceivePack(repository)
|
||||
if (!repoName.endsWith(".wiki")) {
|
||||
@@ -202,7 +202,7 @@ class PluginGitUploadPack(repoName: String, routing: GitRepositoryRouting)
|
||||
|
||||
if (execute) {
|
||||
val path = routing.urlPattern.r.replaceFirstIn(repoName, routing.localPath)
|
||||
using(Git.open(new File(Directory.GitBucketHome, path))) { git =>
|
||||
Using.resource(Git.open(new File(Directory.GitBucketHome, path))) { git =>
|
||||
val repository = git.getRepository
|
||||
val upload = new UploadPack(repository)
|
||||
upload.upload(in, out, err)
|
||||
@@ -222,7 +222,7 @@ class PluginGitReceivePack(repoName: String, routing: GitRepositoryRouting)
|
||||
|
||||
if (execute) {
|
||||
val path = routing.urlPattern.r.replaceFirstIn(repoName, routing.localPath)
|
||||
using(Git.open(new File(Directory.GitBucketHome, path))) { git =>
|
||||
Using.resource(Git.open(new File(Directory.GitBucketHome, path))) { git =>
|
||||
val repository = git.getRepository
|
||||
val receive = new ReceivePack(repository)
|
||||
receive.receive(in, out, err)
|
||||
|
||||
@@ -12,7 +12,8 @@ import org.eclipse.jgit.api.Git
|
||||
import org.eclipse.jgit.lib.{ObjectReader, Repository}
|
||||
import org.eclipse.jgit.revwalk.{RevTree, RevWalk}
|
||||
import org.eclipse.jgit.treewalk.TreeWalk
|
||||
import gitbucket.core.util.SyntaxSugars._
|
||||
|
||||
import scala.util.Using
|
||||
|
||||
object EditorConfigUtil {
|
||||
private class JGitResource(repo: Repository, revStr: String, path: Ec4jPath) extends Resource {
|
||||
@@ -27,7 +28,7 @@ object EditorConfigUtil {
|
||||
}
|
||||
|
||||
private def getRevTree: RevTree = {
|
||||
using(repo.newObjectReader()) { reader: ObjectReader =>
|
||||
Using.resource(repo.newObjectReader()) { reader: ObjectReader =>
|
||||
val revWalk = new RevWalk(reader)
|
||||
val id = repo.resolve(revStr)
|
||||
val commit = revWalk.parseCommit(id)
|
||||
@@ -36,7 +37,7 @@ object EditorConfigUtil {
|
||||
}
|
||||
|
||||
override def exists(): Boolean = {
|
||||
using(repo.newObjectReader()) { reader: ObjectReader =>
|
||||
Using.resource(repo.newObjectReader()) { reader: ObjectReader =>
|
||||
try {
|
||||
val treeWalk = Option(TreeWalk.forPath(reader, removeInitialSlash(path), getRevTree))
|
||||
treeWalk.isDefined
|
||||
@@ -59,7 +60,7 @@ object EditorConfigUtil {
|
||||
}
|
||||
|
||||
override def openReader(): Reader = {
|
||||
using(repo.newObjectReader) { reader: ObjectReader =>
|
||||
Using.resource(repo.newObjectReader) { reader: ObjectReader =>
|
||||
val treeWalk = TreeWalk.forPath(reader, removeInitialSlash(path), getRevTree)
|
||||
new InputStreamReader(reader.open(treeWalk.getObjectId(0)).openStream, StandardCharsets.UTF_8)
|
||||
}
|
||||
|
||||
@@ -3,9 +3,9 @@ package gitbucket.core.util
|
||||
import java.io._
|
||||
import java.sql._
|
||||
import java.text.SimpleDateFormat
|
||||
import SyntaxSugars._
|
||||
import scala.annotation.tailrec
|
||||
import scala.collection.mutable.ListBuffer
|
||||
import scala.util.Using
|
||||
|
||||
/**
|
||||
* Provides implicit class which extends java.sql.Connection.
|
||||
@@ -26,7 +26,7 @@ object JDBCUtil {
|
||||
|
||||
def find[T](sql: String, params: Any*)(f: ResultSet => T): Option[T] = {
|
||||
execute(sql, params: _*) { stmt =>
|
||||
using(stmt.executeQuery()) { rs =>
|
||||
Using.resource(stmt.executeQuery()) { rs =>
|
||||
if (rs.next) Some(f(rs)) else None
|
||||
}
|
||||
}
|
||||
@@ -34,7 +34,7 @@ object JDBCUtil {
|
||||
|
||||
def select[T](sql: String, params: Any*)(f: ResultSet => T): Seq[T] = {
|
||||
execute(sql, params: _*) { stmt =>
|
||||
using(stmt.executeQuery()) { rs =>
|
||||
Using.resource(stmt.executeQuery()) { rs =>
|
||||
val list = new ListBuffer[T]
|
||||
while (rs.next) {
|
||||
list += f(rs)
|
||||
@@ -46,14 +46,14 @@ object JDBCUtil {
|
||||
|
||||
def selectInt(sql: String, params: Any*): Int = {
|
||||
execute(sql, params: _*) { stmt =>
|
||||
using(stmt.executeQuery()) { rs =>
|
||||
Using.resource(stmt.executeQuery()) { rs =>
|
||||
if (rs.next) rs.getInt(1) else 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private def execute[T](sql: String, params: Any*)(f: (PreparedStatement) => T): T = {
|
||||
using(conn.prepareStatement(sql)) { stmt =>
|
||||
Using.resource(conn.prepareStatement(sql)) { stmt =>
|
||||
params.zipWithIndex.foreach {
|
||||
case (p, i) =>
|
||||
p match {
|
||||
@@ -68,7 +68,7 @@ object JDBCUtil {
|
||||
def importAsSQL(in: InputStream): Unit = {
|
||||
conn.setAutoCommit(false)
|
||||
try {
|
||||
using(in) { in =>
|
||||
Using.resource(in) { in =>
|
||||
var out = new ByteArrayOutputStream()
|
||||
|
||||
var length = 0
|
||||
@@ -111,7 +111,7 @@ object JDBCUtil {
|
||||
val dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss")
|
||||
val file = File.createTempFile("gitbucket-export-", ".sql")
|
||||
|
||||
using(new FileOutputStream(file)) { out =>
|
||||
Using.resource(new FileOutputStream(file)) { out =>
|
||||
val dbMeta = conn.getMetaData
|
||||
val allTablesInDatabase = allTablesOrderByDependencies(dbMeta)
|
||||
|
||||
@@ -168,7 +168,7 @@ object JDBCUtil {
|
||||
}
|
||||
|
||||
def allTableNames(): Seq[String] = {
|
||||
using(conn.getMetaData.getTables(null, null, "%", Seq("TABLE").toArray)) { rs =>
|
||||
Using.resource(conn.getMetaData.getTables(null, null, "%", Seq("TABLE").toArray)) { rs =>
|
||||
val tableNames = new ListBuffer[String]
|
||||
while (rs.next) {
|
||||
val name = rs.getString("TABLE_NAME").toUpperCase
|
||||
@@ -188,7 +188,7 @@ object JDBCUtil {
|
||||
tableName
|
||||
}
|
||||
|
||||
using(meta.getExportedKeys(null, null, normalizedTableName)) { rs =>
|
||||
Using.resource(meta.getExportedKeys(null, null, normalizedTableName)) { rs =>
|
||||
val children = new ListBuffer[String]
|
||||
while (rs.next) {
|
||||
val childTableName = rs.getString("FKTABLE_NAME").toUpperCase
|
||||
|
||||
@@ -10,6 +10,7 @@ import SyntaxSugars._
|
||||
|
||||
import scala.annotation.tailrec
|
||||
import scala.jdk.CollectionConverters._
|
||||
import scala.util.Using
|
||||
import org.eclipse.jgit.lib._
|
||||
import org.eclipse.jgit.revwalk._
|
||||
import org.eclipse.jgit.revwalk.filter._
|
||||
@@ -28,6 +29,8 @@ import org.eclipse.jgit.dircache.DirCacheEntry
|
||||
import org.eclipse.jgit.util.io.DisabledOutputStream
|
||||
import org.slf4j.LoggerFactory
|
||||
|
||||
import scala.util.Using.Releasable
|
||||
|
||||
/**
|
||||
* Provides complex JGit operations.
|
||||
*/
|
||||
@@ -35,6 +38,10 @@ object JGitUtil {
|
||||
|
||||
private val logger = LoggerFactory.getLogger(JGitUtil.getClass)
|
||||
|
||||
implicit val objectDatabaseReleasable = new Releasable[ObjectDatabase] {
|
||||
override def release(resource: ObjectDatabase): Unit = resource.close()
|
||||
}
|
||||
|
||||
/**
|
||||
* The repository data.
|
||||
*
|
||||
@@ -317,7 +324,7 @@ object JGitUtil {
|
||||
* Returns the repository information. It contains branch names and tag names.
|
||||
*/
|
||||
def getRepositoryInfo(owner: String, repository: String): RepositoryInfo = {
|
||||
using(Git.open(getRepositoryDir(owner, repository))) { git =>
|
||||
Using.resource(Git.open(getRepositoryDir(owner, repository))) { git =>
|
||||
try {
|
||||
RepositoryInfo(
|
||||
owner,
|
||||
@@ -364,7 +371,7 @@ object JGitUtil {
|
||||
* @return HTML of the file list
|
||||
*/
|
||||
def getFileList(git: Git, revision: String, path: String = ".", baseUrl: Option[String] = None): List[FileInfo] = {
|
||||
using(new RevWalk(git.getRepository)) { revWalk =>
|
||||
Using.resource(new RevWalk(git.getRepository)) { revWalk =>
|
||||
val objectId = git.getRepository.resolve(revision)
|
||||
if (objectId == null) return Nil
|
||||
val revCommit = revWalk.parseCommit(objectId)
|
||||
@@ -373,12 +380,12 @@ object JGitUtil {
|
||||
if (path == ".") {
|
||||
val treeWalk = new TreeWalk(git.getRepository)
|
||||
treeWalk.addTree(rev.getTree)
|
||||
using(treeWalk)(f)
|
||||
Using.resource(treeWalk)(f)
|
||||
} else {
|
||||
val treeWalk = TreeWalk.forPath(git.getRepository, path, rev.getTree)
|
||||
if (treeWalk != null) {
|
||||
treeWalk.enterSubtree
|
||||
using(treeWalk)(f)
|
||||
Using.resource(treeWalk)(f)
|
||||
}
|
||||
}
|
||||
@tailrec
|
||||
@@ -386,7 +393,7 @@ object JGitUtil {
|
||||
tuple: (ObjectId, FileMode, String, String, Option[String], RevCommit)
|
||||
): (ObjectId, FileMode, String, String, Option[String], RevCommit) = tuple match {
|
||||
case (oid, FileMode.TREE, name, path, _, commit) =>
|
||||
(using(new TreeWalk(git.getRepository)) { walk =>
|
||||
(Using.resource(new TreeWalk(git.getRepository)) { walk =>
|
||||
walk.addTree(oid)
|
||||
// single tree child, or None
|
||||
if (walk.next() && walk.getFileMode(0) == FileMode.TREE) {
|
||||
@@ -520,7 +527,7 @@ object JGitUtil {
|
||||
* get all file list by revision. only file.
|
||||
*/
|
||||
def getTreeId(git: Git, revision: String): Option[String] = {
|
||||
using(new RevWalk(git.getRepository)) { revWalk =>
|
||||
Using.resource(new RevWalk(git.getRepository)) { revWalk =>
|
||||
val objectId = git.getRepository.resolve(revision)
|
||||
if (objectId == null) return None
|
||||
val revCommit = revWalk.parseCommit(objectId)
|
||||
@@ -532,10 +539,10 @@ object JGitUtil {
|
||||
* get all file list by tree object id.
|
||||
*/
|
||||
def getAllFileListByTreeId(git: Git, treeId: String): List[String] = {
|
||||
using(new RevWalk(git.getRepository)) { revWalk =>
|
||||
Using.resource(new RevWalk(git.getRepository)) { revWalk =>
|
||||
val objectId = git.getRepository.resolve(treeId + "^{tree}")
|
||||
if (objectId == null) return Nil
|
||||
using(new TreeWalk(git.getRepository)) { treeWalk =>
|
||||
Using.resource(new TreeWalk(git.getRepository)) { treeWalk =>
|
||||
treeWalk.addTree(objectId)
|
||||
treeWalk.setRecursive(true)
|
||||
var ret: List[String] = Nil
|
||||
@@ -586,7 +593,7 @@ object JGitUtil {
|
||||
case _ => (logs, i.hasNext)
|
||||
}
|
||||
|
||||
using(new RevWalk(git.getRepository)) { revWalk =>
|
||||
Using.resource(new RevWalk(git.getRepository)) { revWalk =>
|
||||
defining(git.getRepository.resolve(revision)) { objectId =>
|
||||
if (objectId == null) {
|
||||
Left(s"${revision} can't be resolved.")
|
||||
@@ -618,7 +625,7 @@ object JGitUtil {
|
||||
case false => logs
|
||||
}
|
||||
|
||||
using(new RevWalk(git.getRepository)) { revWalk =>
|
||||
Using.resource(new RevWalk(git.getRepository)) { revWalk =>
|
||||
revWalk.markStart(revWalk.parseCommit(git.getRepository.resolve(begin)))
|
||||
getCommitLog(revWalk.iterator, Nil).reverse
|
||||
}
|
||||
@@ -678,7 +685,7 @@ object JGitUtil {
|
||||
}
|
||||
|
||||
private def getDiffEntries(git: Git, from: Option[String], to: String): Seq[DiffEntry] = {
|
||||
using(new RevWalk(git.getRepository)) { revWalk =>
|
||||
Using.resource(new RevWalk(git.getRepository)) { revWalk =>
|
||||
val df = new DiffFormatter(DisabledOutputStream.INSTANCE)
|
||||
df.setRepository(git.getRepository)
|
||||
|
||||
@@ -704,7 +711,7 @@ object JGitUtil {
|
||||
}
|
||||
|
||||
def getParentCommitId(git: Git, id: String): Option[String] = {
|
||||
using(new RevWalk(git.getRepository)) { revWalk =>
|
||||
Using.resource(new RevWalk(git.getRepository)) { revWalk =>
|
||||
val commit = revWalk.parseCommit(git.getRepository.resolve(id))
|
||||
commit.getParentCount match {
|
||||
case 0 => None
|
||||
@@ -786,7 +793,7 @@ object JGitUtil {
|
||||
|
||||
private def makePatchFromDiffEntry(git: Git, diff: DiffEntry): String = {
|
||||
val out = new ByteArrayOutputStream()
|
||||
using(new DiffFormatter(out)) { formatter =>
|
||||
Using.resource(new DiffFormatter(out)) { formatter =>
|
||||
formatter.setRepository(git.getRepository)
|
||||
formatter.format(diff)
|
||||
val patch = new String(out.toByteArray) // TODO charset???
|
||||
@@ -798,7 +805,7 @@ object JGitUtil {
|
||||
* Returns the list of branch names of the specified commit.
|
||||
*/
|
||||
def getBranchesOfCommit(git: Git, commitId: String): List[String] =
|
||||
using(new RevWalk(git.getRepository)) { revWalk =>
|
||||
Using.resource(new RevWalk(git.getRepository)) { revWalk =>
|
||||
defining(revWalk.parseCommit(git.getRepository.resolve(commitId + "^0"))) { commit =>
|
||||
git.getRepository.getRefDatabase
|
||||
.getRefsByPrefix(Constants.R_HEADS)
|
||||
@@ -841,7 +848,7 @@ object JGitUtil {
|
||||
* Returns the list of tags which contains the specified commit.
|
||||
*/
|
||||
def getTagsOfCommit(git: Git, commitId: String): List[String] =
|
||||
using(new RevWalk(git.getRepository)) { revWalk =>
|
||||
Using.resource(new RevWalk(git.getRepository)) { revWalk =>
|
||||
defining(revWalk.parseCommit(git.getRepository.resolve(commitId + "^0"))) { commit =>
|
||||
git.getRepository.getRefDatabase
|
||||
.getRefsByPrefix(Constants.R_TAGS)
|
||||
@@ -862,13 +869,13 @@ object JGitUtil {
|
||||
}
|
||||
|
||||
def initRepository(dir: java.io.File): Unit =
|
||||
using(new RepositoryBuilder().setGitDir(dir).setBare.build) { repository =>
|
||||
Using.resource(new RepositoryBuilder().setGitDir(dir).setBare.build) { repository =>
|
||||
repository.create(true)
|
||||
setReceivePack(repository)
|
||||
}
|
||||
|
||||
def cloneRepository(from: java.io.File, to: java.io.File): Unit =
|
||||
using(Git.cloneRepository.setURI(from.toURI.toString).setDirectory(to).setBare(true).call) { git =>
|
||||
Using.resource(Git.cloneRepository.setURI(from.toURI.toString).setDirectory(to).setBare(true).call) { git =>
|
||||
setReceivePack(git.getRepository)
|
||||
}
|
||||
|
||||
@@ -898,7 +905,7 @@ object JGitUtil {
|
||||
def createTag(git: Git, name: String, message: Option[String], commitId: String) = {
|
||||
try {
|
||||
val objectId: ObjectId = git.getRepository.resolve(commitId)
|
||||
using(new RevWalk(git.getRepository)) { walk =>
|
||||
Using.resource(new RevWalk(git.getRepository)) { walk =>
|
||||
val tagCommand = git.tag().setName(name).setObjectId(walk.parseCommit(objectId))
|
||||
message.foreach { message =>
|
||||
tagCommand.setMessage(message)
|
||||
@@ -1003,7 +1010,7 @@ object JGitUtil {
|
||||
case false => None
|
||||
}
|
||||
|
||||
using(new TreeWalk(git.getRepository)) { treeWalk =>
|
||||
Using.resource(new TreeWalk(git.getRepository)) { treeWalk =>
|
||||
treeWalk.addTree(revTree)
|
||||
treeWalk.setRecursive(true)
|
||||
getPathObjectId(path, treeWalk)
|
||||
@@ -1048,7 +1055,7 @@ object JGitUtil {
|
||||
|
||||
def getContentInfo(git: Git, path: String, objectId: ObjectId): ContentInfo = {
|
||||
// Viewer
|
||||
using(git.getRepository.getObjectDatabase) { db =>
|
||||
Using.resource(git.getRepository.getObjectDatabase) { db =>
|
||||
val loader = db.open(objectId)
|
||||
val isLfs = isLfsPointer(loader)
|
||||
val large = FileUtil.isLarge(loader.getSize)
|
||||
@@ -1086,7 +1093,7 @@ object JGitUtil {
|
||||
*/
|
||||
def getContentFromId(git: Git, id: ObjectId, fetchLargeFile: Boolean): Option[Array[Byte]] =
|
||||
try {
|
||||
using(git.getRepository.getObjectDatabase) { db =>
|
||||
Using.resource(git.getRepository.getObjectDatabase) { db =>
|
||||
val loader = db.open(id)
|
||||
if (loader.isLarge || (fetchLargeFile == false && FileUtil.isLarge(loader.getSize))) {
|
||||
None
|
||||
@@ -1108,7 +1115,7 @@ object JGitUtil {
|
||||
*/
|
||||
def getObjectLoaderFromId[A](git: Git, id: ObjectId)(f: ObjectLoader => A): Option[A] =
|
||||
try {
|
||||
using(git.getRepository.getObjectDatabase) { db =>
|
||||
Using.resource(git.getRepository.getObjectDatabase) { db =>
|
||||
Some(f(db.open(id)))
|
||||
}
|
||||
} catch {
|
||||
@@ -1131,8 +1138,8 @@ object JGitUtil {
|
||||
}
|
||||
|
||||
def processTree[T](git: Git, id: ObjectId)(f: (String, CanonicalTreeParser) => T): Seq[T] = {
|
||||
using(new RevWalk(git.getRepository)) { revWalk =>
|
||||
using(new TreeWalk(git.getRepository)) { treeWalk =>
|
||||
Using.resource(new RevWalk(git.getRepository)) { revWalk =>
|
||||
Using.resource(new TreeWalk(git.getRepository)) { treeWalk =>
|
||||
val index = treeWalk.addTree(revWalk.parseTree(id))
|
||||
treeWalk.setRecursive(true)
|
||||
val result = new collection.mutable.ListBuffer[T]()
|
||||
@@ -1176,7 +1183,7 @@ object JGitUtil {
|
||||
requestRepositoryName: String,
|
||||
requestBranch: String
|
||||
): (String, String) =
|
||||
using(
|
||||
Using.resources(
|
||||
Git.open(Directory.getRepositoryDir(userName, repositoryName)),
|
||||
Git.open(Directory.getRepositoryDir(requestUserName, requestRepositoryName))
|
||||
) { (oldGit, newGit) =>
|
||||
@@ -1293,7 +1300,7 @@ object JGitUtil {
|
||||
* @return sha1
|
||||
*/
|
||||
def getShaByRef(owner: String, name: String, revstr: String): Option[String] = {
|
||||
using(Git.open(getRepositoryDir(owner, name))) { git =>
|
||||
Using.resource(Git.open(getRepositoryDir(owner, name))) { git =>
|
||||
Option(git.getRepository.resolve(revstr)).map(ObjectId.toString(_))
|
||||
}
|
||||
}
|
||||
@@ -1308,14 +1315,14 @@ object JGitUtil {
|
||||
if (lfsAttrs.nonEmpty) {
|
||||
val oid = lfsAttrs("oid").split(":")(1)
|
||||
|
||||
using(new FileInputStream(FileUtil.getLfsFilePath(repository.owner, repository.name, oid))) { in =>
|
||||
Using.resource(new FileInputStream(FileUtil.getLfsFilePath(repository.owner, repository.name, oid))) { in =>
|
||||
f(in)
|
||||
}
|
||||
} else {
|
||||
throw new NoSuchElementException("LFS attribute is empty.")
|
||||
}
|
||||
} else {
|
||||
using(loader.openStream()) { in =>
|
||||
Using.resource(loader.openStream()) { in =>
|
||||
f(in)
|
||||
}
|
||||
}
|
||||
@@ -1324,7 +1331,7 @@ object JGitUtil {
|
||||
def openFile[T](git: Git, repository: RepositoryService.RepositoryInfo, tree: RevTree, path: String)(
|
||||
f: InputStream => T
|
||||
): T = {
|
||||
using(TreeWalk.forPath(git.getRepository, path, tree)) { treeWalk =>
|
||||
Using.resource(TreeWalk.forPath(git.getRepository, path, tree)) { treeWalk =>
|
||||
openFile(git, repository, treeWalk)(f)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ object SyntaxSugars {
|
||||
|
||||
def defining[A, B](value: A)(f: A => B): B = f(value)
|
||||
|
||||
@deprecated("Use scala.util.Using.resource instead", "4.32.0")
|
||||
def using[A <: { def close(): Unit }, B](resource: A)(f: A => B): B =
|
||||
try f(resource)
|
||||
finally {
|
||||
@@ -21,6 +22,7 @@ object SyntaxSugars {
|
||||
}
|
||||
}
|
||||
|
||||
@deprecated("Use scala.util.Using.resources instead", "4.32.0")
|
||||
def using[A <: { def close(): Unit }, B <: { def close(): Unit }, C](resource1: A, resource2: B)(f: (A, B) => C): C =
|
||||
try f(resource1, resource2)
|
||||
finally {
|
||||
@@ -36,10 +38,12 @@ object SyntaxSugars {
|
||||
}
|
||||
}
|
||||
|
||||
@deprecated("Use scala.util.Using.resource instead", "4.32.0")
|
||||
def using[T](git: Git)(f: Git => T): T =
|
||||
try f(git)
|
||||
finally git.getRepository.close()
|
||||
|
||||
@deprecated("Use scala.util.Using.resources instead", "4.32.0")
|
||||
def using[T](git1: Git, git2: Git)(f: (Git, Git) => T): T =
|
||||
try f(git1, git2)
|
||||
finally {
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package gitbucket.core.service
|
||||
|
||||
import gitbucket.core.util.Directory._
|
||||
import gitbucket.core.util.SyntaxSugars._
|
||||
import gitbucket.core.util.GitSpecUtil._
|
||||
|
||||
import org.eclipse.jgit.api.Git
|
||||
@@ -10,6 +9,7 @@ import org.eclipse.jgit.revwalk._
|
||||
import org.scalatest.FunSpec
|
||||
|
||||
import java.io.File
|
||||
import scala.util.Using
|
||||
|
||||
class MergeServiceSpec extends FunSpec {
|
||||
val service = new MergeService with AccountService with ActivityService with IssuesService with LabelsService
|
||||
@@ -19,7 +19,7 @@ class MergeServiceSpec extends FunSpec {
|
||||
val issueId = 10
|
||||
def initRepository(owner: String, name: String): File = {
|
||||
val dir = createTestRepository(getRepositoryDir(owner, name))
|
||||
using(Git.open(dir)) { git =>
|
||||
Using.resource(Git.open(dir)) { git =>
|
||||
createFile(git, "refs/heads/master", "test.txt", "hoge")
|
||||
git.branchCreate().setStartPoint(s"refs/heads/master").setName(s"refs/pull/${issueId}/head").call()
|
||||
}
|
||||
@@ -39,7 +39,7 @@ class MergeServiceSpec extends FunSpec {
|
||||
}
|
||||
it("checkConflict true if not conflicted, and create cache") {
|
||||
val repo2Dir = initRepository("user1", "repo2")
|
||||
using(Git.open(repo2Dir)) { git =>
|
||||
Using.resource(Git.open(repo2Dir)) { git =>
|
||||
createConfrict(git)
|
||||
}
|
||||
assert(service.checkConflictCache("user1", "repo2", branch, issueId) == None)
|
||||
@@ -56,7 +56,7 @@ class MergeServiceSpec extends FunSpec {
|
||||
val repo3Dir = initRepository("user1", "repo3")
|
||||
assert(service.checkConflict("user1", "repo3", branch, issueId).isEmpty)
|
||||
assert(service.checkConflictCache("user1", "repo3", branch, issueId) == Some(None))
|
||||
using(Git.open(repo3Dir)) { git =>
|
||||
Using.resource(Git.open(repo3Dir)) { git =>
|
||||
createFile(git, s"refs/heads/${branch}", "test.txt", "hoge2")
|
||||
}
|
||||
assert(service.checkConflictCache("user1", "repo3", branch, issueId) == None)
|
||||
@@ -65,7 +65,7 @@ class MergeServiceSpec extends FunSpec {
|
||||
val repo4Dir = initRepository("user1", "repo4")
|
||||
assert(service.checkConflict("user1", "repo4", branch, issueId).isEmpty)
|
||||
assert(service.checkConflictCache("user1", "repo4", branch, issueId) == Some(None))
|
||||
using(Git.open(repo4Dir)) { git =>
|
||||
Using.resource(Git.open(repo4Dir)) { git =>
|
||||
createFile(git, s"refs/pull/${issueId}/head", "test.txt", "hoge4")
|
||||
}
|
||||
assert(service.checkConflictCache("user1", "repo4", branch, issueId) == None)
|
||||
@@ -74,14 +74,14 @@ class MergeServiceSpec extends FunSpec {
|
||||
val repo5Dir = initRepository("user1", "repo5")
|
||||
assert(service.checkConflict("user1", "repo5", branch, issueId).isEmpty)
|
||||
assert(service.checkConflictCache("user1", "repo5", branch, issueId) == Some(None))
|
||||
using(Git.open(repo5Dir)) { git =>
|
||||
Using.resource(Git.open(repo5Dir)) { git =>
|
||||
createFile(git, s"refs/heads/${branch}", "test.txt", "hoge2")
|
||||
}
|
||||
assert(service.checkConflictCache("user1", "repo5", branch, issueId) == None)
|
||||
}
|
||||
it("conflicted cache invalid if request branch moved") {
|
||||
val repo6Dir = initRepository("user1", "repo6")
|
||||
using(Git.open(repo6Dir)) { git =>
|
||||
Using.resource(Git.open(repo6Dir)) { git =>
|
||||
createConfrict(git)
|
||||
}
|
||||
assert(service.checkConflict("user1", "repo6", branch, issueId).isDefined)
|
||||
@@ -89,14 +89,14 @@ class MergeServiceSpec extends FunSpec {
|
||||
case Some(Some(_: String)) => true
|
||||
case _ => false
|
||||
})
|
||||
using(Git.open(repo6Dir)) { git =>
|
||||
Using.resource(Git.open(repo6Dir)) { git =>
|
||||
createFile(git, s"refs/pull/${issueId}/head", "test.txt", "hoge4")
|
||||
}
|
||||
assert(service.checkConflictCache("user1", "repo6", branch, issueId) == None)
|
||||
}
|
||||
it("conflicted cache invalid if origin branch moved") {
|
||||
val repo7Dir = initRepository("user1", "repo7")
|
||||
using(Git.open(repo7Dir)) { git =>
|
||||
Using.resource(Git.open(repo7Dir)) { git =>
|
||||
createConfrict(git)
|
||||
}
|
||||
assert(service.checkConflict("user1", "repo7", branch, issueId).isDefined)
|
||||
@@ -104,7 +104,7 @@ class MergeServiceSpec extends FunSpec {
|
||||
case Some(Some(_)) => true
|
||||
case _ => false
|
||||
})
|
||||
using(Git.open(repo7Dir)) { git =>
|
||||
Using.resource(Git.open(repo7Dir)) { git =>
|
||||
createFile(git, s"refs/heads/${branch}", "test.txt", "hoge4")
|
||||
}
|
||||
assert(service.checkConflictCache("user1", "repo7", branch, issueId) == None)
|
||||
@@ -113,7 +113,7 @@ class MergeServiceSpec extends FunSpec {
|
||||
describe("mergePullRequest") {
|
||||
it("can merge") {
|
||||
val repo8Dir = initRepository("user1", "repo8")
|
||||
using(Git.open(repo8Dir)) { git =>
|
||||
Using.resource(Git.open(repo8Dir)) { git =>
|
||||
createFile(git, s"refs/pull/${issueId}/head", "test.txt", "hoge2")
|
||||
val committer = new PersonIdent("dummy2", "dummy2@example.com")
|
||||
assert(getFile(git, branch, "test.txt").content.get == "hoge")
|
||||
@@ -121,7 +121,7 @@ class MergeServiceSpec extends FunSpec {
|
||||
val masterId = git.getRepository.resolve(branch)
|
||||
service.mergePullRequest(git, branch, issueId, "merged", committer)
|
||||
val lastCommitId = git.getRepository.resolve(branch)
|
||||
val commit = using(new RevWalk(git.getRepository))(_.parseCommit(lastCommitId))
|
||||
val commit = Using.resource(new RevWalk(git.getRepository))(_.parseCommit(lastCommitId))
|
||||
assert(commit.getCommitterIdent() == committer)
|
||||
assert(commit.getAuthorIdent() == committer)
|
||||
assert(commit.getFullMessage() == "merged")
|
||||
|
||||
@@ -2,7 +2,6 @@ package gitbucket.core.service
|
||||
|
||||
import gitbucket.core.GitBucketCoreModule
|
||||
import gitbucket.core.util.{DatabaseConfig, Directory, FileUtil, JGitUtil}
|
||||
import gitbucket.core.util.SyntaxSugars._
|
||||
import io.github.gitbucket.solidbase.Solidbase
|
||||
import liquibase.database.core.H2Database
|
||||
import liquibase.database.jvm.JdbcConnection
|
||||
@@ -19,6 +18,7 @@ import org.scalatestplus.mockito.MockitoSugar
|
||||
import org.mockito.Mockito._
|
||||
|
||||
import scala.util.Random
|
||||
import scala.util.Using
|
||||
|
||||
trait ServiceSpecBase extends MockitoSugar {
|
||||
|
||||
@@ -58,7 +58,7 @@ trait ServiceSpecBase extends MockitoSugar {
|
||||
FileUtil.withTmpDir(new File(FileUtils.getTempDirectory(), Random.alphanumeric.take(10).mkString)) { dir =>
|
||||
val (url, user, pass) = (DatabaseConfig.url(Some(dir.toString)), DatabaseConfig.user, DatabaseConfig.password)
|
||||
org.h2.Driver.load()
|
||||
using(DriverManager.getConnection(url, user, pass)) { conn =>
|
||||
Using.resource(DriverManager.getConnection(url, user, pass)) { conn =>
|
||||
val solidbase = new Solidbase()
|
||||
val db = new H2Database()
|
||||
db.setConnection(new JdbcConnection(conn)) // TODO Remove setConnection in the future
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
package gitbucket.core.util
|
||||
|
||||
import gitbucket.core.util.SyntaxSugars._
|
||||
|
||||
import org.apache.commons.io.FileUtils
|
||||
import org.eclipse.jgit.api.Git
|
||||
import org.eclipse.jgit.dircache.DirCache
|
||||
@@ -13,6 +11,7 @@ import org.eclipse.jgit.errors._
|
||||
|
||||
import java.nio.file._
|
||||
import java.io.File
|
||||
import scala.util.Using
|
||||
|
||||
object GitSpecUtil {
|
||||
|
||||
@@ -28,7 +27,8 @@ object GitSpecUtil {
|
||||
}
|
||||
}
|
||||
|
||||
def withTestRepository[U](f: Git => U): U = withTestFolder(folder => using(Git.open(createTestRepository(folder)))(f))
|
||||
def withTestRepository[U](f: Git => U): U =
|
||||
withTestFolder(folder => Using.resource(Git.open(createTestRepository(folder)))(f))
|
||||
|
||||
def createTestRepository(dir: File): File = {
|
||||
RepositoryCache.clear()
|
||||
@@ -81,7 +81,7 @@ object GitSpecUtil {
|
||||
|
||||
def getFile(git: Git, branch: String, path: String) = {
|
||||
val revCommit = JGitUtil.getRevCommitFromId(git, git.getRepository.resolve(branch))
|
||||
val objectId = using(new TreeWalk(git.getRepository)) { walk =>
|
||||
val objectId = Using.resource(new TreeWalk(git.getRepository)) { walk =>
|
||||
walk.addTree(revCommit.getTree)
|
||||
walk.setRecursive(true)
|
||||
@scala.annotation.tailrec
|
||||
@@ -108,7 +108,7 @@ object GitSpecUtil {
|
||||
if (conflicted) {
|
||||
throw new RuntimeException("conflict!")
|
||||
}
|
||||
val mergeTipCommit = using(new RevWalk(repository))(_.parseCommit(mergeTip))
|
||||
val mergeTipCommit = Using.resource(new RevWalk(repository))(_.parseCommit(mergeTip))
|
||||
val committer = mergeTipCommit.getCommitterIdent
|
||||
// creates merge commit
|
||||
val mergeCommit = new CommitBuilder()
|
||||
|
||||
Reference in New Issue
Block a user