RFR: JDK-8161230 ClassLoader: add resource methods returning java.util.stream.Stream

Patrick Reinhart patrick at reini.net
Wed Sep 7 20:14:54 UTC 2016


Hi Paul,

With the change for  https://bugs.openjdk.java.net/browse/JDK-8165563
that Mandy has sent to review here:

http://mail.openjdk.java.net/pipermail/core-libs-dev/2016-September/043363.html

the method getSystemResources where systemResources method relies on, in
my understanding should be working.

If I'm correct I will make my enhancement dependent on JDK-8165563

-Patrick


On 07.09.2016 21:09, Paul Sandoz wrote:
> Hi Patrick,
>
> I will sponsor this.
>
> Given what Mandy says about the system class loader i think we can drop the method systemResources. There is some “race memory" not captured in the specification, which should be updated, as Mandy says.
>
> Then…
>
> 1401     public Stream<URL> resources(String name) {
> 1402         return streamOf(() -> {
> 1403             try {
> 1404                 return getResources(name).asIterator();
> 1405             } catch (IOException e) {
> 1406                 throw new UncheckedIOException(e);
> 1407             }
> 1408         });
> 1409     }
> 1410
> 1411     private static final int RESOURCE_CHARACTERISTICS = Spliterator.NONNULL | Spliterator.IMMUTABLE;
> 1412
> 1413     static Stream<URL> streamOf(Supplier<Iterator<URL>> iteratorSupplier) {
> 1414         return StreamSupport.stream(
> 1415                 () -> Spliterators.spliteratorUnknownSize(iteratorSupplier.get(), RESOURCE_CHARACTERISTICS),
> 1416                 RESOURCE_CHARACTERISTICS, false);
> 1417     }
> 1418
>
> … you can merge the suppliers e.g:
>
>   Supplier<Spliterator<URL>> si = () -> {
>     try {
>       return Spliterators.spliteratorUnknownSize(getResources(name).asIterator(), …);
>     } catch (IOException e) {
>       throw new UncheckedIOException(e);
>     }
>   };
>   return StreamSupport.stream(si, …);
>
> ?
>
> Paul.
>
>
>> On 7 Sep 2016, at 11:38, Patrick Reinhart <patrick at reini.net> wrote:
>>
>> The current changes can be found here:
>>
>> http://cr.openjdk.java.net/~reinhapa/reviews/8161230/webrev.03
>>
>
>
>




More information about the core-libs-dev mailing list