Skip to content

Commit 49a599b

Browse files
committed
Add option to disable immediate redirect on singular results
Per #3582 add an option to disable the redirection behaviour when there is only a single file result. Signed-off-by: Ed Baunton <[email protected]>
1 parent 05519d9 commit 49a599b

File tree

3 files changed

+29
-1
lines changed

3 files changed

+29
-1
lines changed

opengrok-indexer/src/main/java/org/opengrok/indexer/configuration/Configuration.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,12 @@ public final class Configuration {
291291
*/
292292
private boolean navigateWindowEnabled;
293293

294+
/**
295+
* If true, redirect to a single result when a single search result is found.
296+
*/
297+
private boolean redirectOnSingleSearchResult;
298+
299+
294300
private SuggesterConfig suggesterConfig = new SuggesterConfig();
295301

296302
private StatsdConfig statsdConfig = new StatsdConfig();
@@ -604,6 +610,7 @@ public Configuration() {
604610
setQuickContextScan(true);
605611
//below can cause an outofmemory error, since it is defaulting to NO LIMIT
606612
setRamBufferSize(DEFAULT_RAM_BUFFER_SIZE); //MB
613+
setRedirectOnSingleSearchResult(true);
607614
setRemoteScmSupported(RemoteSCM.OFF);
608615
setRepositories(new ArrayList<>());
609616
setReviewPattern("\\b(\\d{4}/\\d{3})\\b"); // in form e.g. PSARC 2008/305
@@ -1234,6 +1241,14 @@ public void setDisplayRepositories(boolean flag) {
12341241
this.displayRepositories = flag;
12351242
}
12361243

1244+
public boolean isRedirectOnSingleSearchResult() {
1245+
return redirectOnSingleSearchResult;
1246+
}
1247+
1248+
public void setRedirectOnSingleSearchResult(boolean flag) {
1249+
this.redirectOnSingleSearchResult = flag;
1250+
}
1251+
12371252
public boolean getListDirsFirst() {
12381253
return listDirsFirst;
12391254
}

opengrok-indexer/src/main/java/org/opengrok/indexer/configuration/RuntimeEnvironment.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1437,6 +1437,14 @@ public void setDisplayRepositories(boolean displayRepositories) {
14371437
syncWriteConfiguration(displayRepositories, Configuration::setDisplayRepositories);
14381438
}
14391439

1440+
public boolean isRedirectOnSingleSearchResult() {
1441+
return syncReadConfiguration(Configuration::isRedirectOnSingleSearchResult);
1442+
}
1443+
1444+
public void setRedirectOnSingleSearchResult(boolean redirectOnSingleSearchResult) {
1445+
syncWriteConfiguration(redirectOnSingleSearchResult, Configuration::setRedirectOnSingleSearchResult);
1446+
}
1447+
14401448
public boolean getListDirsFirst() {
14411449
return syncReadConfiguration(Configuration::getListDirsFirst);
14421450
}

opengrok-web/src/main/java/org/opengrok/web/PageConfig.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1520,15 +1520,20 @@ public SearchHelper prepareSearch() {
15201520
* @return a search helper.
15211521
*/
15221522
public SearchHelper prepareInternalSearch(SortOrder sortOrder) {
1523+
boolean isRedirectOnSingleSearchResult = getEnv().isRedirectOnSingleSearchResult();
15231524
String xrValue = req.getParameter(QueryParameters.NO_REDIRECT_PARAM);
1525+
if (xrValue != null && !xrValue.isEmpty()) {
1526+
isRedirectOnSingleSearchResult = false;
1527+
}
1528+
15241529
return new SearchHelper.Builder(getDataRoot(), new File(getSourceRootPath()), getEftarReader(),
15251530
getQueryBuilder(), req.getContextPath())
15261531
.start(getStartIndex())
15271532
.order(sortOrder)
15281533
.maxItems(getMaxItems())
15291534
.crossRefSearch(getPrefix() == Prefix.SEARCH_R)
15301535
.guiSearch(getPrefix() == Prefix.SEARCH_R || getPrefix() == Prefix.SEARCH_P)
1531-
.noRedirect(xrValue != null && !xrValue.isEmpty())
1536+
.noRedirect(!isRedirectOnSingleSearchResult)
15321537
.build();
15331538
}
15341539

0 commit comments

Comments
 (0)