Skip to content

Commit 160fd27

Browse files
author
Vladimir Kotal
authored
Prepare exec projects (#1686)
* use getByName() in prepareExec() fixes #1680
1 parent b9a7461 commit 160fd27

File tree

3 files changed

+26
-17
lines changed

3 files changed

+26
-17
lines changed

src/org/opensolaris/opengrok/web/PageConfig.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -757,7 +757,7 @@ public String getRequestedProjectsAsString() {
757757
* NOTE: This method assumes, that project names do <b>not</b> contain a
758758
* comma (','), since this character is used as name separator!
759759
*
760-
* @return a possible empty set of project names aka descriptions but never
760+
* @return a possible empty set of project names but never
761761
* {@code null}. It is determined as follows: <ol> <li>If there is no
762762
* project in the runtime environment (RTE) an empty set is returned.
763763
* Otherwise:</li> <li>If there is only one project in the RTE, this one
@@ -844,7 +844,7 @@ private List<String> getParamVals(String paramName) {
844844
* contains the project list in question.
845845
* @param cookieName name of the cookie which possible contains project
846846
* lists used as fallback
847-
* @return a possible empty set but never {@code null}.
847+
* @return set of project names. Possibly empty set but never {@code null}.
848848
*/
849849
protected SortedSet<String> getRequestedProjects(String paramName,
850850
String cookieName) {

src/org/opensolaris/opengrok/web/SearchHelper.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -232,9 +232,11 @@ public static Set<Map.Entry<String, String>> getFileTypeDescriptions() {
232232
* <li>{@link #projects}</li> <li>{@link #errorMsg} if an error occurs</li>
233233
* </ul>
234234
*
235-
* @param projects project paths. If empty, a no-project setup
235+
* @param projects project names. If empty, a no-project setup
236236
* is assumed (i.e. DATA_ROOT/index will be used instead of possible
237-
* multiple DATA_ROOT/$project/index).
237+
* multiple DATA_ROOT/$project/index). If the set contains projects
238+
* not known in the configuration or projects not yet indexed,
239+
* an error will be returned in {@link #errorMsg}.
238240
* @return this instance
239241
*/
240242
public SearchHelper prepareExec(SortedSet<String> projects) {
@@ -261,7 +263,7 @@ public SearchHelper prepareExec(SortedSet<String> projects) {
261263
// are valid and indexed.
262264
closeOnDestroy = false;
263265
Set <Project> projectSet = projects.stream().
264-
map(x -> Project.getProject(x)).collect(Collectors.toSet());
266+
map(x -> Project.getByName(x)).collect(Collectors.toSet());
265267
if (projectSet.contains(null)) {
266268
errorMsg = "Project list contains invalid projects";
267269
return this;

test/org/opensolaris/opengrok/web/SearchHelperTest.java

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ private SearchHelper getSearchHelper(String searchTerm) {
103103

104104
@Test
105105
public void testSearchAfterReindex() {
106-
SortedSet<String> projects = new TreeSet<>();
106+
SortedSet<String> projectNames = new TreeSet<>();
107107
SearchHelper searchHelper;
108108

109109
env.setProjectsEnabled(true);
@@ -121,19 +121,19 @@ public void testSearchAfterReindex() {
121121
}
122122

123123
// Search for existing term in single project.
124-
projects.add("/c");
124+
projectNames.add("c");
125125
searchHelper = this.getSearchHelper("foobar")
126-
.prepareExec(projects).executeQuery().prepareSummary();
126+
.prepareExec(projectNames).executeQuery().prepareSummary();
127127
Assert.assertNull(searchHelper.errorMsg);
128128
System.out.println("single project search returned " +
129129
Integer.toString(searchHelper.totalHits) + " hits");
130130
Assert.assertEquals(4, searchHelper.totalHits);
131131
searchHelper.destroy();
132132

133133
// Search for existing term in multiple projects.
134-
projects.add("/document");
134+
projectNames.add("document");
135135
searchHelper = this.getSearchHelper("foobar")
136-
.prepareExec(projects).executeQuery().prepareSummary();
136+
.prepareExec(projectNames).executeQuery().prepareSummary();
137137
Assert.assertNull(searchHelper.errorMsg);
138138
System.out.println("multi-project search returned " +
139139
Integer.toString(searchHelper.totalHits) + " hits");
@@ -142,7 +142,7 @@ public void testSearchAfterReindex() {
142142

143143
// Search for non-existing term.
144144
searchHelper = this.getSearchHelper("CannotExistAnywhereForSure")
145-
.prepareExec(projects).executeQuery().prepareSummary();
145+
.prepareExec(projectNames).executeQuery().prepareSummary();
146146
Assert.assertNull(searchHelper.errorMsg);
147147
System.out.println("multi-project search for non-existing term returned " +
148148
Integer.toString(searchHelper.totalHits) + " hits");
@@ -163,7 +163,7 @@ public void testSearchAfterReindex() {
163163
}
164164
env.maybeRefreshIndexSearchers();
165165
searchHelper = this.getSearchHelper("foobar")
166-
.prepareExec(projects).executeQuery().prepareSummary();
166+
.prepareExec(projectNames).executeQuery().prepareSummary();
167167
Assert.assertNull(searchHelper.errorMsg);
168168
System.out.println("multi-project search after reindex returned " +
169169
Integer.toString(searchHelper.totalHits) + " hits");
@@ -174,7 +174,7 @@ public void testSearchAfterReindex() {
174174

175175
@Test
176176
public void testPrepareExecInvalidInput() {
177-
SortedSet<String> projects = new TreeSet<>();
177+
SortedSet<String> projectNames = new TreeSet<>();
178178
SearchHelper searchHelper;
179179

180180
env.setProjectsEnabled(true);
@@ -183,12 +183,19 @@ public void testPrepareExecInvalidInput() {
183183
Project project = new Project("c", "/c");
184184
env.getProjects().put("c", project);
185185

186+
// Try to prepare search for project that is not yet indexed.
187+
projectNames.add("c");
188+
searchHelper = this.getSearchHelper("foobar")
189+
.prepareExec(projectNames);
190+
Assert.assertNotNull(searchHelper.errorMsg);
191+
Assert.assertTrue(searchHelper.errorMsg.contains("not indexed"));
192+
186193
// Try to prepare search for list that contains non-existing project.
187-
projects.add("/c");
188-
projects.add("/foobar");
194+
projectNames.add("totally_nonexistent_project");
189195
searchHelper = this.getSearchHelper("foobar")
190-
.prepareExec(projects);
191-
Assert.assertTrue(searchHelper.errorMsg != null);
196+
.prepareExec(projectNames);
197+
Assert.assertNotNull(searchHelper.errorMsg);
198+
Assert.assertTrue(searchHelper.errorMsg.contains("invalid projects"));
192199
}
193200

194201
/**

0 commit comments

Comments
 (0)