in owners-common/src/main/java/com/googlesource/gerrit/owners/common/AccountsImpl.java [102:139]
private Set<Account.Id> findUserOrEmail(String nameOrEmail) {
try (ManualRequestContext ctx = oneOffRequestContext.open()) {
Set<Id> accountIds = resolver.resolve(nameOrEmail).asIdSet();
if (accountIds.isEmpty()) {
log.warn("User '{}' does not resolve to any account.", nameOrEmail);
return accountIds;
}
Set<Id> activeAccountIds =
accountIds.stream().filter(this::isActive).collect(Collectors.toSet());
if (activeAccountIds.isEmpty()) {
log.warn(
"User '{}' resolves to {} accounts {}, but none of them are active",
nameOrEmail,
accountIds.size(),
accountIds);
return activeAccountIds;
}
Set<Id> fulllyMatchedAccountIds =
activeAccountIds.stream()
.filter(id -> isFullMatch(id, nameOrEmail))
.collect(Collectors.toSet());
if (fulllyMatchedAccountIds.isEmpty()) {
log.warn(
"User '{}' resolves to {} accounts {}, but does not correspond to any them",
nameOrEmail,
accountIds.size(),
accountIds);
return fulllyMatchedAccountIds;
}
return accountIds;
} catch (IOException | ConfigInvalidException e) {
log.error("Error trying to resolve user " + nameOrEmail, e);
return Collections.emptySet();
}
}