in src/main/java/com/googlesource/gerrit/plugins/findowners/OwnersDb.java [228:271]
void addPreferredEmails(Set<String> ownerEmails) {
List<String> owners = new ArrayList<>(ownerEmails);
owners.removeIf(o -> preferredEmails.get(o) != null);
if (!owners.isEmpty()) {
String[] ownerEmailsAsArray = new String[owners.size()];
owners.toArray(ownerEmailsAsArray);
Multimap<String, Account.Id> email2ids = null;
try {
email2ids = emails.getAccountsFor(ownerEmailsAsArray);
} catch (Exception e) {
logger.atSevere().withCause(e).log("accounts.byEmails failed");
logException(logs, "getAccountsFor:" + ownerEmailsAsArray[0], e);
}
for (String owner : ownerEmailsAsArray) {
String email = owner;
try {
if (email2ids == null) {
errors.add(owner);
} else {
Collection<Account.Id> ids = email2ids.get(owner);
if (ids == null || ids.size() != 1) {
errors.add(owner);
} else {
// Accounts may have no preferred email.
email =
accountCache
.get(ids.iterator().next())
.map(a -> a.account().preferredEmail())
.orElse(null);
}
}
} catch (Exception e) {
logger.atSevere().withCause(e).log("Fail to find preferred email of %s", owner);
errors.add(owner);
}
if (email == null) {
logger.atSevere().log("accountCache failed to find preferred email of %s", owner);
errors.add(owner);
email = owner;
}
preferredEmails.put(owner, email);
}
}
}