You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Igor Saprykin (JIRA)" <ji...@apache.org> on 2010/12/13 09:57:01 UTC

[jira] Commented: (COLLECTIONS-360) FilterListIterator#hasNext throws exception (associate with JUnit tests)

    [ 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.