Fix user lookup to take into account contextUserId.
The previous commit broke lookups of contextUserId and failed unit
tests.
Change-Id: I6ce8d5213a6797195acc19ecf4f4f2ff154f9c38
diff --git a/src/main/java/com/googlesource/gerrit/plugins/automerger/AutomergeChangeAction.java b/src/main/java/com/googlesource/gerrit/plugins/automerger/AutomergeChangeAction.java
index 6b5769e..dad77dc 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/automerger/AutomergeChangeAction.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/automerger/AutomergeChangeAction.java
@@ -77,7 +77,7 @@
mdsMergeInput.changeNumber = change.getId().get();
mdsMergeInput.patchsetNumber = rev.getPatchSet().number();
mdsMergeInput.project = change.getProject().get();
- mdsMergeInput.topic = dsCreator.getOrSetTopic(change.getId().get(), change.getTopic(), user.get().getAccountId());
+ mdsMergeInput.topic = dsCreator.getOrSetTopic(change.getId().get(), change.getTopic(), config.getContextUserId());
mdsMergeInput.subject = change.getSubject();
mdsMergeInput.obsoleteRevision = revision;
mdsMergeInput.currentRevision = revision;
@@ -85,7 +85,7 @@
logger.atFine().log("Multiple downstream merge input: %s", mdsMergeInput.dsBranchMap);
try {
- dsCreator.createMergesAndHandleConflicts(mdsMergeInput, user.get().getAccountId());
+ dsCreator.createMergesAndHandleConflicts(mdsMergeInput, config.getContextUserId());
} catch (ConfigInvalidException e) {
throw new ResourceConflictException(
"Automerger configuration file is invalid: " + e.getMessage());
diff --git a/src/main/java/com/googlesource/gerrit/plugins/automerger/ConfigLoader.java b/src/main/java/com/googlesource/gerrit/plugins/automerger/ConfigLoader.java
index 4d6dd8b..5845f59 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/automerger/ConfigLoader.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/automerger/ConfigLoader.java
@@ -298,12 +298,20 @@
return getConfig().getBoolean("global", "disableMinAutomergeVote", false);
}
- public Account.Id getContextUserId() throws ConfigInvalidException {
+ public Account.Id getContextUserId(CurrentUser currentUser) throws ConfigInvalidException {
int contextUserId = getConfig().getInt("global", "contextUserId", -1);
if (contextUserId > 0) {
return Account.id(contextUserId);
}
- return user.get().getAccountId();
+ // Use the Guice injected user if one isn't provided.
+ if(currentUser == null)
+ return user.get().getAccountId();
+
+ return currentUser.getAccountId();
+ }
+
+ public Account.Id getContextUserId() throws ConfigInvalidException {
+ return getContextUserId(null);
}
/**
diff --git a/src/main/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreator.java b/src/main/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreator.java
index 8d56664..d46f242 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreator.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreator.java
@@ -115,7 +115,14 @@
CurrentUser user = this.user.get();
@SuppressWarnings("unused")
Future<?> ignored =
- executorService.submit(() -> onChangeAbandonedImpl(change, event.getRevision()._number, user.getAccountId()));
+ executorService.submit(() -> {
+ try {
+ onChangeAbandonedImpl(change, event.getRevision()._number, config.getContextUserId(user));
+ } catch (ConfigInvalidException | UnsupportedOperationException e) {
+ logger.atSevere().withCause(e).log(
+ "Automerger plugin failed onChangeAbandoned for %s", change.id);
+ }
+ });
}
private void onChangeAbandonedImpl(ChangeInfo change, int revisionNumber, Account.Id accountId) {
@@ -141,7 +148,14 @@
String oldTopic = event.getOldTopic();
CurrentUser user = this.user.get();
@SuppressWarnings("unused")
- Future<?> ignored = executorService.submit(() -> onTopicEditedImpl(change, oldTopic, user.getAccountId()));
+ Future<?> ignored = executorService.submit(() -> {
+ try {
+ onTopicEditedImpl(change, oldTopic, config.getContextUserId(user));
+ } catch (ConfigInvalidException | UnsupportedOperationException e) {
+ logger.atSevere().withCause(e).log(
+ "Automerger plugin failed onTopicEdited for %s", change.id);
+ }
+ });
}
private void onTopicEditedImpl(ChangeInfo eventChange, String oldTopic, Account.Id accountId) {
@@ -225,7 +239,14 @@
RevisionInfo eventRevision = deepCopy(event.getRevision());
CurrentUser user = this.user.get();
@SuppressWarnings("unused")
- Future<?> ignored = executorService.submit(() -> onCommentAddedImpl(change, eventRevision, user.getAccountId()));
+ Future<?> ignored = executorService.submit(() -> {
+ try {
+ onCommentAddedImpl(change, eventRevision, config.getContextUserId(user));
+ } catch (ConfigInvalidException | UnsupportedOperationException e) {
+ logger.atSevere().withCause(e).log(
+ "Automerger plugin failed onCommentAdded for %s", change.id);
+ }
+ });
}
private void onCommentAddedImpl(ChangeInfo change, RevisionInfo eventRevision, Account.Id accountId) {
@@ -289,7 +310,14 @@
RevisionInfo revision = deepCopy(event.getRevision());
CurrentUser user = this.user.get();
@SuppressWarnings("unused")
- Future<?> ignored = executorService.submit(() -> onChangeRestoredImpl(change, revision, user.getAccountId()));
+ Future<?> ignored = executorService.submit(() -> {
+ try {
+ onChangeRestoredImpl(change, revision, config.getContextUserId(user));
+ } catch (ConfigInvalidException | UnsupportedOperationException e) {
+ logger.atSevere().withCause(e).log(
+ "Automerger plugin failed onChangeRestored for %s", change.id);
+ }
+ });
}
private void onChangeRestoredImpl(ChangeInfo change, RevisionInfo revision, Account.Id accountId) {
@@ -315,8 +343,16 @@
ChangeInfo change = deepCopy(event.getChange());
RevisionInfo revision = deepCopy(event.getRevision());
CurrentUser user = this.user.get();
+
@SuppressWarnings("unused")
- Future<?> ignored = executorService.submit(() -> onRevisionCreatedImpl(change, revision, user.getAccountId()));
+ Future<?> ignored = executorService.submit(() -> {
+ try {
+ onRevisionCreatedImpl(change, revision, config.getContextUserId(user));
+ } catch (ConfigInvalidException | UnsupportedOperationException e) {
+ logger.atSevere().withCause(e).log(
+ "Automerger plugin failed onRevisionCreated for %s", change.id);
+ }
+ });
}
public void onRevisionCreatedImpl(ChangeInfo change, RevisionInfo revision, Account.Id accountId) {