PR: COLLECTIONS-360 Prevent an NPE in FilterListIterator.next() and FilterListIterator.previous()
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/collections/branches/COLLECTIONS_3_2_BRANCH@1076034 13f79535-47bb-0310-9956-ffa450edef68 Project: http://git-wip-us.apache.org/repos/asf/commons-collections/repo Commit: http://git-wip-us.apache.org/repos/asf/commons-collections/commit/f4a6f213 Tree: http://git-wip-us.apache.org/repos/asf/commons-collections/tree/f4a6f213 Diff: http://git-wip-us.apache.org/repos/asf/commons-collections/diff/f4a6f213 Branch: refs/heads/COLLECTIONS_3_2_BRANCH Commit: f4a6f21360811bde57d9abfdae928f522b803897 Parents: dabecd2 Author: Jochen Wiedmann <joc...@apache.org> Authored: Tue Mar 1 22:10:10 2011 +0000 Committer: Jochen Wiedmann <joc...@apache.org> Committed: Tue Mar 1 22:10:10 2011 +0000 ---------------------------------------------------------------------- pom.xml | 3 +++ .../collections/iterators/FilterListIterator.java | 7 +++++++ .../iterators/TestFilterListIterator.java | 15 +++++++++++++++ 3 files changed, 25 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-collections/blob/f4a6f213/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index 4a71e6a..5c4a6d8 100644 --- a/pom.xml +++ b/pom.xml @@ -364,6 +364,9 @@ <name>Serhiy Yevtushenko</name> </contributor> <contributor> + <name>Sai Zhang</name> + </contributor> + <contributor> <name>Jason van Zyl</name> </contributor> </contributors> http://git-wip-us.apache.org/repos/asf/commons-collections/blob/f4a6f213/src/java/org/apache/commons/collections/iterators/FilterListIterator.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/commons/collections/iterators/FilterListIterator.java b/src/java/org/apache/commons/collections/iterators/FilterListIterator.java index 26b29e1..5e36118 100644 --- a/src/java/org/apache/commons/collections/iterators/FilterListIterator.java +++ b/src/java/org/apache/commons/collections/iterators/FilterListIterator.java @@ -236,6 +236,10 @@ public class FilterListIterator implements ListIterator { } } + if (iterator == null) { + return false; + } + while(iterator.hasNext()) { Object object = iterator.next(); if(predicate.evaluate(object)) { @@ -266,6 +270,9 @@ public class FilterListIterator implements ListIterator { } } + if (iterator == null) { + return false; + } while(iterator.hasPrevious()) { Object object = iterator.previous(); if(predicate.evaluate(object)) { http://git-wip-us.apache.org/repos/asf/commons-collections/blob/f4a6f213/src/test/org/apache/commons/collections/iterators/TestFilterListIterator.java ---------------------------------------------------------------------- diff --git a/src/test/org/apache/commons/collections/iterators/TestFilterListIterator.java b/src/test/org/apache/commons/collections/iterators/TestFilterListIterator.java index fcf45f8..ab9dffe 100644 --- a/src/test/org/apache/commons/collections/iterators/TestFilterListIterator.java +++ b/src/test/org/apache/commons/collections/iterators/TestFilterListIterator.java @@ -21,11 +21,14 @@ import java.util.List; import java.util.ListIterator; import java.util.Random; +import junit.framework.Assert; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; import org.apache.commons.collections.Predicate; +import org.apache.commons.collections.PredicateUtils; +import org.apache.commons.collections.list.GrowthList; /** * Tests the FilterListIterator class. @@ -289,6 +292,18 @@ public class TestFilterListIterator extends TestCase { assertEquals(expected.previous(),filtered.previous()); } + /** + * Test for {@link https://issues.apache.org/jira/browse/COLLECTIONS-360 COLLECTIONS-360}. + */ + public void testCollections360() throws Throwable { + GrowthList var7 = new GrowthList(); + Predicate var9 = PredicateUtils.anyPredicate((java.util.Collection)var7); + FilterListIterator var13 = new FilterListIterator(var9); + Assert.assertFalse(var13.hasNext()); + org.apache.commons.collections.iterators.FilterListIterator var14 = new org.apache.commons.collections.iterators.FilterListIterator(var9); + Assert.assertFalse(var14.hasPrevious()); + } + // Utilities private void walkForward(ListIterator expected, ListIterator testing) {