RFR(s): 8072726: add adapter to convert Enumeration to Iterator

Remi Forax forax at univ-mlv.fr
Tue May 19 07:05:26 UTC 2015


Thumb up for me :)

Rémi

On 05/19/2015 12:45 AM, Stuart Marks wrote:
>
>
>
>
> On 5/18/15 3:20 AM, Paul Sandoz wrote:
>> I would like to suggest some tweaks to the specification to get 
>> across this method is transitioning control of traversal from 
>> enumeration to iterator. How about:
>>
>>    Returns an iterator that traverses the remaining elements covered 
>> by this enumeration.
>>    Traversal is undefined if this enumeration is operated on after 
>> the call to {@code asIterator}.
>
> OK, good. I tweaked it somewhat to say "if any method is called" 
> instead of "operated on" to make it absolutely clear that the 
> underlying Enumeration shouldn't be touched after the call to 
> asIterator(). (Yes, that includes hasMoreElements.)
>
>> I suspect the use of PermissionCollection in the apiNote is a little 
>> too obscure and highlighting an area that i don't think deserves so 
>> much attention :-)
>
> Boy people really hate the java.security APIs. But perhaps not as much 
> as they hate CORBA. :-)
>
>> In your example i am not sure the source is IMMUTABLE, it's possible 
>> to add permissions if the collection is not marked read-only. It's 
>> not even clear whether ORDERED is relevant here, some implementations 
>> are backed by a HashMap (see BasicPermissionCollection) and the 
>> enumeration is derived from the map's values. Hence I am ambivalent 
>> about exposing such a Stream example, it exposes too many details 
>> that are tricky to get right.
>>
>> ClassLoader.getResources would be better if it were not for IOException.
>>
>> I would be inclined to go for Zip/JarFile.entries, and that would 
>> also give us the opportunity to highlight the stream returning method 
>> that could be used instead, therefore we can avoid mentioning about 
>> constructing a stream from an enumeration/iterator and move 
>> developers away from Enumeration altogether in this case.
>
> OK, I went with JarFile, since the wildcard in ZipFile.entries() seems 
> to cause some trouble.
>
> I also deleted the stream example. It's fairly complex and as you note 
> it's hard to get the details right.
>
> I've posted an updated webrev here:
>
>     http://cr.openjdk.java.net/~smarks/reviews/8072726/webrev.1/
>
> Changes include:
>
>  - updates to spec & examples per above
>  - converted NOTE in class doc to @apiNote
>  - Rémi's suggested simplifications
>  - additional tests for remove()
>
> s'marks
>
>
>> A good stream-ification task would be to identify cases in the JDK 
>> where only an Enumeration is returned and additionally provide 
>> stream-returning methods, so perhaps PermissionCollection and 
>> ClassLoader are good candidates.
>>
>> Paul.
>>
>>
>>
>> On May 16, 2015, at 2:37 AM, Stuart Marks <stuart.marks at oracle.com> 
>> wrote:
>>
>>> Hi all,
>>>
>>> Please review this small API enhancement to add a default method 
>>> "asIterator()" to Enumeration that converts it into an Iterator.
>>>
>>> Webrev:
>>>
>>>     http://cr.openjdk.java.net/~smarks/reviews/8072726/webrev.0/
>>>
>>> Bug:
>>>
>>>     https://bugs.openjdk.java.net/browse/JDK-8072726
>>>
>>> Thanks,
>>>
>>> s'marks
>>




More information about the core-libs-dev mailing list