diff options
Diffstat (limited to 'gerrit-server/src/main/java/com/google/gerrit/server/query/RewritePredicate.java')
-rw-r--r-- | gerrit-server/src/main/java/com/google/gerrit/server/query/RewritePredicate.java | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/query/RewritePredicate.java b/gerrit-server/src/main/java/com/google/gerrit/server/query/RewritePredicate.java index c0a00ca991..35fbc1c203 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/query/RewritePredicate.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/query/RewritePredicate.java @@ -20,10 +20,12 @@ import java.util.Collections; import java.util.List; public abstract class RewritePredicate<T> extends Predicate<T> { - private String name = getClass().getName(); + private boolean init; + private String name = getClass().getSimpleName(); private List<Predicate<T>> children = Collections.emptyList(); - void init(String name, Predicate<T>[] args) { + protected void init(String name, Predicate<T>... args) { + this.init = true; this.name = name; this.children = Arrays.asList(args); } @@ -33,10 +35,18 @@ public abstract class RewritePredicate<T> extends Predicate<T> { return this; } + @SuppressWarnings("unchecked") @Override public boolean equals(Object other) { - return getClass() == other.getClass() - && children.equals(((RewritePredicate) other).children); + if (other instanceof RewritePredicate) { + RewritePredicate that = (RewritePredicate<T>) other; + if (this.init && that.init) { + return this.getClass() == that.getClass() + && this.name.equals(that.name) + && this.children.equals(that.children); + } + } + return this == other; } @Override |