Fix set iterator and predicate methods
bug 38074, from Huw Roberts git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@366576 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
8ee4f391d0
commit
ad2987c5ad
|
@ -104,6 +104,7 @@ If this causes major headaches to anyone please contact commons-dev at jakarta.a
|
||||||
<li>UnboundedFifoBuffer - Fix deserialization to work with subsequant object manipulation [35763]</li>
|
<li>UnboundedFifoBuffer - Fix deserialization to work with subsequant object manipulation [35763]</li>
|
||||||
<li>BlockingBuffer - Fix internal locking code (internal fix, no effect on users of BlockingBuffer) [37028]</li>
|
<li>BlockingBuffer - Fix internal locking code (internal fix, no effect on users of BlockingBuffer) [37028]</li>
|
||||||
<li>IteratorChain.remove() - Fix to avoid IllegalStateException when one of the underlying iterators is a FilterIterator [34267]</li>
|
<li>IteratorChain.remove() - Fix to avoid IllegalStateException when one of the underlying iterators is a FilterIterator [34267]</li>
|
||||||
|
<li>FilterIterator - Correctly handle setting of iterator and predicate after object creation [38074]</li>
|
||||||
<li>ExtendedProperties.convertProperties() - Fix to handle default properties maps correctly [32204]</li>
|
<li>ExtendedProperties.convertProperties() - Fix to handle default properties maps correctly [32204]</li>
|
||||||
<li>Add casts to avoid some JDK1.5 compilation warnings [35474]</li>
|
<li>Add casts to avoid some JDK1.5 compilation warnings [35474]</li>
|
||||||
<li>Make serialization version ids private [37106]</li>
|
<li>Make serialization version ids private [37106]</li>
|
||||||
|
|
|
@ -340,6 +340,9 @@
|
||||||
<contributor>
|
<contributor>
|
||||||
<name>Daniel Rall</name>
|
<name>Daniel Rall</name>
|
||||||
</contributor>
|
</contributor>
|
||||||
|
<contributor>
|
||||||
|
<name>Huw Roberts</name>
|
||||||
|
</contributor>
|
||||||
<contributor>
|
<contributor>
|
||||||
<name>Henning P. Schmiedehausen</name>
|
<name>Henning P. Schmiedehausen</name>
|
||||||
</contributor>
|
</contributor>
|
||||||
|
|
|
@ -148,6 +148,8 @@ public class FilterIterator implements Iterator {
|
||||||
*/
|
*/
|
||||||
public void setIterator(Iterator iterator) {
|
public void setIterator(Iterator iterator) {
|
||||||
this.iterator = iterator;
|
this.iterator = iterator;
|
||||||
|
nextObject = null;
|
||||||
|
nextObjectSet = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------
|
//-----------------------------------------------------------------------
|
||||||
|
@ -167,6 +169,8 @@ public class FilterIterator implements Iterator {
|
||||||
*/
|
*/
|
||||||
public void setPredicate(Predicate predicate) {
|
public void setPredicate(Predicate predicate) {
|
||||||
this.predicate = predicate;
|
this.predicate = predicate;
|
||||||
|
nextObject = null;
|
||||||
|
nextObjectSet = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------
|
//-----------------------------------------------------------------------
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2001-2004 The Apache Software Foundation
|
* Copyright 2001-2004,2006 The Apache Software Foundation
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -17,6 +17,7 @@ package org.apache.commons.collections.iterators;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.NoSuchElementException;
|
import java.util.NoSuchElementException;
|
||||||
|
@ -25,14 +26,17 @@ import junit.framework.Test;
|
||||||
import junit.framework.TestSuite;
|
import junit.framework.TestSuite;
|
||||||
|
|
||||||
import org.apache.commons.collections.Predicate;
|
import org.apache.commons.collections.Predicate;
|
||||||
|
import org.apache.commons.collections.functors.NotNullPredicate;
|
||||||
|
import org.apache.commons.collections.functors.TruePredicate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test the filter iterator.
|
* Test the filter iterator.
|
||||||
*
|
*
|
||||||
* @version $Revision$ $Date$
|
* @version $Revision$ $Date$
|
||||||
*
|
*
|
||||||
* @author Jan Sorensen
|
* @author Jan Sorensen
|
||||||
* @author Ralph Wagner
|
* @author Ralph Wagner
|
||||||
|
* @author Huw Roberts
|
||||||
*/
|
*/
|
||||||
public class TestFilterIterator extends AbstractTestIterator {
|
public class TestFilterIterator extends AbstractTestIterator {
|
||||||
|
|
||||||
|
@ -111,6 +115,41 @@ public class TestFilterIterator extends AbstractTestIterator {
|
||||||
verifyElementsInPredicate(new String[] { "a", "b", "c" });
|
verifyElementsInPredicate(new String[] { "a", "b", "c" });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test that when the iterator is changed, the hasNext method returns the
|
||||||
|
* correct response for the new iterator.
|
||||||
|
*/
|
||||||
|
public void testSetIterator() {
|
||||||
|
Iterator iter1 = Collections.singleton(new Object()).iterator();
|
||||||
|
Iterator iter2 = Collections.EMPTY_LIST.iterator();
|
||||||
|
|
||||||
|
FilterIterator filterIterator = new FilterIterator(iter1);
|
||||||
|
filterIterator.setPredicate(TruePredicate.getInstance());
|
||||||
|
// this iterator has elements
|
||||||
|
assertEquals(true, filterIterator.hasNext());
|
||||||
|
|
||||||
|
// this iterator has no elements
|
||||||
|
filterIterator.setIterator(iter2);
|
||||||
|
assertEquals(false, filterIterator.hasNext());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test that when the predicate is changed, the hasNext method returns the
|
||||||
|
* correct response for the new predicate.
|
||||||
|
*/
|
||||||
|
public void testSetPredicate() {
|
||||||
|
Iterator iter = Collections.singleton(null).iterator();
|
||||||
|
|
||||||
|
FilterIterator filterIterator = new FilterIterator(iter);
|
||||||
|
filterIterator.setPredicate(TruePredicate.getInstance());
|
||||||
|
// this predicate matches
|
||||||
|
assertEquals(true, filterIterator.hasNext());
|
||||||
|
|
||||||
|
// this predicate doesn't match
|
||||||
|
filterIterator.setPredicate(NotNullPredicate.getInstance());
|
||||||
|
assertEquals(false, filterIterator.hasNext());
|
||||||
|
}
|
||||||
|
|
||||||
private void verifyNoMoreElements() {
|
private void verifyNoMoreElements() {
|
||||||
assertTrue(!iterator.hasNext());
|
assertTrue(!iterator.hasNext());
|
||||||
try {
|
try {
|
||||||
|
|
Loading…
Reference in New Issue