Adapt plugin to new GroupMembers API
Change-Id: Ia322448778bfa50b391a3724c63b9cb59d781569
diff --git a/src/main/java/com/googlesource/gerrit/plugins/reviewers/ChangeEventListener.java b/src/main/java/com/googlesource/gerrit/plugins/reviewers/ChangeEventListener.java
index 47916a0..d4ca423 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/reviewers/ChangeEventListener.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/reviewers/ChangeEventListener.java
@@ -21,7 +21,6 @@
import com.google.common.collect.Sets;
import com.google.gerrit.common.errors.NoSuchGroupException;
import com.google.gerrit.extensions.annotations.PluginName;
-import com.google.gerrit.extensions.common.AccountInfo;
import com.google.gerrit.extensions.common.ChangeInfo;
import com.google.gerrit.extensions.events.RevisionCreatedListener;
import com.google.gerrit.extensions.restapi.UnprocessableEntityException;
@@ -65,7 +64,7 @@
private final AccountResolver accountResolver;
private final Provider<GroupsCollection> groupsCollection;
- private final GroupMembers.Factory groupMembersFactory;
+ private final GroupMembers groupMembers;
private final DefaultReviewers.Factory reviewersFactory;
private final GitRepositoryManager repoManager;
private final WorkQueue workQueue;
@@ -81,7 +80,7 @@
ChangeEventListener(
final AccountResolver accountResolver,
final Provider<GroupsCollection> groupsCollection,
- final GroupMembers.Factory groupMembersFactory,
+ final GroupMembers groupMembers,
final DefaultReviewers.Factory reviewersFactory,
final GitRepositoryManager repoManager,
final WorkQueue workQueue,
@@ -96,7 +95,7 @@
@PluginName String pluginName) {
this.accountResolver = accountResolver;
this.groupsCollection = groupsCollection;
- this.groupMembersFactory = groupMembersFactory;
+ this.groupMembers = groupMembers;
this.reviewersFactory = reviewersFactory;
this.repoManager = repoManager;
this.workQueue = workQueue;
@@ -112,10 +111,10 @@
@Override
public void onRevisionCreated(RevisionCreatedListener.Event event) {
ChangeInfo c = event.getChange();
- onEvent(new Project.NameKey(c.project), c._number, event.getWho());
+ onEvent(new Project.NameKey(c.project), c._number);
}
- private void onEvent(Project.NameKey projectName, int changeNumber, AccountInfo uploader) {
+ private void onEvent(Project.NameKey projectName, int changeNumber) {
// TODO(davido): we have to cache per project configuration
ReviewersConfig config = configFactory.create(projectName);
List<ReviewerFilterSection> sections = config.getReviewerFilterSections();
@@ -135,8 +134,7 @@
}
final Change change = changeData.change();
- final Runnable task =
- reviewersFactory.create(change, toAccounts(reviewers, projectName, uploader));
+ final Runnable task = reviewersFactory.create(change, toAccounts(reviewers, projectName));
workQueue
.getDefaultQueue()
@@ -223,9 +221,8 @@
return filterPredicate.asMatchable().match(changeData);
}
- private Set<Account> toAccounts(Set<String> in, Project.NameKey p, AccountInfo uploader) {
+ private Set<Account> toAccounts(Set<String> in, Project.NameKey p) {
Set<Account> reviewers = Sets.newHashSetWithExpectedSize(in.size());
- GroupMembers groupMembers = null;
for (String r : in) {
try {
Account account = accountResolver.find(r);
@@ -239,41 +236,15 @@
log.error("Failed to resolve account " + r, e);
continue;
}
- if (groupMembers == null) {
- // email is not unique to one account, try to locate the account using
- // "Full name <email>" to increase chance of finding only one.
- String uploaderNameEmail = String.format("%s <%s>", uploader.name, uploader.email);
- try {
- Account uploaderAccount = accountResolver.findByNameOrEmail(uploaderNameEmail);
- if (uploaderAccount != null) {
- groupMembers =
- groupMembersFactory.create(identifiedUserFactory.create(uploaderAccount.getId()));
- }
- } catch (OrmException | IOException e) {
- log.warn(
- String.format(
- "Failed to list accounts for group %s, cannot retrieve uploader account %s",
- r, uploaderNameEmail),
- e);
- }
-
- try {
- if (groupMembers != null) {
- reviewers.addAll(
- groupMembers.listAccounts(groupsCollection.get().parse(r).getGroupUUID(), p));
- } else {
- log.warn(
- String.format(
- "Failed to list accounts for group %s; cannot retrieve uploader account for %s",
- r, uploader.email));
- }
- } catch (UnprocessableEntityException | NoSuchGroupException e) {
- log.warn(String.format("Reviewer %s is neither an account nor a group", r));
- } catch (NoSuchProjectException e) {
- log.warn(String.format("Failed to list accounts for group %s and project %s", r, p));
- } catch (IOException | OrmException e) {
- log.warn(String.format("Failed to list accounts for group %s", r), e);
- }
+ try {
+ reviewers.addAll(
+ groupMembers.listAccounts(groupsCollection.get().parse(r).getGroupUUID(), p));
+ } catch (UnprocessableEntityException | NoSuchGroupException e) {
+ log.warn(String.format("Reviewer %s is neither an account nor a group", r));
+ } catch (NoSuchProjectException e) {
+ log.warn(String.format("Failed to list accounts for group %s and project %s", r, p));
+ } catch (IOException | OrmException e) {
+ log.warn(String.format("Failed to list accounts for group %s", r), e);
}
}
return reviewers;