PR: COLLECTIONS-360
Prevent an NPE in FilterListIterator.next() and FilterListIterator.previous() git-svn-id: https://svn.apache.org/repos/asf/commons/proper/collections/trunk@1076034 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
152588c286
commit
0145c16a6f
3
pom.xml
3
pom.xml
|
@ -350,6 +350,9 @@
|
||||||
<contributor>
|
<contributor>
|
||||||
<name>Serhiy Yevtushenko</name>
|
<name>Serhiy Yevtushenko</name>
|
||||||
</contributor>
|
</contributor>
|
||||||
|
<contributor>
|
||||||
|
<name>Sai Zhang</name>
|
||||||
|
</contributor>
|
||||||
<contributor>
|
<contributor>
|
||||||
<name>Jason van Zyl</name>
|
<name>Jason van Zyl</name>
|
||||||
</contributor>
|
</contributor>
|
||||||
|
|
|
@ -227,6 +227,9 @@ public class FilterListIterator<E> implements ListIterator<E> {
|
||||||
clearNextObject();
|
clearNextObject();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (iterator == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
while (iterator.hasNext()) {
|
while (iterator.hasNext()) {
|
||||||
E object = iterator.next();
|
E object = iterator.next();
|
||||||
if (predicate.evaluate(object)) {
|
if (predicate.evaluate(object)) {
|
||||||
|
@ -256,6 +259,9 @@ public class FilterListIterator<E> implements ListIterator<E> {
|
||||||
clearPreviousObject();
|
clearPreviousObject();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (iterator == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
while (iterator.hasPrevious()) {
|
while (iterator.hasPrevious()) {
|
||||||
E object = iterator.previous();
|
E object = iterator.previous();
|
||||||
if (predicate.evaluate(object)) {
|
if (predicate.evaluate(object)) {
|
||||||
|
|
|
@ -17,12 +17,16 @@
|
||||||
package org.apache.commons.collections.iterators;
|
package org.apache.commons.collections.iterators;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.ListIterator;
|
import java.util.ListIterator;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
import org.apache.commons.collections.Predicate;
|
import org.apache.commons.collections.Predicate;
|
||||||
|
import org.apache.commons.collections.PredicateUtils;
|
||||||
|
import org.apache.commons.collections.list.GrowthList;
|
||||||
|
import org.junit.Assert;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests the FilterListIterator class.
|
* Tests the FilterListIterator class.
|
||||||
|
@ -279,6 +283,18 @@ public class TestFilterListIterator extends TestCase {
|
||||||
assertEquals(expected.previous(), filtered.previous());
|
assertEquals(expected.previous(), filtered.previous());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test for {@link https://issues.apache.org/jira/browse/COLLECTIONS-360 COLLECTIONS-360}.
|
||||||
|
*/
|
||||||
|
public void testCollections360() throws Throwable {
|
||||||
|
Collection<Predicate<Object>> var7 = new GrowthList<Predicate<Object>>();
|
||||||
|
Predicate<Object> var9 = PredicateUtils.anyPredicate(var7);
|
||||||
|
FilterListIterator<Object> var13 = new FilterListIterator<Object>(var9);
|
||||||
|
Assert.assertFalse(var13.hasNext());
|
||||||
|
FilterListIterator<Object> var14 = new FilterListIterator<Object>(var9);
|
||||||
|
Assert.assertFalse(var14.hasPrevious());
|
||||||
|
}
|
||||||
|
|
||||||
// Utilities
|
// Utilities
|
||||||
|
|
||||||
private void walkForward(ListIterator<?> expected, ListIterator<?> testing) {
|
private void walkForward(ListIterator<?> expected, ListIterator<?> testing) {
|
||||||
|
|
Loading…
Reference in New Issue