Avoid RevFilter.ALL or TreeFilter.ALL in AND/OR combination
commitdec665dd29232700c399ae70f980e41cb81b1ebd
authorShawn O. Pearce <spearce@spearce.org>
Thu, 24 Apr 2008 03:31:26 +0000 (23 23:31 -0400)
committerShawn O. Pearce <spearce@spearce.org>
Sun, 11 May 2008 05:16:30 +0000 (11 01:16 -0400)
treecec9e2a62658e541ddf55dd81ae9e72871d8c4cc
parent03a5187d6e27cde3026c16abda0d311ed3c7e5d0
Avoid RevFilter.ALL or TreeFilter.ALL in AND/OR combination

If the caller has asked us to join an ALL filter into a boolean
AND filter we actually just need to return the filter given for
the other side of the AND condition, as the ALL filter is always
going to yield a true result.

If the caller has asked us to join an ALL filter into a boolean OR
filter we actually can just return the ALL filter, as we may never
even invoke the other side.  This does slightly break with the order
of operations (especially if the ALL is the right side of the OR
operator) but RevFilters and TreeFilters shouldn't (in general)
have a side-effect as a result of calling their include method.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
org.spearce.jgit/src/org/spearce/jgit/revwalk/filter/AndRevFilter.java
org.spearce.jgit/src/org/spearce/jgit/revwalk/filter/OrRevFilter.java
org.spearce.jgit/src/org/spearce/jgit/treewalk/filter/AndTreeFilter.java
org.spearce.jgit/src/org/spearce/jgit/treewalk/filter/OrTreeFilter.java