Skip to content

Commit e274165

Browse files
author
Vladimir Kotal
committed
markIndexed() should return HTTP error code 404 for invalid project
1 parent 3301d2b commit e274165

File tree

1 file changed

+19
-17
lines changed

1 file changed

+19
-17
lines changed

opengrok-web/src/main/java/org/opengrok/web/api/v1/controller/ProjectsController.java

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
*/
1919

2020
/*
21-
* Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
21+
* Copyright (c) 2018, 2020, Oracle and/or its affiliates. All rights reserved.
2222
* Portions Copyright (c) 2020, Chris Fraire <[email protected]>.
2323
*/
2424
package org.opengrok.web.api.v1.controller;
@@ -41,6 +41,7 @@
4141
import javax.ws.rs.Consumes;
4242
import javax.ws.rs.DELETE;
4343
import javax.ws.rs.GET;
44+
import javax.ws.rs.NotFoundException;
4445
import javax.ws.rs.POST;
4546
import javax.ws.rs.PUT;
4647
import javax.ws.rs.Path;
@@ -250,27 +251,28 @@ public void markIndexed(@PathParam("project") String projectName) throws Excepti
250251
projectName = Laundromat.launderInput(projectName);
251252

252253
Project project = env.getProjects().get(projectName);
253-
if (project != null) {
254-
project.setIndexed(true);
254+
if (project == null) {
255+
logger.log(Level.WARNING, "cannot find project {0} to mark as indexed", projectName);
256+
throw new NotFoundException(String.format("project '%s' does not exist", projectName));
257+
}
255258

256-
// Refresh current version of the project's repositories.
257-
List<RepositoryInfo> riList = env.getProjectRepositoriesMap().get(project);
258-
if (riList != null) {
259-
for (RepositoryInfo ri : riList) {
260-
Repository repo = getRepository(ri, CommandTimeoutType.RESTFUL);
259+
project.setIndexed(true);
261260

262-
if (repo != null && repo.getCurrentVersion() != null && repo.getCurrentVersion().length() > 0) {
263-
// getRepository() always creates fresh instance
264-
// of the Repository object so there is no need
265-
// to call setCurrentVersion() on it.
266-
ri.setCurrentVersion(repo.determineCurrentVersion());
267-
}
261+
// Refresh current version of the project's repositories.
262+
List<RepositoryInfo> riList = env.getProjectRepositoriesMap().get(project);
263+
if (riList != null) {
264+
for (RepositoryInfo ri : riList) {
265+
Repository repo = getRepository(ri, CommandTimeoutType.RESTFUL);
266+
267+
if (repo != null && repo.getCurrentVersion() != null && repo.getCurrentVersion().length() > 0) {
268+
// getRepository() always creates fresh instance
269+
// of the Repository object so there is no need
270+
// to call setCurrentVersion() on it.
271+
ri.setCurrentVersion(repo.determineCurrentVersion());
268272
}
269273
}
270-
suggester.rebuild(projectName);
271-
} else {
272-
logger.log(Level.WARNING, "cannot find project {0} to mark as indexed", projectName);
273274
}
275+
suggester.rebuild(projectName);
274276

275277
// In case this project has just been incrementally indexed,
276278
// its IndexSearcher needs a poke.

0 commit comments

Comments
 (0)