Skip to content

Commit a26e076

Browse files
committed
Fix #24: Filter search results in deleted repositories
1 parent 6526ec8 commit a26e076

File tree

1 file changed

+19
-14
lines changed

1 file changed

+19
-14
lines changed

src/main/scala/org/codelibs/gitbucket/fess/service/FessSearchService.scala

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,18 @@
11
package org.codelibs.gitbucket.fess.service
22

3+
import scala.util.control.Exception._
34
import java.net.{URL, URLEncoder}
45
import java.util.Date
56

67
import gitbucket.core.controller.ControllerBase
78
import gitbucket.core.model.{Issue, Session}
89
import gitbucket.core.service.{AccountService, IssuesService, WikiService}
910
import gitbucket.core.util.Directory._
10-
import gitbucket.core.util.JGitUtil._
1111
import gitbucket.core.util.SyntaxSugars._
1212
import gitbucket.core.util._
1313
import org.codelibs.gitbucket.fess.service.FessSettingsService.FessSettings
1414
import org.eclipse.jgit.api.Git
1515
import org.json4s._
16-
import org.json4s.jackson.JsonMethods._
1716
import org.slf4j.LoggerFactory
1817

1918
import scala.io.Source._
@@ -141,18 +140,22 @@ trait FessSearchService {
141140
def getCodeContents(query: String,
142141
results: List[FessRawResult]): List[FessCodeInfo] =
143142
results.flatMap(result => {
144-
getRepositoryDataFromURL(result.url).map({
143+
getRepositoryDataFromURL(result.url).flatMap({
145144
case (owner, repo, branch, path) =>
146-
val content =
147-
getFileContent(owner, repo, branch, path).getOrElse("")
148-
val (highlightText, highlightLineNumber) =
149-
getHighlightText(content, query)
150-
FessCodeInfo(owner,
151-
repo,
152-
result.url,
153-
result.title,
154-
highlightText,
155-
highlightLineNumber)
145+
// getFileContent causes an exception if the repository is deleted.
146+
val contentOpt = allCatch opt {
147+
getFileContent(owner, repo, branch, path).get
148+
}
149+
contentOpt.map(content => {
150+
val (highlightText, highlightLineNumber) =
151+
getHighlightText(content, query)
152+
FessCodeInfo(owner,
153+
repo,
154+
result.url,
155+
result.title,
156+
highlightText,
157+
highlightLineNumber)
158+
})
156159
})
157160
})
158161

@@ -195,7 +198,9 @@ trait FessSearchService {
195198
results.flatMap(result => {
196199
getWikiDataFromURL(result.url).flatMap({
197200
case (owner, repo, filename) =>
198-
getWikiPage(owner, repo, filename).map(wikiInfo => {
201+
// getWikiPage causes an exception if the repository is deleted.
202+
val wikiOpt = allCatch opt { getWikiPage(owner, repo, filename).get }
203+
wikiOpt.map(wikiInfo => {
199204
val (content, lineNum) = getHighlightText(wikiInfo.content, query)
200205
FessWikiInfo(owner, repo, result.url, filename, content, lineNum)
201206
})

0 commit comments

Comments
 (0)