commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Thomas Neidhart <thomas.neidh...@gmail.com>
Subject Re: [jira] [Resolved] (COLLECTIONS-377) CollatingIterator throws NullPointerException when constructor is given null (or no) Comparator
Date Mon, 11 Jun 2012 23:21:05 GMT
On 06/04/2012 03:40 PM, James Ring wrote:
> Just a quick question: why should an iterator provide a setComparator
> method? What happens if this is called after any calls to next?

Hi,

this behavior is indeed strange and I do not understand the reason
behind it. Maybe it is related to dependency injection.

I closed the issue as the problem at hand is "solved" right now, but we
should discuss if the current situation is right.

Thomas

> On Jun 3, 2012 4:21 AM, "Thomas Neidhart (JIRA)" <jira@apache.org> wrote:
> 
>>
>>     [
>> https://issues.apache.org/jira/browse/COLLECTIONS-377?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel]
>>
>> Thomas Neidhart resolved COLLECTIONS-377.
>> -----------------------------------------
>>
>>       Resolution: Duplicate
>>    Fix Version/s: 4.0
>>
>> This has been fixed as part of [COLLECTIONS-331]. Now the javadoc states
>> that a comparator *must* be provided (either via constructor or by calling
>> setComparator afterwards) before using the iterator.
>>
>>> CollatingIterator throws NullPointerException when constructor is given
>> null (or no) Comparator
>>>
>> -----------------------------------------------------------------------------------------------
>>>
>>>                 Key: COLLECTIONS-377
>>>                 URL:
>> https://issues.apache.org/jira/browse/COLLECTIONS-377
>>>             Project: Commons Collections
>>>          Issue Type: Bug
>>>          Components: Iterator
>>>    Affects Versions: 3.2
>>>         Environment: Java 1.6.0_26
>>>            Reporter: Ryan Hochstetler
>>>            Priority: Minor
>>>             Fix For: 4.0
>>>
>>>
>>> CollatingIterator's javadoc (
>> http://commons.apache.org/collections/api-release/index.html) states that
>> natural sort ordering will be used when null is passed as the Comparator
>> argument to any of the constructors accepting one (and for the nullary
>> constructor).  The following stack is thrown from the subsequent unit test.
>>  The implementation of least() does not appear to account for the natural
>> sort order case.
>>> java.lang.NullPointerException
>>>       at
>> org.apache.commons.collections.iterators.CollatingIterator.least(CollatingIterator.java:334)
>>>       at
>> org.apache.commons.collections.iterators.CollatingIterator.next(CollatingIterator.java:230)
>>>       at mil.af.statistics.jutl.collection.MutableDataSeriesTest...
>>>     @SuppressWarnings("unchecked")
>>>     @Test
>>>     public void testCollatingIteratorNaturalOrdering() throws Exception
>>>     {
>>>         Integer[] expected =
>>>         { Integer.valueOf(1), Integer.valueOf(2), Integer.valueOf(3),
>> Integer.valueOf(4), Integer.valueOf(5),
>>>             Integer.valueOf(6) };
>>>         List<Integer> evens = Arrays.asList(new Integer[]
>>>         { Integer.valueOf(2), Integer.valueOf(4), Integer.valueOf(6) });
>>>         List<Integer> odds = Arrays.asList(new Integer[]
>>>         { Integer.valueOf(1), Integer.valueOf(3), Integer.valueOf(5) });
>>>         Iterator<Integer> collatingIter = new CollatingIterator(null,
>> evens.iterator(), odds.iterator());
>>>         for (Integer expectedInt : expected)
>>>         {
>>>             assertTrue(collatingIter.hasNext());
>>>             assertEquals(expectedInt, collatingIter.next());
>>>         }
>>>     }
>>> Workaround: provide a Comparator that implements the natural ordering
>> contract.
>>
>> --
>> This message is automatically generated by JIRA.
>> If you think it was sent incorrectly, please contact your JIRA
>> administrators:
>> https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
>> For more information on JIRA, see: http://www.atlassian.com/software/jira
>>
>>
>>
> 


Mime
View raw message