Follow upstream's switch to memoization of Event properties
Gerrit core switched to memoized properties in
2605168713139277fafa809f9fe0f98f4715f117
. To allow compilation against latest master, we follow this lead.
Change-Id: I99a237e696dbee8c8df936dda358783b28814dae
diff --git a/src/main/java/com/googlesource/gerrit/plugins/refprotection/BackupRef.java b/src/main/java/com/googlesource/gerrit/plugins/refprotection/BackupRef.java
index af075c9..1f257bf 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/refprotection/BackupRef.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/refprotection/BackupRef.java
@@ -28,6 +28,8 @@
import com.google.gerrit.extensions.restapi.BadRequestException;
import com.google.gerrit.extensions.restapi.ResourceConflictException;
import com.google.gerrit.server.config.PluginConfigFactory;
+import com.google.gerrit.server.data.AccountAttribute;
+import com.google.gerrit.server.data.RefUpdateAttribute;
import com.google.gerrit.server.events.RefUpdatedEvent;
import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.gerrit.server.project.CreateBranch;
@@ -84,24 +86,26 @@
}
try (RevWalk revWalk = new RevWalk(git)) {
+ RefUpdateAttribute refUpdate = event.refUpdate.get();
if (cfg.getFromGerritConfig(pluginName).getBoolean("createTag",
false)) {
TagBuilder tag = new TagBuilder();
+ AccountAttribute submitter = event.submitter.get();
tag.setTagger(
- new PersonIdent(event.submitter.name, event.submitter.email));
+ new PersonIdent(submitter.name, submitter.email));
tag.setObjectId(revWalk
- .parseCommit(ObjectId.fromString(event.refUpdate.oldRev)));
+ .parseCommit(ObjectId.fromString(refUpdate.oldRev)));
String update = "Non-fast-forward update to";
- if (event.refUpdate.newRev.equals(ObjectId.zeroId().getName())) {
+ if (refUpdate.newRev.equals(ObjectId.zeroId().getName())) {
update = "Deleted";
}
String type = "branch";
String fullMessage = "";
- if (event.refUpdate.refName.startsWith(R_TAGS)) {
+ if (refUpdate.refName.startsWith(R_TAGS)) {
type = "tag";
try {
RevTag origTag =
- revWalk.parseTag(ObjectId.fromString(event.refUpdate.oldRev));
+ revWalk.parseTag(ObjectId.fromString(refUpdate.oldRev));
SimpleDateFormat format = new SimpleDateFormat("EEE MMM d HH:mm:ss yyyy ZZZZ");
PersonIdent taggerIdent = origTag.getTaggerIdent();
String tagger =
@@ -117,7 +121,7 @@
log.warn("Unable to read original tag details", e);
}
}
- tag.setMessage(update + " " + type + " " + event.refUpdate.refName + fullMessage);
+ tag.setMessage(update + " " + type + " " + refUpdate.refName + fullMessage);
tag.setTag(backupRef);
ObjectInserter inserter = git.newObjectInserter();
@@ -152,7 +156,7 @@
// We need to parse the commit to ensure if it's a tag, we get the
// commit the tag points to!
input.revision = ObjectId.toString(
- revWalk.parseCommit(ObjectId.fromString(event.refUpdate.oldRev))
+ revWalk.parseCommit(ObjectId.fromString(refUpdate.oldRev))
.getId());
try {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/refprotection/RefUpdateListener.java b/src/main/java/com/googlesource/gerrit/plugins/refprotection/RefUpdateListener.java
index 0ca08f4..0188990 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/refprotection/RefUpdateListener.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/refprotection/RefUpdateListener.java
@@ -31,6 +31,7 @@
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.CurrentUser;
import com.google.gerrit.server.config.PluginConfigFactory;
+import com.google.gerrit.server.data.RefUpdateAttribute;
import com.google.gerrit.server.events.Event;
import com.google.gerrit.server.events.RefUpdatedEvent;
import com.google.gerrit.server.git.GitRepositoryManager;
@@ -117,7 +118,7 @@
* @return True if a new ref, otherwise False.
*/
private boolean isNewRef(RefUpdatedEvent event) {
- return event.refUpdate.oldRev.equals(ObjectId.zeroId().getName());
+ return event.refUpdate.get().oldRev.equals(ObjectId.zeroId().getName());
}
/**
@@ -127,10 +128,11 @@
* @return True if a ref deletion, otherwise False.
*/
private boolean isRefDeleted(RefUpdatedEvent event) {
- if (event.refUpdate.newRev.equals(ObjectId.zeroId().getName())) {
+ RefUpdateAttribute refUpdate = event.refUpdate.get();
+ if (refUpdate.newRev.equals(ObjectId.zeroId().getName())) {
log.info(String.format(
"Ref Deleted: project [%s] refname [%s] old object id [%s]",
- event.getProjectNameKey().toString(), event.getRefName(), event.refUpdate.oldRev));
+ event.getProjectNameKey().toString(), event.getRefName(), refUpdate.oldRev));
return true;
}
return false;
@@ -149,12 +151,11 @@
// attempting a check would cause a MissingObjectException.
return false;
}
+ RefUpdateAttribute refUpdate = event.refUpdate.get();
try (Repository repo = repoManager.openRepository(project.getNameKey())) {
try (RevWalk walk = new RevWalk(repo)) {
- RevCommit oldCommit =
- walk.parseCommit(repo.resolve(event.refUpdate.oldRev));
- RevCommit newCommit =
- walk.parseCommit(repo.resolve(event.refUpdate.newRev));
+ RevCommit oldCommit = walk.parseCommit(repo.resolve(refUpdate.oldRev));
+ RevCommit newCommit = walk.parseCommit(repo.resolve(refUpdate.newRev));
return !walk.isMergedInto(oldCommit, newCommit);
}
}