[ 
https://issues.apache.org/jira/browse/COLLECTIONS-360?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12970749#action_12970749
 ] 

Igor Saprykin commented on COLLECTIONS-360:
-------------------------------------------

As far as I understand expression "{{FilterListIterator(var9)}}" resolves into 
{{FilterListIterator(Predicate<? super E> predicate)}} constructor. Here's what 
it's javadoc is saying:
{quote}{noformat}
Constructs a new <code>FilterListIterator</code> that will not function
until {...@link #setListIterator(ListIterator) setListIterator} is invoked.

@param predicate  the predicate to use.{noformat}{quote}
So if a {{ListIterator}} isn't specified than 
[NullPointerException|http://download.oracle.com/javase/6/docs/api/java/lang/NullPointerException.html](your
 case) is thrown.
I think, you're partialy right - {{FilterListIterator}} implements {{Iterator}} 
interface and 
[Iterator.hasNext()|http://download.oracle.com/javase/6/docs/api/java/util/Iterator.html#hasNext()]
 doesn't specify any exceptions to be thrown.

If it's really an issue maybe these two constructors  - 
{{FilterListIterator(Predicate<? super E> predicate)}} and 
{{FilterListIterator(ListIterator<? extends E> iterator )}} should be 
deprecated?

> FilterListIterator#hasNext throws exception (associate with JUnit tests)
> ------------------------------------------------------------------------
>
>                 Key: COLLECTIONS-360
>                 URL: https://issues.apache.org/jira/browse/COLLECTIONS-360
>             Project: Commons Collections
>          Issue Type: Bug
>    Affects Versions: 3.2
>         Environment: ubuntu
>            Reporter: Sai Zhang
>
> Hi,
> I found the some of the iterator classes does not fulfill the iterator 
> specification of JDK.
> e.g. hasNext() should never throw exception.
> Here is an automatically generated junit test (I am now writing a tool)
> {code:java}
> public void test233() throws Throwable {
>     java.lang.Integer var6 = new java.lang.Integer(0);
>     org.apache.commons.collections.list.GrowthList var7 = new 
> org.apache.commons.collections.list.GrowthList(var6);
>     org.apache.commons.collections.Predicate var9 = 
> org.apache.commons.collections.PredicateUtils.anyPredicate((java.util.Collection)var7);
>     java.lang.Long var10 = new java.lang.Long(10L);
>     org.apache.commons.collections.iterators.FilterListIterator var13 = new 
> org.apache.commons.collections.iterators.FilterListIterator(var9);
>     //this line throws exception!
>     var13.hasNext();
> }
> {code}
> could you please check it to confirm whether it is bug or I misunderstand the 
> specification of apache common collections?
> thanks,

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to