diff options
author | ekempin <ekempin@google.com> | 2016-11-17 19:29:42 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2016-11-17 19:29:43 +0000 |
commit | b54112640196805eba81e452bb1fa034b9fda94c (patch) | |
tree | d164fd5939a0f0d1a603a8fe43c6df2cd09875c2 | |
parent | 260598c5295651601638cd171eea4ce5b49a5f0c (diff) | |
parent | 650769c46b9d5cdad12937158e787b64be2bc41c (diff) |
Merge "Fix NPE when requesting invalid Change-Id to index" into stable-2.13
-rw-r--r-- | gerrit-sshd/src/main/java/com/google/gerrit/sshd/ChangeArgumentParser.java | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/ChangeArgumentParser.java b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/ChangeArgumentParser.java index 7f95471d75..db5f3aafc2 100644 --- a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/ChangeArgumentParser.java +++ b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/ChangeArgumentParser.java @@ -96,9 +96,9 @@ public class ChangeArgumentParser { } private List<ChangeControl> changeFromNotesFactory(String id, - final CurrentUser currentUser) throws OrmException { + final CurrentUser currentUser) throws OrmException, UnloggedFailure { List<ChangeNotes> changes = - changeNotesFactory.create(db, Arrays.asList(Change.Id.parse(id))); + changeNotesFactory.create(db, parseId(id)); return FluentIterable.from(changes) .transform(new Function<ChangeNotes, ChangeControl>() { @Override @@ -108,6 +108,14 @@ public class ChangeArgumentParser { }).filter(Predicates.notNull()).toList(); } + private List<Change.Id> parseId(String id) throws UnloggedFailure { + try { + return Arrays.asList(new Change.Id(Integer.parseInt(id))); + } catch (NumberFormatException e) { + throw new UnloggedFailure(2, "Invalid change ID " + id, e); + } + } + private ChangeControl controlForChange(ChangeNotes change, CurrentUser user) { try { return changeControlFactory.controlFor(change, user); |