diff options
Diffstat (limited to 'java/com/google/gerrit/server/mail/send/ProjectWatch.java')
-rw-r--r-- | java/com/google/gerrit/server/mail/send/ProjectWatch.java | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/java/com/google/gerrit/server/mail/send/ProjectWatch.java b/java/com/google/gerrit/server/mail/send/ProjectWatch.java index d71033a25d..94a0e37094 100644 --- a/java/com/google/gerrit/server/mail/send/ProjectWatch.java +++ b/java/com/google/gerrit/server/mail/send/ProjectWatch.java @@ -267,8 +267,8 @@ public class ProjectWatch { return p == null || p.asMatchable().match(changeData); } - private static class WatcherChangeQueryBuilder extends ChangeQueryBuilder { - private WatcherChangeQueryBuilder(Arguments args) { + public static class WatcherChangeQueryBuilder extends ChangeQueryBuilder { + public WatcherChangeQueryBuilder(Arguments args) { super(args); } @@ -301,5 +301,16 @@ public class ProjectWatch { // predicates. return Predicate.or(predicates); } + + @Override + public Predicate<ChangeData> is(String value) throws QueryParseException { + if ("watched".equalsIgnoreCase(value)) { + // project watches cannot use "is:watched" as this would trigger an endless loop in + // IsWatchedByPredicate + throw new QueryParseException( + String.format("Operator 'is:watched' cannot be used in project watches.")); + } + return super.is(value); + } } } |