summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarco Miller <marco.miller@ericsson.com>2019-05-12 11:26:08 -0400
committerMarco Miller <marco.miller@ericsson.com>2019-05-12 11:26:11 -0400
commit58ff75b3c63b6105cc13419dce8288f08f9e8a40 (patch)
tree65fe9c881b8cf99dba1cbefa2b6ad32ac712d285
parentce6588df2106391a5f07ab848d53adc99d969850 (diff)
ChangeQueryBuilder: Fix root directory case for Elasticsearch
Bug: Issue 10497 Change-Id: Icb46f214370949cc59752e7a32eee6320c1586fe
-rw-r--r--java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java11
1 files changed, 10 insertions, 1 deletions
diff --git a/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java b/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java
index 0227153f8a..c6a65ecc45 100644
--- a/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java
+++ b/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java
@@ -775,11 +775,20 @@ public class ChangeQueryBuilder extends QueryBuilder<ChangeData, ChangeQueryBuil
return new RegexDirectoryPredicate(directory);
}
- return new DirectoryPredicate(directory);
+ DirectoryPredicate rootPredicate = new DirectoryPredicate(directory);
+ if (isRootAndRecursive(directory)) {
+ RegexDirectoryPredicate recursivePredicate = new RegexDirectoryPredicate("^.*");
+ return Predicate.or(rootPredicate, recursivePredicate);
+ }
+ return rootPredicate;
}
throw new QueryParseException("'directory' operator is not supported by change index version");
}
+ private static boolean isRootAndRecursive(String directory) {
+ return directory.isEmpty() || directory.equals("/");
+ }
+
@Operator
public Predicate<ChangeData> label(String name)
throws QueryParseException, IOException, ConfigInvalidException {