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) {