Set patchSet field for abandon and restore events
Although both ChangeAbandonEvent, and ChangeRestoreEvent provide
patchSet fields, those fields were not set by the hook handlers. In
accordance with other events, we now set them to the change's current
patch set.
Change-Id: Iaa98322b2c0b0374a1f700d1e6038c4f5bbf0b11
diff --git a/Documentation/config-hooks.txt b/Documentation/config-hooks.txt
index 1236077..4b867e6 100644
--- a/Documentation/config-hooks.txt
+++ b/Documentation/config-hooks.txt
@@ -90,7 +90,7 @@
Called whenever a change has been abandoned.
====
- change-abandoned --change <change id> --change-url <change url> --project <project name> --branch <branch> --topic <topic> --abandoner <abandoner> --reason <reason>
+ change-abandoned --change <change id> --change-url <change url> --project <project name> --branch <branch> --topic <topic> --abandoner <abandoner> --commit <sha1> --reason <reason>
====
change-restored
@@ -99,7 +99,7 @@
Called whenever a change has been restored.
====
- change-restored --change <change id> --change-url <change url> --project <project name> --branch <branch> --topic <topic> --restorer <restorer> --reason <reason>
+ change-restored --change <change id> --change-url <change url> --project <project name> --branch <branch> --topic <topic> --restorer <restorer> --commit <sha1> --reason <reason>
====
ref-updated
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 2d54601..92c178d 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
@@ -469,11 +469,13 @@
}
public void doChangeAbandonedHook(final Change change, final Account account,
- final String reason, final ReviewDb db) throws OrmException {
+ final PatchSet patchSet, final String reason, final ReviewDb db)
+ throws OrmException {
final ChangeAbandonedEvent event = new ChangeAbandonedEvent();
event.change = eventFactory.asChangeAttribute(change);
event.abandoner = eventFactory.asAccountAttribute(account);
+ event.patchSet = eventFactory.asPatchSetAttribute(patchSet);
event.reason = reason;
fireEvent(change, event, db);
@@ -484,17 +486,20 @@
addArg(args, "--branch", event.change.branch);
addArg(args, "--topic", event.change.topic);
addArg(args, "--abandoner", getDisplayName(account));
+ addArg(args, "--commit", event.patchSet.revision);
addArg(args, "--reason", reason == null ? "" : reason);
runHook(change.getProject(), changeAbandonedHook, args);
}
public void doChangeRestoredHook(final Change change, final Account account,
- final String reason, final ReviewDb db) throws OrmException {
+ final PatchSet patchSet, final String reason, final ReviewDb db)
+ throws OrmException {
final ChangeRestoredEvent event = new ChangeRestoredEvent();
event.change = eventFactory.asChangeAttribute(change);
event.restorer = eventFactory.asAccountAttribute(account);
+ event.patchSet = eventFactory.asPatchSetAttribute(patchSet);
event.reason = reason;
fireEvent(change, event, db);
@@ -505,6 +510,7 @@
addArg(args, "--branch", event.change.branch);
addArg(args, "--topic", event.change.topic);
addArg(args, "--restorer", getDisplayName(account));
+ addArg(args, "--commit", event.patchSet.revision);
addArg(args, "--reason", reason == null ? "" : reason);
runHook(change.getProject(), changeRestoredHook, args);
diff --git a/gerrit-server/src/main/java/com/google/gerrit/common/ChangeHooks.java b/gerrit-server/src/main/java/com/google/gerrit/common/ChangeHooks.java
index 48a52a0..ccff39a 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/common/ChangeHooks.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/common/ChangeHooks.java
@@ -103,7 +103,7 @@
* @throws OrmException
*/
public void doChangeAbandonedHook(Change change, Account account,
- String reason, ReviewDb db) throws OrmException;
+ PatchSet patchSet, String reason, ReviewDb db) throws OrmException;
/**
* Fire the Change Restored Hook.
@@ -114,7 +114,7 @@
* @throws OrmException
*/
public void doChangeRestoredHook(Change change, Account account,
- String reason, ReviewDb db) throws OrmException;
+ PatchSet patchSet, String reason, ReviewDb db) throws OrmException;
/**
* Fire the Ref Updated Hook
diff --git a/gerrit-server/src/main/java/com/google/gerrit/common/DisabledChangeHooks.java b/gerrit-server/src/main/java/com/google/gerrit/common/DisabledChangeHooks.java
index 6011ab0..db87595 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/common/DisabledChangeHooks.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/common/DisabledChangeHooks.java
@@ -37,7 +37,7 @@
@Override
public void doChangeAbandonedHook(Change change, Account account,
- String reason, ReviewDb db) {
+ PatchSet patchSet, String reason, ReviewDb db) {
}
@Override
@@ -52,7 +52,7 @@
@Override
public void doChangeRestoredHook(Change change, Account account,
- String reason, ReviewDb db) {
+ PatchSet patchSet, String reason, ReviewDb db) {
}
@Override
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Abandon.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Abandon.java
index 20e7681..b48773f42 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Abandon.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Abandon.java
@@ -122,6 +122,7 @@
}
hooks.doChangeAbandonedHook(change,
caller.getAccount(),
+ db.patchSets().get(change.currentPatchSetId()),
Strings.emptyToNull(input.message),
db);
return json.format(change);
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Restore.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Restore.java
index 001ed03..c5dc2b4 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Restore.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Restore.java
@@ -121,6 +121,7 @@
}
hooks.doChangeRestoredHook(change,
caller.getAccount(),
+ db.patchSets().get(change.currentPatchSetId()),
Strings.emptyToNull(input.message),
dbProvider.get());
return json.format(change);