diff options
Diffstat (limited to 'gerrit-server/src/main')
6 files changed, 50 insertions, 12 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/account/GroupBackend.java b/gerrit-server/src/main/java/com/google/gerrit/server/account/GroupBackend.java index b4e770fdbe..34db9672c6 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/account/GroupBackend.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/account/GroupBackend.java @@ -19,6 +19,7 @@ import com.google.gerrit.common.data.GroupReference; import com.google.gerrit.extensions.annotations.ExtensionPoint; import com.google.gerrit.reviewdb.client.AccountGroup; import com.google.gerrit.server.IdentifiedUser; +import com.google.gerrit.server.project.ProjectControl; import java.util.Collection; @@ -44,7 +45,9 @@ public interface GroupBackend { GroupDescription.Basic get(AccountGroup.UUID uuid); /** @return suggestions for the group name sorted by name. */ - Collection<GroupReference> suggest(String name); + Collection<GroupReference> suggest( + String name, + @Nullable ProjectControl project); /** @return the group membership checker for the backend. */ GroupMembership membershipsOf(IdentifiedUser user); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/account/GroupBackends.java b/gerrit-server/src/main/java/com/google/gerrit/server/account/GroupBackends.java index cdbb0e49bc..f7e06344d2 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/account/GroupBackends.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/account/GroupBackends.java @@ -16,6 +16,8 @@ package com.google.gerrit.server.account; import com.google.common.collect.Iterables; import com.google.gerrit.common.data.GroupReference; +import com.google.gerrit.reviewdb.client.Project; +import com.google.gerrit.server.project.ProjectControl; import java.util.Collection; import java.util.Comparator; @@ -36,7 +38,7 @@ public class GroupBackends { }; /** - * Runs {@link GroupBackend#suggest(String)} and filters the result to return + * Runs {@link GroupBackend#suggest(String, Project)} and filters the result to return * the best suggestion, or null if one does not exist. * * @param groupBackend the group backend @@ -44,9 +46,23 @@ public class GroupBackends { * @return the best single GroupReference suggestion */ @Nullable - public static GroupReference findBestSuggestion( - GroupBackend groupBackend, String name) { - Collection<GroupReference> refs = groupBackend.suggest(name); + public static GroupReference findBestSuggestion(GroupBackend groupBackend, + String name) { + return findBestSuggestion(groupBackend, name, null); + } + /** + * Runs {@link GroupBackend#suggest(String, Project)} and filters the result to return + * the best suggestion, or null if one does not exist. + * + * @param groupBackend the group backend + * @param name the name for which to suggest groups + * @param project the project for which to suggest groups + * @return the best single GroupReference suggestion + */ + @Nullable + public static GroupReference findBestSuggestion(GroupBackend groupBackend, + String name, @Nullable ProjectControl project) { + Collection<GroupReference> refs = groupBackend.suggest(name, project); if (refs.size() == 1) { return Iterables.getOnlyElement(refs); } @@ -60,7 +76,7 @@ public class GroupBackends { } /** - * Runs {@link GroupBackend#suggest(String)} and filters the result to return + * Runs {@link GroupBackend#suggest(String, Project)} and filters the result to return * the exact suggestion, or null if one does not exist. * * @param groupBackend the group backend @@ -70,7 +86,22 @@ public class GroupBackends { @Nullable public static GroupReference findExactSuggestion( GroupBackend groupBackend, String name) { - Collection<GroupReference> refs = groupBackend.suggest(name); + return findExactSuggestion(groupBackend, name, null); + } + + /** + * Runs {@link GroupBackend#suggest(String, Project)} and filters the result to return + * the exact suggestion, or null if one does not exist. + * + * @param groupBackend the group backend + * @param name the name for which to suggest groups + * @param project the project for which to suggest groups + * @return the exact single GroupReference suggestion + */ + @Nullable + public static GroupReference findExactSuggestion( + GroupBackend groupBackend, String name, ProjectControl project) { + Collection<GroupReference> refs = groupBackend.suggest(name, project); for (GroupReference ref : refs) { if (isExactSuggestion(ref, name)) { return ref; diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/account/InternalGroupBackend.java b/gerrit-server/src/main/java/com/google/gerrit/server/account/InternalGroupBackend.java index d06db4d336..a70f9429a2 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/account/InternalGroupBackend.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/account/InternalGroupBackend.java @@ -23,6 +23,7 @@ import com.google.gerrit.common.data.GroupDescriptions; import com.google.gerrit.common.data.GroupReference; import com.google.gerrit.reviewdb.client.AccountGroup; import com.google.gerrit.server.IdentifiedUser; +import com.google.gerrit.server.project.ProjectControl; import com.google.inject.Inject; import com.google.inject.Singleton; @@ -71,7 +72,8 @@ public class InternalGroupBackend implements GroupBackend { } @Override - public Collection<GroupReference> suggest(final String name) { + public Collection<GroupReference> suggest(final String name, + final ProjectControl project) { Iterable<AccountGroup> filtered = Iterables.filter(groupCache.all(), new Predicate<AccountGroup>() { @Override diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/account/UniversalGroupBackend.java b/gerrit-server/src/main/java/com/google/gerrit/server/account/UniversalGroupBackend.java index d9c9257296..046dfa5a59 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/account/UniversalGroupBackend.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/account/UniversalGroupBackend.java @@ -26,6 +26,7 @@ import com.google.gerrit.common.data.GroupReference; import com.google.gerrit.extensions.registration.DynamicSet; import com.google.gerrit.reviewdb.client.AccountGroup; import com.google.gerrit.server.IdentifiedUser; +import com.google.gerrit.server.project.ProjectControl; import com.google.inject.Inject; import com.google.inject.Singleton; @@ -82,10 +83,10 @@ public class UniversalGroupBackend implements GroupBackend { } @Override - public Collection<GroupReference> suggest(String name) { + public Collection<GroupReference> suggest(String name, ProjectControl project) { Set<GroupReference> groups = Sets.newTreeSet(GROUP_REF_NAME_COMPARATOR); for (GroupBackend g : backends) { - groups.addAll(g.suggest(name)); + groups.addAll(g.suggest(name, project)); } return groups; } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/auth/ldap/LdapGroupBackend.java b/gerrit-server/src/main/java/com/google/gerrit/server/auth/ldap/LdapGroupBackend.java index 2cf372b493..97a03098bb 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/auth/ldap/LdapGroupBackend.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/auth/ldap/LdapGroupBackend.java @@ -33,6 +33,7 @@ import com.google.gerrit.server.account.GroupMembership; import com.google.gerrit.server.account.ListGroupMembership; import com.google.gerrit.server.auth.ldap.Helper.LdapSchema; import com.google.gerrit.server.project.ProjectCache; +import com.google.gerrit.server.project.ProjectControl; import com.google.inject.Inject; import com.google.inject.Provider; import com.google.inject.name.Named; @@ -164,7 +165,7 @@ public class LdapGroupBackend implements GroupBackend { } @Override - public Collection<GroupReference> suggest(String name) { + public Collection<GroupReference> suggest(String name, ProjectControl project) { AccountGroup.UUID uuid = new AccountGroup.UUID(name); if (isLdapUUID(uuid)) { GroupDescription.Basic g = get(uuid); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java index 7bbb073a6c..e74172e209 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java @@ -367,7 +367,7 @@ public class ChangeQueryBuilder extends QueryBuilder<ChangeData> { // If its not an account, maybe its a group? // - Collection<GroupReference> suggestions = args.groupBackend.suggest(who); + Collection<GroupReference> suggestions = args.groupBackend.suggest(who, null); if (!suggestions.isEmpty()) { HashSet<AccountGroup.UUID> ids = new HashSet<AccountGroup.UUID>(); for (GroupReference ref : suggestions) { |