DbGroupMemberAuditListener: Use AccountCache#maybeGet instead of AccountCache#get

AccountCache#get returns an empty AccountState to represent a missing
account and the user name of the empty AccountState is always null.
Handle the missing account case explicitly instead of using an empty
AccountState.

Change-Id: I50d42d11352ea441d547dc486fdb1820a5f03ece
Signed-off-by: Edwin Kempin <ekempin@google.com>
This commit is contained in:
Edwin Kempin
2018-01-30 11:48:50 +01:00
parent 2d94db95a5
commit 4405a7bf05

View File

@@ -25,6 +25,7 @@ import com.google.gerrit.reviewdb.client.AccountGroupMember;
import com.google.gerrit.reviewdb.client.AccountGroupMemberAudit; import com.google.gerrit.reviewdb.client.AccountGroupMemberAudit;
import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.account.AccountCache; import com.google.gerrit.server.account.AccountCache;
import com.google.gerrit.server.account.AccountState;
import com.google.gerrit.server.account.GroupCache; import com.google.gerrit.server.account.GroupCache;
import com.google.gerrit.server.account.UniversalGroupBackend; import com.google.gerrit.server.account.UniversalGroupBackend;
import com.google.gerrit.server.audit.GroupMemberAuditListener; import com.google.gerrit.server.audit.GroupMemberAuditListener;
@@ -36,6 +37,7 @@ import java.text.MessageFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Optional;
import org.slf4j.Logger; import org.slf4j.Logger;
class DbGroupMemberAuditListener implements GroupMemberAuditListener { class DbGroupMemberAuditListener implements GroupMemberAuditListener {
@@ -156,7 +158,7 @@ class DbGroupMemberAuditListener implements GroupMemberAuditListener {
List<String> descriptions = new ArrayList<>(); List<String> descriptions = new ArrayList<>();
for (AccountGroupMember m : values) { for (AccountGroupMember m : values) {
Account.Id accountId = m.getAccountId(); Account.Id accountId = m.getAccountId();
String userName = accountCache.get(accountId).getUserName().orElse(null); String userName = getUserName(accountId).orElse(null);
AccountGroup.Id groupId = m.getAccountGroupId(); AccountGroup.Id groupId = m.getAccountGroupId();
String groupName = getGroupName(groupId); String groupName = getGroupName(groupId);
@@ -193,9 +195,13 @@ class DbGroupMemberAuditListener implements GroupMemberAuditListener {
message.append(" "); message.append(" ");
message.append(me); message.append(me);
message.append("/"); message.append("/");
message.append(accountCache.get(me).getUserName().orElse(null)); message.append(getUserName(me).orElse(null));
message.append(": "); message.append(": ");
message.append(Joiner.on("; ").join(values)); message.append(Joiner.on("; ").join(values));
log.error(message.toString(), e); log.error(message.toString(), e);
} }
private Optional<String> getUserName(Account.Id accountId) {
return accountCache.maybeGet(accountId).map(AccountState::getUserName).orElse(Optional.empty());
}
} }