summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShawn O. Pearce <sop@google.com>2010-08-19 12:33:07 -0700
committerShawn O. Pearce <sop@google.com>2010-08-19 12:34:13 -0700
commita5f868563fef26e5f3675bebe0ce88f7f5d9dffe (patch)
tree1a7f95622d3191a95dcc7bf4f939bf999b3e3852
parent135db6e96f6bac58097def38ecd7c6a618447ffb (diff)
Don't pass null arguments to hooks
If the change URL isn't available (e.g. because we don't have gerrit.canonicalWebUrl configured) we cannot pass down the --change-url flag to certain hooks. Safeguard the code from that failure case. Bug: issue 641 Change-Id: Ib26ec8759e0090aadfc815c17fe7db0f299c640e Signed-off-by: Shawn O. Pearce <sop@google.com>
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/common/ChangeHookRunner.java88
1 files changed, 34 insertions, 54 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/common/ChangeHookRunner.java b/gerrit-server/src/main/java/com/google/gerrit/common/ChangeHookRunner.java
index f2d0ad08c5..ed01977c12 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/common/ChangeHookRunner.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/common/ChangeHookRunner.java
@@ -172,6 +172,13 @@ public class ChangeHookRunner {
}
}
+ private void addArg(List<String> args, String name, String value) {
+ if (value != null) {
+ args.add(name);
+ args.add(value);
+ }
+ }
+
/**
* Fire the Patchset Created Hook.
*
@@ -190,20 +197,13 @@ public class ChangeHookRunner {
final List<String> args = new ArrayList<String>();
args.add(patchsetCreatedHook.getAbsolutePath());
- args.add("--change");
- args.add(event.change.id);
- args.add("--change-url");
- args.add(event.change.url);
- args.add("--project");
- args.add(event.change.project);
- args.add("--branch");
- args.add(event.change.branch);
- args.add("--uploader");
- args.add(getDisplayName(uploader.getAccount()));
- args.add("--commit");
- args.add(event.patchSet.revision);
- args.add("--patchset");
- args.add(event.patchSet.number);
+ addArg(args, "--change", event.change.id);
+ addArg(args, "--change-url", event.change.url);
+ addArg(args, "--project", event.change.project);
+ addArg(args, "--branch", event.change.branch);
+ addArg(args, "--uploader", getDisplayName(uploader.getAccount()));
+ addArg(args, "--commit", event.patchSet.revision);
+ addArg(args, "--patchset", event.patchSet.number);
runHook(getRepo(change), args);
}
@@ -238,23 +238,15 @@ public class ChangeHookRunner {
final List<String> args = new ArrayList<String>();
args.add(commentAddedHook.getAbsolutePath());
- args.add("--change");
- args.add(event.change.id);
- args.add("--change-url");
- args.add(event.change.url);
- args.add("--project");
- args.add(event.change.project);
- args.add("--branch");
- args.add(event.change.branch);
- args.add("--author");
- args.add(getDisplayName(account));
- args.add("--commit");
- args.add(event.patchSet.revision);
- args.add("--comment");
- args.add(comment == null ? "" : comment);
+ addArg(args, "--change", event.change.id);
+ addArg(args, "--change-url", event.change.url);
+ addArg(args, "--project", event.change.project);
+ addArg(args, "--branch", event.change.branch);
+ addArg(args, "--author", getDisplayName(account));
+ addArg(args, "--commit", event.patchSet.revision);
+ addArg(args, "--comment", comment == null ? "" : comment);
for (Map.Entry<ApprovalCategory.Id, ApprovalCategoryValue.Id> approval : approvals.entrySet()) {
- args.add("--" + approval.getKey().get());
- args.add(Short.toString(approval.getValue().get()));
+ addArg(args, "--" + approval.getKey().get(), Short.toString(approval.getValue().get()));
}
runHook(getRepo(change), args);
@@ -278,18 +270,12 @@ public class ChangeHookRunner {
final List<String> args = new ArrayList<String>();
args.add(changeMergedHook.getAbsolutePath());
- args.add("--change");
- args.add(event.change.id);
- args.add("--change-url");
- args.add(event.change.url);
- args.add("--project");
- args.add(event.change.project);
- args.add("--branch");
- args.add(event.change.branch);
- args.add("--submitter");
- args.add(getDisplayName(account));
- args.add("--commit");
- args.add(event.patchSet.revision);
+ addArg(args, "--change", event.change.id);
+ addArg(args, "--change-url", event.change.url);
+ addArg(args, "--project", event.change.project);
+ addArg(args, "--branch", event.change.branch);
+ addArg(args, "--submitter", getDisplayName(account));
+ addArg(args, "--commit", event.patchSet.revision);
runHook(getRepo(change), args);
}
@@ -312,18 +298,12 @@ public class ChangeHookRunner {
final List<String> args = new ArrayList<String>();
args.add(changeAbandonedHook.getAbsolutePath());
- args.add("--change");
- args.add(event.change.id);
- args.add("--change-url");
- args.add(event.change.url);
- args.add("--project");
- args.add(event.change.project);
- args.add("--branch");
- args.add(event.change.branch);
- args.add("--abandoner");
- args.add(getDisplayName(account));
- args.add("--reason");
- args.add(reason == null ? "" : reason);
+ addArg(args, "--change", event.change.id);
+ addArg(args, "--change-url", event.change.url);
+ addArg(args, "--project", event.change.project);
+ addArg(args, "--branch", event.change.branch);
+ addArg(args, "--abandoner", getDisplayName(account));
+ addArg(args, "--reason", reason == null ? "" : reason);
runHook(getRepo(change), args);
}