Skip to content

Commit 1ffd4a1

Browse files
committed
In ViewFilter, if a revision cannot be found then throw an exception
instead of returning null. Change-Id: I9c00409c67688d319f6c440afa4ad73fb5ecb7a9
1 parent d113c27 commit 1ffd4a1

2 files changed

Lines changed: 27 additions & 14 deletions

File tree

java/com/google/gitiles/ViewFilter.java

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ private GitilesView.Builder parseNoCommand(HttpServletRequest req, String repoNa
194194
return null;
195195
}
196196
RevisionParser.Result result = parseRevision(req, path);
197-
if (result == null || result.getOldRevision() != null) {
197+
if (result.getOldRevision() != null) {
198198
return null;
199199
}
200200
return GitilesView.archive()
@@ -212,9 +212,6 @@ private GitilesView.Builder parseNoCommand(HttpServletRequest req, String repoNa
212212
return null;
213213
}
214214
RevisionParser.Result result = parseRevision(req, path);
215-
if (result == null) {
216-
return null;
217-
}
218215
if (result.getOldRevision() != null) {
219216
return parseDiffCommand(repoName, result);
220217
}
@@ -234,7 +231,7 @@ private GitilesView.Builder parseNoCommand(HttpServletRequest req, String repoNa
234231
return null;
235232
}
236233
RevisionParser.Result result = parseRevision(req, path);
237-
if (result == null || result.getOldRevision() != null || result.getPath().isEmpty()) {
234+
if (result.getOldRevision() != null || result.getPath().isEmpty()) {
238235
return null;
239236
}
240237
return GitilesView.blame()
@@ -257,9 +254,6 @@ private GitilesView.Builder parseDiffCommand(HttpServletRequest req, String repo
257254

258255
private @Nullable GitilesView.Builder parseDiffCommand(
259256
String repoName, RevisionParser.Result result) {
260-
if (result == null) {
261-
return null;
262-
}
263257
return GitilesView.diff()
264258
.setRepositoryName(repoName)
265259
.setRevision(result.getRevision())
@@ -273,9 +267,6 @@ private GitilesView.Builder parseDiffCommand(HttpServletRequest req, String repo
273267
return GitilesView.log().setRepositoryName(repoName);
274268
}
275269
RevisionParser.Result result = parseRevision(req, path);
276-
if (result == null) {
277-
return null;
278-
}
279270
return GitilesView.log()
280271
.setRepositoryName(repoName)
281272
.setRevision(result.getRevision())
@@ -294,7 +285,7 @@ private GitilesView.Builder parseShowCommand(HttpServletRequest req, String repo
294285

295286
private @Nullable GitilesView.Builder parseShowCommand(
296287
String repoName, RevisionParser.Result result) {
297-
if (result == null || result.getOldRevision() != null) {
288+
if (result.getOldRevision() != null) {
298289
return null;
299290
}
300291
if (result.getPath().isEmpty()) {
@@ -313,7 +304,7 @@ private GitilesView.Builder parseDocCommand(HttpServletRequest req, String repoN
313304

314305
private @Nullable GitilesView.Builder parseDocCommand(
315306
String repoName, RevisionParser.Result result) {
316-
if (result == null || result.getOldRevision() != null) {
307+
if (result.getOldRevision() != null) {
317308
return null;
318309
}
319310
GitilesView.Builder b =
@@ -332,7 +323,11 @@ private RevisionParser.Result parseRevision(HttpServletRequest req, String path)
332323
accessFactory.forRequest(req),
333324
visibilityCache,
334325
getBranchRedirect(req));
335-
return revParser.parse(checkLeadingSlash(path));
326+
RevisionParser.Result rev = revParser.parse(checkLeadingSlash(path));
327+
if (rev == null) {
328+
throw new GitilesRequestFailureException(FailureReason.OBJECT_NOT_FOUND);
329+
}
330+
return rev;
336331
}
337332

338333
private BranchRedirect getBranchRedirect(HttpServletRequest req) {

javatests/com/google/gitiles/ViewFilterTest.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import static com.google.common.truth.Truth.assertThat;
1818
import static com.google.common.truth.Truth.assertWithMessage;
1919
import static com.google.gitiles.MoreAssert.assertThrows;
20+
import static java.lang.String.format;
2021

2122
import com.google.common.net.HttpHeaders;
2223
import java.io.IOException;
@@ -239,6 +240,11 @@ public void path() throws Exception {
239240
assertThat(view.getRevision().getId()).isEqualTo(master);
240241
assertThat(view.getPathPart()).isEqualTo("");
241242

243+
view = getView(format("/repo/+show/%s/", master.getId().name()));
244+
assertThat(view.getType()).isEqualTo(GitilesView.Type.PATH);
245+
assertThat(view.getRevision().getId()).isEqualTo(master);
246+
assertThat(view.getPathPart()).isEqualTo("");
247+
242248
view = getView("/repo/+show/master/foo");
243249
assertThat(view.getType()).isEqualTo(GitilesView.Type.PATH);
244250
assertThat(view.getRevision().getId()).isEqualTo(master);
@@ -258,6 +264,18 @@ public void path() throws Exception {
258264
GitilesRequestFailureException.class, () -> getView("/repo/+show/stable..master/foo"));
259265
}
260266

267+
@Test
268+
public void revisionNotFound() throws Exception {
269+
var exception = assertThrows(GitilesRequestFailureException.class, () -> getView("/repo/+show/0123456789abcdef"));
270+
assertThat(exception.getReason()).isEqualTo(GitilesRequestFailureException.FailureReason.OBJECT_NOT_FOUND);
271+
}
272+
273+
@Test
274+
public void cannotParse() throws Exception {
275+
var exception = assertThrows(GitilesRequestFailureException.class, () -> getView("/repo/+showmaster"));
276+
assertThat(exception.getReason()).isEqualTo(GitilesRequestFailureException.FailureReason.CANNOT_PARSE_GITILES_VIEW);
277+
}
278+
261279
@Test
262280
public void doc() throws Exception {
263281
RevCommit master = repo.branch(MASTER).commit().create();

0 commit comments

Comments
 (0)