ChangeQueryBuilder: Fix root directory case for Elasticsearch

Bug: Issue 10497
Change-Id: Icb46f214370949cc59752e7a32eee6320c1586fe
This commit is contained in:
Marco Miller
2019-05-12 11:26:08 -04:00
parent ce6588df21
commit 58ff75b3c6

View File

@@ -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 {