diff options
author | Marco Miller <marco.miller@ericsson.com> | 2019-05-12 11:26:08 -0400 |
---|---|---|
committer | Marco Miller <marco.miller@ericsson.com> | 2019-05-12 11:26:11 -0400 |
commit | 58ff75b3c63b6105cc13419dce8288f08f9e8a40 (patch) | |
tree | 65fe9c881b8cf99dba1cbefa2b6ad32ac712d285 | |
parent | ce6588df2106391a5f07ab848d53adc99d969850 (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.java | 11 |
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 { |