Merge branch 'stable-2.15'
* stable-2.15:
Add test for NPE in account index query
Change-Id: I9180a1c70417466bb7b2f1900baa99f36860482e
diff --git a/src/main/java/com/googlesource/gerrit/plugins/singleusergroup/SingleUserGroup.java b/src/main/java/com/googlesource/gerrit/plugins/singleusergroup/SingleUserGroup.java
index 6138171..33b649a 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/singleusergroup/SingleUserGroup.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/singleusergroup/SingleUserGroup.java
@@ -34,6 +34,7 @@
import com.google.gerrit.server.account.GroupBackend;
import com.google.gerrit.server.account.GroupMembership;
import com.google.gerrit.server.account.ListGroupMembership;
+import com.google.gerrit.server.account.externalids.ExternalId;
import com.google.gerrit.server.project.ProjectState;
import com.google.gerrit.server.query.account.AccountPredicates;
import com.google.gerrit.server.query.account.AccountQueryBuilder;
@@ -45,6 +46,7 @@
import com.google.inject.Singleton;
import java.util.Collection;
import java.util.Collections;
+import java.util.Optional;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -94,8 +96,8 @@
public GroupMembership membershipsOf(IdentifiedUser user) {
ImmutableList.Builder<AccountGroup.UUID> groups = ImmutableList.builder();
groups.add(uuid(user.getAccountId()));
- if (user.getUserName() != null) {
- groups.add(uuid(user.getUserName()));
+ if (user.getUserName().isPresent()) {
+ groups.add(uuid(user.getUserName().get()));
}
return new ListGroupMembership(groups.build());
}
@@ -103,17 +105,17 @@
@Override
public GroupDescription.Basic get(AccountGroup.UUID uuid) {
String ident = username(uuid);
- AccountState state;
+ Optional<AccountState> state;
if (ident.matches(ACCOUNT_ID_PATTERN)) {
state = accountCache.get(new Account.Id(Integer.parseInt(ident)));
- } else if (ident.matches(Account.USER_NAME_PATTERN)) {
+ } else if (ExternalId.isValidUsername(ident)) {
state = accountCache.getByUsername(ident);
} else {
return null;
}
- if (state != null) {
- final String name = nameOf(uuid, state);
- final String email = Strings.emptyToNull(state.getAccount().getPreferredEmail());
+ if (state.isPresent()) {
+ String name = nameOf(uuid, state.get());
+ String email = Strings.emptyToNull(state.get().getAccount().getPreferredEmail());
return new GroupDescription.Basic() {
@Override
public AccountGroup.UUID getGroupUUID() {
@@ -154,8 +156,8 @@
@Override
public GroupReference apply(AccountState state) {
AccountGroup.UUID uuid;
- if (state.getUserName() != null) {
- uuid = uuid(state.getUserName());
+ if (state.getUserName().isPresent()) {
+ uuid = uuid(state.getUserName().get());
} else {
uuid = uuid(state.getAccount().getId());
}
@@ -186,21 +188,21 @@
uuid.get().startsWith(UUID_PREFIX), "SingleUserGroup does not handle %s", uuid.get());
}
- private static String nameOf(AccountGroup.UUID uuid, AccountState account) {
+ private static String nameOf(AccountGroup.UUID uuid, AccountState accountState) {
StringBuilder buf = new StringBuilder();
- if (account.getAccount().getFullName() != null) {
- buf.append(account.getAccount().getFullName());
+ if (accountState.getAccount().getFullName() != null) {
+ buf.append(accountState.getAccount().getFullName());
}
- if (account.getUserName() != null) {
+ if (accountState.getUserName().isPresent()) {
if (buf.length() > 0) {
- buf.append(" (").append(account.getUserName()).append(")");
+ buf.append(" (").append(accountState.getUserName().get()).append(")");
} else {
- buf.append(account.getUserName());
+ buf.append(accountState.getUserName().get());
}
} else if (buf.length() > 0) {
- buf.append(" (").append(account.getAccount().getId().get()).append(")");
+ buf.append(" (").append(accountState.getAccount().getId().get()).append(")");
} else {
- buf.append(account.getAccount().getId().get());
+ buf.append(accountState.getAccount().getId().get());
}
String ident = username(uuid);