Skip to content

Commit 912cbfd

Browse files
committed
Respect searchall query param when changing sort option
fixes #3547
1 parent 5ccae3f commit 912cbfd

File tree

4 files changed

+22
-22
lines changed

4 files changed

+22
-22
lines changed

opengrok-indexer/src/main/java/org/opengrok/indexer/web/QueryParameters.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,12 @@ public class QueryParameters {
229229
*/
230230
public static final String WINDOW_HASH_PARAM_EQ = WINDOW_HASH_PARAM + "=";
231231

232+
/**
233+
* Parameter to be used when searching all projects. Useful when instance has too many projects and the resulting
234+
* URL consisting of all projects could be too long.
235+
*/
236+
public static final String ALL_PROJECT_SEARCH = "searchall";
237+
232238
/* private to enforce static */
233239
private QueryParameters() {
234240
}

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

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,6 @@ public final class PageConfig {
128128
public static final String DUMMY_REVISION = "unknown";
129129

130130
// query parameters
131-
protected static final String ALL_PROJECT_SEARCH = "searchall";
132131
protected static final String PROJECT_PARAM_NAME = "project";
133132
protected static final String GROUP_PARAM_NAME = "group";
134133
private static final String DEBUG_PARAM_NAME = "debug";
@@ -800,17 +799,7 @@ public Project getProject() {
800799
*/
801800
public String getRequestedProjectsAsString() {
802801
if (requestedProjectsString == null) {
803-
Set<String> projects = getRequestedProjects();
804-
if (projects.isEmpty()) {
805-
requestedProjectsString = "";
806-
} else {
807-
StringBuilder buf = new StringBuilder();
808-
for (String name : projects) {
809-
buf.append(name).append(',');
810-
}
811-
buf.setLength(buf.length() - 1);
812-
requestedProjectsString = buf.toString();
813-
}
802+
requestedProjectsString = String.join(",", getRequestedProjects());
814803
}
815804
return requestedProjectsString;
816805
}
@@ -842,15 +831,15 @@ public String getRequestedProjectsAsString() {
842831
* </ol>
843832
*
844833
* @return a possible empty set of project names but never {@code null}.
845-
* @see #ALL_PROJECT_SEARCH
834+
* @see QueryParameters#ALL_PROJECT_SEARCH
846835
* @see #PROJECT_PARAM_NAME
847836
* @see #GROUP_PARAM_NAME
848837
* @see #OPEN_GROK_PROJECT
849838
*/
850839
public SortedSet<String> getRequestedProjects() {
851840
if (requestedProjects == null) {
852-
requestedProjects
853-
= getRequestedProjects(ALL_PROJECT_SEARCH, PROJECT_PARAM_NAME, GROUP_PARAM_NAME, OPEN_GROK_PROJECT);
841+
requestedProjects = getRequestedProjects(
842+
QueryParameters.ALL_PROJECT_SEARCH, PROJECT_PARAM_NAME, GROUP_PARAM_NAME, OPEN_GROK_PROJECT);
854843
}
855844
return requestedProjects;
856845
}

opengrok-web/src/main/webapp/search.jsp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,13 @@ include file="projects.jspf"
6363
Util.appendQuery(url, QueryParameters.HIST_SEARCH_PARAM, qb.getHist());
6464
Util.appendQuery(url, QueryParameters.TYPE_SEARCH_PARAM, qb.getType());
6565
}
66-
if (sh.projects != null && sh.projects.size() != 0) {
67-
Util.appendQuery(url, QueryParameters.PROJECT_SEARCH_PARAM,
68-
PageConfig.get(request).getRequestedProjectsAsString());
66+
if (sh.projects != null && !sh.projects.isEmpty()) {
67+
if (Boolean.parseBoolean(request.getParameter(QueryParameters.ALL_PROJECT_SEARCH))) {
68+
Util.appendQuery(url, QueryParameters.ALL_PROJECT_SEARCH, Boolean.TRUE.toString());
69+
} else {
70+
Util.appendQuery(url, QueryParameters.PROJECT_SEARCH_PARAM,
71+
PageConfig.get(request).getRequestedProjectsAsString());
72+
}
6973
}
7074
return url;
7175
}

opengrok-web/src/test/java/org/opengrok/web/PageConfigRequestedProjectsTest.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import org.opengrok.indexer.configuration.Group;
4040
import org.opengrok.indexer.configuration.Project;
4141
import org.opengrok.indexer.configuration.RuntimeEnvironment;
42+
import org.opengrok.indexer.web.QueryParameters;
4243

4344
import static org.junit.jupiter.api.Assertions.assertEquals;
4445

@@ -225,7 +226,7 @@ public void testNonExistentGroup() {
225226
@Test
226227
public void testSelectAllProjects() {
227228
final HttpServletRequest request = createRequest(null, null);
228-
Mockito.when(request.getParameter(PageConfig.ALL_PROJECT_SEARCH)).thenReturn("true");
229+
Mockito.when(request.getParameter(QueryParameters.ALL_PROJECT_SEARCH)).thenReturn("true");
229230

230231
final PageConfig cfg = PageConfig.get(request);
231232
assertEquals(new TreeSet<>(env.getProjectNames()), cfg.getRequestedProjects());
@@ -234,7 +235,7 @@ public void testSelectAllProjects() {
234235
@Test
235236
public void testSelectAllProjectsOverrideProjectParam() {
236237
final HttpServletRequest request = createRequest(new String[]{"project-1", "project-2"}, null);
237-
Mockito.when(request.getParameter(PageConfig.ALL_PROJECT_SEARCH)).thenReturn("true");
238+
Mockito.when(request.getParameter(QueryParameters.ALL_PROJECT_SEARCH)).thenReturn("true");
238239

239240
final PageConfig cfg = PageConfig.get(request);
240241
assertEquals(new TreeSet<>(env.getProjectNames()), cfg.getRequestedProjects());
@@ -243,7 +244,7 @@ public void testSelectAllProjectsOverrideProjectParam() {
243244
@Test
244245
public void testSelectAllProjectsOverrideGroupParam() {
245246
final HttpServletRequest request = createRequest(null, new String[]{"group-1-2-3"});
246-
Mockito.when(request.getParameter(PageConfig.ALL_PROJECT_SEARCH)).thenReturn("true");
247+
Mockito.when(request.getParameter(QueryParameters.ALL_PROJECT_SEARCH)).thenReturn("true");
247248

248249
final PageConfig cfg = PageConfig.get(request);
249250
assertEquals(new TreeSet<>(env.getProjectNames()), cfg.getRequestedProjects());
@@ -252,7 +253,7 @@ public void testSelectAllProjectsOverrideGroupParam() {
252253
@Test
253254
public void testSelectAllOverrideNonExistentProject() {
254255
final HttpServletRequest request = createRequest(new String[]{"no-project"}, null);
255-
Mockito.when(request.getParameter(PageConfig.ALL_PROJECT_SEARCH)).thenReturn("true");
256+
Mockito.when(request.getParameter(QueryParameters.ALL_PROJECT_SEARCH)).thenReturn("true");
256257

257258
final PageConfig cfg = PageConfig.get(request);
258259
assertEquals(new TreeSet<>(env.getProjectNames()), cfg.getRequestedProjects());

0 commit comments

Comments
 (0)