summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorekempin <ekempin@google.com>2016-11-17 19:29:42 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2016-11-17 19:29:43 +0000
commitb54112640196805eba81e452bb1fa034b9fda94c (patch)
treed164fd5939a0f0d1a603a8fe43c6df2cd09875c2
parent260598c5295651601638cd171eea4ce5b49a5f0c (diff)
parent650769c46b9d5cdad12937158e787b64be2bc41c (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.java12
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);