LogServlet: Don't return explicit null for Optional return type Change-Id: I21b3ec4eebf90b28e9d03ff6783340f79a7e626a
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java index 5f17081..577598a 100644 --- a/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java +++ b/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java
@@ -202,8 +202,17 @@ } } + private static class InvalidStartValueException extends IllegalArgumentException { + private static final long serialVersionUID = 1L; + + InvalidStartValueException() { + super(); + } + } + private static Optional<ObjectId> getStart( - ListMultimap<String, String> params, ObjectReader reader) throws IOException { + ListMultimap<String, String> params, ObjectReader reader) + throws IOException, InvalidStartValueException { List<String> values = params.get(START_PARAM); switch (values.size()) { case 0: @@ -211,15 +220,15 @@ case 1: String id = values.get(0); if (!AbbreviatedObjectId.isId(id)) { - return null; + throw new InvalidStartValueException(); } Collection<ObjectId> ids = reader.resolve(AbbreviatedObjectId.fromString(id)); if (ids.size() != 1) { - return null; + throw new InvalidStartValueException(); } return Optional.of(Iterables.getOnlyElement(ids)); default: - return null; + throw new InvalidStartValueException(); } } @@ -313,12 +322,12 @@ return null; } - Optional<ObjectId> start = getStart(view.getParameters(), walk.getObjectReader()); - if (start == null) { + try { + Optional<ObjectId> start = getStart(view.getParameters(), walk.getObjectReader()); + return new Paginator(walk, getLimit(view), start.orNull()); + } catch (InvalidStartValueException e) { return null; } - - return new Paginator(walk, getLimit(view), start.orNull()); } }