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 <patr...@reini.net> wrote:
> 
> The current changes can be found here:
> 
> http://cr.openjdk.java.net/~reinhapa/reviews/8161230/webrev.03
> 




Reply via email to