summaryrefslogtreecommitdiffstats
path: root/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java
diff options
context:
space:
mode:
Diffstat (limited to 'gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java')
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java76
1 files changed, 39 insertions, 37 deletions
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 577c5af92a..4d8e806bbe 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
@@ -15,26 +15,27 @@
package com.google.gerrit.server.query.change;
import com.google.gerrit.common.data.ApprovalTypes;
-import com.google.gerrit.reviewdb.Account;
-import com.google.gerrit.reviewdb.AccountGroup;
-import com.google.gerrit.reviewdb.Change;
-import com.google.gerrit.reviewdb.Project;
-import com.google.gerrit.reviewdb.RevId;
-import com.google.gerrit.reviewdb.ReviewDb;
+import com.google.gerrit.reviewdb.client.Account;
+import com.google.gerrit.reviewdb.client.AccountGroup;
+import com.google.gerrit.reviewdb.client.Change;
+import com.google.gerrit.reviewdb.client.Project;
+import com.google.gerrit.reviewdb.client.RevId;
+import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.CurrentUser;
import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.account.AccountResolver;
+import com.google.gerrit.server.account.CapabilityControl;
import com.google.gerrit.server.account.GroupCache;
-import com.google.gerrit.server.config.AuthConfig;
-import com.google.gerrit.server.config.WildProjectName;
+import com.google.gerrit.server.config.AllProjectsName;
import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.gerrit.server.patch.PatchListCache;
import com.google.gerrit.server.project.ChangeControl;
+import com.google.gerrit.server.project.ProjectCache;
import com.google.gerrit.server.query.IntPredicate;
import com.google.gerrit.server.query.Predicate;
import com.google.gerrit.server.query.QueryBuilder;
import com.google.gerrit.server.query.QueryParseException;
-import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.assistedinject.Assisted;
@@ -98,39 +99,43 @@ public class ChangeQueryBuilder extends QueryBuilder<ChangeData> {
final Provider<ReviewDb> dbProvider;
final Provider<ChangeQueryRewriter> rewriter;
final IdentifiedUser.GenericFactory userFactory;
+ final CapabilityControl.Factory capabilityControlFactory;
final ChangeControl.Factory changeControlFactory;
final ChangeControl.GenericFactory changeControlGenericFactory;
final AccountResolver accountResolver;
final GroupCache groupCache;
- final AuthConfig authConfig;
final ApprovalTypes approvalTypes;
- final Project.NameKey wildProjectName;
+ final AllProjectsName allProjectsName;
final PatchListCache patchListCache;
final GitRepositoryManager repoManager;
+ final ProjectCache projectCache;
@Inject
Arguments(Provider<ReviewDb> dbProvider,
Provider<ChangeQueryRewriter> rewriter,
IdentifiedUser.GenericFactory userFactory,
+ CapabilityControl.Factory capabilityControlFactory,
ChangeControl.Factory changeControlFactory,
ChangeControl.GenericFactory changeControlGenericFactory,
AccountResolver accountResolver, GroupCache groupCache,
- AuthConfig authConfig, ApprovalTypes approvalTypes,
- @WildProjectName Project.NameKey wildProjectName,
+ ApprovalTypes approvalTypes,
+ AllProjectsName allProjectsName,
PatchListCache patchListCache,
- GitRepositoryManager repoManager) {
+ GitRepositoryManager repoManager,
+ ProjectCache projectCache) {
this.dbProvider = dbProvider;
this.rewriter = rewriter;
this.userFactory = userFactory;
+ this.capabilityControlFactory = capabilityControlFactory;
this.changeControlFactory = changeControlFactory;
this.changeControlGenericFactory = changeControlGenericFactory;
this.accountResolver = accountResolver;
this.groupCache = groupCache;
- this.authConfig = authConfig;
this.approvalTypes = approvalTypes;
- this.wildProjectName = wildProjectName;
+ this.allProjectsName = allProjectsName;
this.patchListCache = patchListCache;
this.repoManager = repoManager;
+ this.projectCache = projectCache;
}
}
@@ -340,17 +345,18 @@ public class ChangeQueryBuilder extends QueryBuilder<ChangeData> {
//
AccountGroup g = args.groupCache.get(new AccountGroup.NameKey(who));
if (g != null) {
- return visibleto(new SingleGroupUser(args.authConfig, g.getId()));
+ return visibleto(new SingleGroupUser(args.capabilityControlFactory,
+ g.getGroupUUID()));
}
Collection<AccountGroup> matches =
args.groupCache.get(new AccountGroup.ExternalNameKey(who));
if (matches != null && !matches.isEmpty()) {
- HashSet<AccountGroup.Id> ids = new HashSet<AccountGroup.Id>();
+ HashSet<AccountGroup.UUID> ids = new HashSet<AccountGroup.UUID>();
for (AccountGroup group : matches) {
- ids.add(group.getId());
+ ids.add(group.getGroupUUID());
}
- return visibleto(new SingleGroupUser(args.authConfig, ids));
+ return visibleto(new SingleGroupUser(args.capabilityControlFactory, ids));
}
throw error("No user or group matches \"" + who + "\".");
@@ -391,7 +397,7 @@ public class ChangeQueryBuilder extends QueryBuilder<ChangeData> {
if (g == null) {
throw error("Group " + group + " not found");
}
- return new OwnerinPredicate(args.dbProvider, args.userFactory, g.getId());
+ return new OwnerinPredicate(args.dbProvider, args.userFactory, g.getGroupUUID());
}
@Operator
@@ -419,7 +425,7 @@ public class ChangeQueryBuilder extends QueryBuilder<ChangeData> {
if (g == null) {
throw error("Group " + group + " not found");
}
- return new ReviewerinPredicate(args.dbProvider, args.userFactory, g.getId());
+ return new ReviewerinPredicate(args.dbProvider, args.userFactory, g.getGroupUUID());
}
@Operator
@@ -508,23 +514,19 @@ public class ChangeQueryBuilder extends QueryBuilder<ChangeData> {
// Try to match a project name by substring query.
final List<ProjectPredicate> predicate =
new ArrayList<ProjectPredicate>();
- try {
- for (final Project p : args.dbProvider.get().projects().all()) {
- if (p.getName().toLowerCase().contains(query.toLowerCase())) {
- predicate.add(new ProjectPredicate(args.dbProvider, p.getName()));
- }
+ for (Project.NameKey name : args.projectCache.all()) {
+ if (name.get().toLowerCase().contains(query.toLowerCase())) {
+ predicate.add(new ProjectPredicate(args.dbProvider, name.get()));
}
+ }
- // If two or more projects contains "query" as substring create an
- // OrPredicate holding predicates for all these projects, otherwise if
- // only one contains that, return only that one predicate by itself.
- if (predicate.size() == 1) {
- return predicate.get(0);
- } else if (predicate.size() > 1) {
- return Predicate.or(predicate);
- }
- } catch (OrmException e) {
- throw error("Cannot lookup project.", e);
+ // If two or more projects contains "query" as substring create an
+ // OrPredicate holding predicates for all these projects, otherwise if
+ // only one contains that, return only that one predicate by itself.
+ if (predicate.size() == 1) {
+ return predicate.get(0);
+ } else if (predicate.size() > 1) {
+ return Predicate.or(predicate);
}
throw error("Unsupported query:" + query);