summaryrefslogtreecommitdiffstats
path: root/java/com/google/gerrit/server/mail/send/ProjectWatch.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/google/gerrit/server/mail/send/ProjectWatch.java')
-rw-r--r--java/com/google/gerrit/server/mail/send/ProjectWatch.java15
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);
+ }
}
}