8019395: Consolidate StreamSupport.{stream,parallelStream} into a single method
Reviewed-by: henryjen, briangoetz
--- a/jdk/src/share/classes/java/io/BufferedReader.java Fri Jul 12 12:15:59 2013 -0700
+++ b/jdk/src/share/classes/java/io/BufferedReader.java Wed Jul 03 21:43:49 2013 +0200
@@ -587,6 +587,6 @@
}
}
};
- return StreamSupport.stream(Spliterators.spliteratorUnknownSize(iter, Spliterator.ORDERED));
+ return StreamSupport.stream(Spliterators.spliteratorUnknownSize(iter, Spliterator.ORDERED), false);
}
}
--- a/jdk/src/share/classes/java/lang/CharSequence.java Fri Jul 12 12:15:59 2013 -0700
+++ b/jdk/src/share/classes/java/lang/CharSequence.java Wed Jul 03 21:43:49 2013 +0200
@@ -156,7 +156,8 @@
new CharIterator(),
length(),
Spliterator.ORDERED),
- Spliterator.SUBSIZED | Spliterator.SIZED | Spliterator.ORDERED);
+ Spliterator.SUBSIZED | Spliterator.SIZED | Spliterator.ORDERED,
+ false);
}
/**
@@ -227,6 +228,7 @@
Spliterators.spliteratorUnknownSize(
new CodePointIterator(),
Spliterator.ORDERED),
- Spliterator.SUBSIZED | Spliterator.SIZED | Spliterator.ORDERED);
+ Spliterator.SUBSIZED | Spliterator.SIZED | Spliterator.ORDERED,
+ false);
}
}
--- a/jdk/src/share/classes/java/nio/X-Buffer.java.template Fri Jul 12 12:15:59 2013 -0700
+++ b/jdk/src/share/classes/java/nio/X-Buffer.java.template Wed Jul 03 21:43:49 2013 +0200
@@ -1495,7 +1495,7 @@
#end[char]
public $Streamtype$Stream $type$s() {
return StreamSupport.$streamtype$Stream(() -> new $Type$BufferSpliterator(this),
- Buffer.SPLITERATOR_CHARACTERISTICS);
+ Buffer.SPLITERATOR_CHARACTERISTICS, false);
}
#end[streamableType]
--- a/jdk/src/share/classes/java/nio/file/Files.java Fri Jul 12 12:15:59 2013 -0700
+++ b/jdk/src/share/classes/java/nio/file/Files.java Wed Jul 03 21:43:49 2013 +0200
@@ -3269,9 +3269,10 @@
}
};
- return new DelegatingCloseableStream<>(ds,
- StreamSupport.stream(Spliterators.spliteratorUnknownSize(it,
- Spliterator.DISTINCT)));
+ Stream<Path> s = StreamSupport.stream(
+ Spliterators.spliteratorUnknownSize(it, Spliterator.DISTINCT),
+ false);
+ return new DelegatingCloseableStream<>(ds, s);
}
/**
@@ -3358,9 +3359,12 @@
throws IOException
{
FileTreeIterator iterator = new FileTreeIterator(start, maxDepth, options);
- return new DelegatingCloseableStream<>(iterator,
- StreamSupport.stream(Spliterators.spliteratorUnknownSize(iterator, Spliterator.DISTINCT))
- .map(entry -> entry.file()));
+
+ Stream<Path> s = StreamSupport.stream(
+ Spliterators.spliteratorUnknownSize(iterator, Spliterator.DISTINCT),
+ false).
+ map(entry -> entry.file());
+ return new DelegatingCloseableStream<>(iterator, s);
}
/**
@@ -3455,10 +3459,13 @@
throws IOException
{
FileTreeIterator iterator = new FileTreeIterator(start, maxDepth, options);
- return new DelegatingCloseableStream<>(iterator,
- StreamSupport.stream(Spliterators.spliteratorUnknownSize(iterator, Spliterator.DISTINCT))
- .filter(entry -> matcher.test(entry.file(), entry.attributes()))
- .map(entry -> entry.file()));
+
+ Stream<Path> s = StreamSupport.stream(
+ Spliterators.spliteratorUnknownSize(iterator, Spliterator.DISTINCT),
+ false).
+ filter(entry -> matcher.test(entry.file(), entry.attributes())).
+ map(entry -> entry.file());
+ return new DelegatingCloseableStream<>(iterator, s);
}
/**
--- a/jdk/src/share/classes/java/util/Arrays.java Fri Jul 12 12:15:59 2013 -0700
+++ b/jdk/src/share/classes/java/util/Arrays.java Wed Jul 03 21:43:49 2013 +0200
@@ -4966,7 +4966,7 @@
* @since 1.8
*/
public static <T> Stream<T> stream(T[] array, int startInclusive, int endExclusive) {
- return StreamSupport.stream(spliterator(array, startInclusive, endExclusive));
+ return StreamSupport.stream(spliterator(array, startInclusive, endExclusive), false);
}
/**
@@ -4996,7 +4996,7 @@
* @since 1.8
*/
public static IntStream stream(int[] array, int startInclusive, int endExclusive) {
- return StreamSupport.intStream(spliterator(array, startInclusive, endExclusive));
+ return StreamSupport.intStream(spliterator(array, startInclusive, endExclusive), false);
}
/**
@@ -5026,7 +5026,7 @@
* @since 1.8
*/
public static LongStream stream(long[] array, int startInclusive, int endExclusive) {
- return StreamSupport.longStream(spliterator(array, startInclusive, endExclusive));
+ return StreamSupport.longStream(spliterator(array, startInclusive, endExclusive), false);
}
/**
@@ -5056,6 +5056,6 @@
* @since 1.8
*/
public static DoubleStream stream(double[] array, int startInclusive, int endExclusive) {
- return StreamSupport.doubleStream(spliterator(array, startInclusive, endExclusive));
+ return StreamSupport.doubleStream(spliterator(array, startInclusive, endExclusive), false);
}
}
--- a/jdk/src/share/classes/java/util/BitSet.java Fri Jul 12 12:15:59 2013 -0700
+++ b/jdk/src/share/classes/java/util/BitSet.java Wed Jul 03 21:43:49 2013 +0200
@@ -1231,6 +1231,7 @@
new BitSetIterator(), cardinality(),
Spliterator.ORDERED | Spliterator.DISTINCT | Spliterator.SORTED),
Spliterator.SIZED | Spliterator.SUBSIZED |
- Spliterator.ORDERED | Spliterator.DISTINCT | Spliterator.SORTED);
+ Spliterator.ORDERED | Spliterator.DISTINCT | Spliterator.SORTED,
+ false);
}
}
--- a/jdk/src/share/classes/java/util/Collection.java Fri Jul 12 12:15:59 2013 -0700
+++ b/jdk/src/share/classes/java/util/Collection.java Wed Jul 03 21:43:49 2013 +0200
@@ -557,7 +557,7 @@
* @since 1.8
*/
default Stream<E> stream() {
- return StreamSupport.stream(spliterator());
+ return StreamSupport.stream(spliterator(), false);
}
/**
@@ -578,6 +578,6 @@
* @since 1.8
*/
default Stream<E> parallelStream() {
- return StreamSupport.parallelStream(spliterator());
+ return StreamSupport.stream(spliterator(), true);
}
}
--- a/jdk/src/share/classes/java/util/Collections.java Fri Jul 12 12:15:59 2013 -0700
+++ b/jdk/src/share/classes/java/util/Collections.java Wed Jul 03 21:43:49 2013 +0200
@@ -1674,12 +1674,12 @@
@Override
public Stream<Entry<K,V>> stream() {
- return StreamSupport.stream(spliterator());
+ return StreamSupport.stream(spliterator(), false);
}
@Override
public Stream<Entry<K,V>> parallelStream() {
- return StreamSupport.parallelStream(spliterator());
+ return StreamSupport.stream(spliterator(), true);
}
public Iterator<Map.Entry<K,V>> iterator() {
--- a/jdk/src/share/classes/java/util/jar/JarFile.java Fri Jul 12 12:15:59 2013 -0700
+++ b/jdk/src/share/classes/java/util/jar/JarFile.java Wed Jul 03 21:43:49 2013 +0200
@@ -272,7 +272,7 @@
return StreamSupport.stream(Spliterators.spliterator(
new JarEntryIterator(), size(),
Spliterator.ORDERED | Spliterator.DISTINCT |
- Spliterator.IMMUTABLE | Spliterator.NONNULL));
+ Spliterator.IMMUTABLE | Spliterator.NONNULL), false);
}
private class JarFileEntry extends JarEntry {
--- a/jdk/src/share/classes/java/util/regex/Pattern.java Fri Jul 12 12:15:59 2013 -0700
+++ b/jdk/src/share/classes/java/util/regex/Pattern.java Wed Jul 03 21:43:49 2013 +0200
@@ -5815,6 +5815,6 @@
}
}
return StreamSupport.stream(Spliterators.spliteratorUnknownSize(
- new MatcherIterator(), Spliterator.ORDERED | Spliterator.NONNULL));
+ new MatcherIterator(), Spliterator.ORDERED | Spliterator.NONNULL), false);
}
}
--- a/jdk/src/share/classes/java/util/stream/DoubleStream.java Fri Jul 12 12:15:59 2013 -0700
+++ b/jdk/src/share/classes/java/util/stream/DoubleStream.java Wed Jul 03 21:43:49 2013 +0200
@@ -672,7 +672,7 @@
* @return an empty sequential stream
*/
public static DoubleStream empty() {
- return StreamSupport.doubleStream(Spliterators.emptyDoubleSpliterator());
+ return StreamSupport.doubleStream(Spliterators.emptyDoubleSpliterator(), false);
}
/**
@@ -682,7 +682,7 @@
* @return a singleton sequential stream
*/
public static DoubleStream of(double t) {
- return StreamSupport.doubleStream(new Streams.DoubleStreamBuilderImpl(t));
+ return StreamSupport.doubleStream(new Streams.DoubleStreamBuilderImpl(t), false);
}
/**
@@ -730,7 +730,7 @@
};
return StreamSupport.doubleStream(Spliterators.spliteratorUnknownSize(
iterator,
- Spliterator.ORDERED | Spliterator.IMMUTABLE | Spliterator.NONNULL));
+ Spliterator.ORDERED | Spliterator.IMMUTABLE | Spliterator.NONNULL), false);
}
/**
@@ -744,7 +744,7 @@
public static DoubleStream generate(DoubleSupplier s) {
Objects.requireNonNull(s);
return StreamSupport.doubleStream(
- new StreamSpliterators.InfiniteSupplyingSpliterator.OfDouble(Long.MAX_VALUE, s));
+ new StreamSpliterators.InfiniteSupplyingSpliterator.OfDouble(Long.MAX_VALUE, s), false);
}
/**
@@ -764,8 +764,6 @@
Spliterator.OfDouble split = new Streams.ConcatSpliterator.OfDouble(
a.spliterator(), b.spliterator());
- return (a.isParallel() || b.isParallel())
- ? StreamSupport.doubleParallelStream(split)
- : StreamSupport.doubleStream(split);
+ return StreamSupport.doubleStream(split, a.isParallel() || b.isParallel());
}
}
--- a/jdk/src/share/classes/java/util/stream/IntStream.java Fri Jul 12 12:15:59 2013 -0700
+++ b/jdk/src/share/classes/java/util/stream/IntStream.java Wed Jul 03 21:43:49 2013 +0200
@@ -674,7 +674,7 @@
* @return an empty sequential stream
*/
public static IntStream empty() {
- return StreamSupport.intStream(Spliterators.emptyIntSpliterator());
+ return StreamSupport.intStream(Spliterators.emptyIntSpliterator(), false);
}
/**
@@ -684,7 +684,7 @@
* @return a singleton sequential stream
*/
public static IntStream of(int t) {
- return StreamSupport.intStream(new Streams.IntStreamBuilderImpl(t));
+ return StreamSupport.intStream(new Streams.IntStreamBuilderImpl(t), false);
}
/**
@@ -732,7 +732,7 @@
};
return StreamSupport.intStream(Spliterators.spliteratorUnknownSize(
iterator,
- Spliterator.ORDERED | Spliterator.IMMUTABLE | Spliterator.NONNULL));
+ Spliterator.ORDERED | Spliterator.IMMUTABLE | Spliterator.NONNULL), false);
}
/**
@@ -746,7 +746,7 @@
public static IntStream generate(IntSupplier s) {
Objects.requireNonNull(s);
return StreamSupport.intStream(
- new StreamSpliterators.InfiniteSupplyingSpliterator.OfInt(Long.MAX_VALUE, s));
+ new StreamSpliterators.InfiniteSupplyingSpliterator.OfInt(Long.MAX_VALUE, s), false);
}
/**
@@ -771,7 +771,7 @@
return empty();
} else {
return StreamSupport.intStream(
- new Streams.RangeIntSpliterator(startInclusive, endExclusive, false));
+ new Streams.RangeIntSpliterator(startInclusive, endExclusive, false), false);
}
}
@@ -797,7 +797,7 @@
return empty();
} else {
return StreamSupport.intStream(
- new Streams.RangeIntSpliterator(startInclusive, endInclusive, true));
+ new Streams.RangeIntSpliterator(startInclusive, endInclusive, true), false);
}
}
@@ -818,8 +818,6 @@
Spliterator.OfInt split = new Streams.ConcatSpliterator.OfInt(
a.spliterator(), b.spliterator());
- return (a.isParallel() || b.isParallel())
- ? StreamSupport.intParallelStream(split)
- : StreamSupport.intStream(split);
+ return StreamSupport.intStream(split, a.isParallel() || b.isParallel());
}
}
--- a/jdk/src/share/classes/java/util/stream/LongStream.java Fri Jul 12 12:15:59 2013 -0700
+++ b/jdk/src/share/classes/java/util/stream/LongStream.java Wed Jul 03 21:43:49 2013 +0200
@@ -665,7 +665,7 @@
* @return an empty sequential stream
*/
public static LongStream empty() {
- return StreamSupport.longStream(Spliterators.emptyLongSpliterator());
+ return StreamSupport.longStream(Spliterators.emptyLongSpliterator(), false);
}
/**
@@ -675,7 +675,7 @@
* @return a singleton sequential stream
*/
public static LongStream of(long t) {
- return StreamSupport.longStream(new Streams.LongStreamBuilderImpl(t));
+ return StreamSupport.longStream(new Streams.LongStreamBuilderImpl(t), false);
}
/**
@@ -723,7 +723,7 @@
};
return StreamSupport.longStream(Spliterators.spliteratorUnknownSize(
iterator,
- Spliterator.ORDERED | Spliterator.IMMUTABLE | Spliterator.NONNULL));
+ Spliterator.ORDERED | Spliterator.IMMUTABLE | Spliterator.NONNULL), false);
}
/**
@@ -737,7 +737,7 @@
public static LongStream generate(LongSupplier s) {
Objects.requireNonNull(s);
return StreamSupport.longStream(
- new StreamSpliterators.InfiniteSupplyingSpliterator.OfLong(Long.MAX_VALUE, s));
+ new StreamSpliterators.InfiniteSupplyingSpliterator.OfLong(Long.MAX_VALUE, s), false);
}
/**
@@ -769,7 +769,7 @@
return concat(range(startInclusive, m), range(m, endExclusive));
} else {
return StreamSupport.longStream(
- new Streams.RangeLongSpliterator(startInclusive, endExclusive, false));
+ new Streams.RangeLongSpliterator(startInclusive, endExclusive, false), false);
}
}
@@ -803,7 +803,7 @@
return concat(range(startInclusive, m), rangeClosed(m, endInclusive));
} else {
return StreamSupport.longStream(
- new Streams.RangeLongSpliterator(startInclusive, endInclusive, true));
+ new Streams.RangeLongSpliterator(startInclusive, endInclusive, true), false);
}
}
@@ -824,8 +824,6 @@
Spliterator.OfLong split = new Streams.ConcatSpliterator.OfLong(
a.spliterator(), b.spliterator());
- return (a.isParallel() || b.isParallel())
- ? StreamSupport.longParallelStream(split)
- : StreamSupport.longStream(split);
+ return StreamSupport.longStream(split, a.isParallel() || b.isParallel());
}
}
--- a/jdk/src/share/classes/java/util/stream/Stream.java Fri Jul 12 12:15:59 2013 -0700
+++ b/jdk/src/share/classes/java/util/stream/Stream.java Wed Jul 03 21:43:49 2013 +0200
@@ -805,7 +805,7 @@
* @return an empty sequential stream
*/
public static<T> Stream<T> empty() {
- return StreamSupport.stream(Spliterators.<T>emptySpliterator());
+ return StreamSupport.stream(Spliterators.<T>emptySpliterator(), false);
}
/**
@@ -816,7 +816,7 @@
* @return a singleton sequential stream
*/
public static<T> Stream<T> of(T t) {
- return StreamSupport.stream(new Streams.StreamBuilderImpl<>(t));
+ return StreamSupport.stream(new Streams.StreamBuilderImpl<>(t), false);
}
/**
@@ -866,7 +866,7 @@
};
return StreamSupport.stream(Spliterators.spliteratorUnknownSize(
iterator,
- Spliterator.ORDERED | Spliterator.IMMUTABLE));
+ Spliterator.ORDERED | Spliterator.IMMUTABLE), false);
}
/**
@@ -881,7 +881,7 @@
public static<T> Stream<T> generate(Supplier<T> s) {
Objects.requireNonNull(s);
return StreamSupport.stream(
- new StreamSpliterators.InfiniteSupplyingSpliterator.OfRef<>(Long.MAX_VALUE, s));
+ new StreamSpliterators.InfiniteSupplyingSpliterator.OfRef<>(Long.MAX_VALUE, s), false);
}
/**
@@ -904,8 +904,6 @@
@SuppressWarnings("unchecked")
Spliterator<T> split = new Streams.ConcatSpliterator.OfRef<>(
(Spliterator<T>) a.spliterator(), (Spliterator<T>) b.spliterator());
- return (a.isParallel() || b.isParallel())
- ? StreamSupport.parallelStream(split)
- : StreamSupport.stream(split);
+ return StreamSupport.stream(split, a.isParallel() || b.isParallel());
}
}
--- a/jdk/src/share/classes/java/util/stream/StreamSupport.java Fri Jul 12 12:15:59 2013 -0700
+++ b/jdk/src/share/classes/java/util/stream/StreamSupport.java Wed Jul 03 21:43:49 2013 +0200
@@ -47,7 +47,8 @@
private StreamSupport() {}
/**
- * Creates a new sequential {@code Stream} from a {@code Spliterator}.
+ * Creates a new sequential or parallel {@code Stream} from a
+ * {@code Spliterator}.
*
* <p>The spliterator is only traversed, split, or queried for estimated
* size after the terminal operation of the stream pipeline commences.
@@ -55,50 +56,28 @@
* <p>It is strongly recommended the spliterator report a characteristic of
* {@code IMMUTABLE} or {@code CONCURRENT}, or be
* <a href="../Spliterator.html#binding">late-binding</a>. Otherwise,
- * {@link #stream(Supplier, int)} should be used to
- * reduce the scope of potential interference with the source. See
+ * {@link #stream(java.util.function.Supplier, int, boolean)} should be used
+ * to reduce the scope of potential interference with the source. See
* <a href="package-summary.html#Non-Interference">Non-Interference</a> for
* more details.
*
* @param <T> the type of stream elements
* @param spliterator a {@code Spliterator} describing the stream elements
- * @return a new sequential {@code Stream}
+ * @param parallel if {@code true} then the returned stream is a parallel
+ * stream; if {@code false} the returned stream is a sequential
+ * stream.
+ * @return a new sequential or parallel {@code Stream}
*/
- public static <T> Stream<T> stream(Spliterator<T> spliterator) {
+ public static <T> Stream<T> stream(Spliterator<T> spliterator, boolean parallel) {
Objects.requireNonNull(spliterator);
return new ReferencePipeline.Head<>(spliterator,
StreamOpFlag.fromCharacteristics(spliterator),
- false);
+ parallel);
}
/**
- * Creates a new parallel {@code Stream} from a {@code Spliterator}.
- *
- * <p>The spliterator is only traversed, split, or queried for estimated
- * size after the terminal operation of the stream pipeline commences.
- *
- * <p>It is strongly recommended the spliterator report a characteristic of
- * {@code IMMUTABLE} or {@code CONCURRENT}, or be
- * <a href="../Spliterator.html#binding">late-binding</a>. Otherwise,
- * {@link #stream(Supplier, int)} should be used to
- * reduce the scope of potential interference with the source. See
- * <a href="package-summary.html#Non-Interference">Non-Interference</a> for
- * more details.
- *
- * @param <T> the type of stream elements
- * @param spliterator a {@code Spliterator} describing the stream elements
- * @return a new parallel {@code Stream}
- */
- public static <T> Stream<T> parallelStream(Spliterator<T> spliterator) {
- Objects.requireNonNull(spliterator);
- return new ReferencePipeline.Head<>(spliterator,
- StreamOpFlag.fromCharacteristics(spliterator),
- true);
- }
-
- /**
- * Creates a new sequential {@code Stream} from a {@code Supplier} of
- * {@code Spliterator}.
+ * Creates a new sequential or parallel {@code Stream} from a
+ * {@code Supplier} of {@code Spliterator}.
*
* <p>The {@link Supplier#get()} method will be invoked on the supplier no
* more than once, and after the terminal operation of the stream pipeline
@@ -107,43 +86,8 @@
* <p>For spliterators that report a characteristic of {@code IMMUTABLE}
* or {@code CONCURRENT}, or that are
* <a href="../Spliterator.html#binding">late-binding</a>, it is likely
- * more efficient to use {@link #stream(java.util.Spliterator)} instead.
- * The use of a {@code Supplier} in this form provides a level of
- * indirection that reduces the scope of potential interference with the
- * source. Since the supplier is only invoked after the terminal operation
- * commences, any modifications to the source up to the start of the
- * terminal operation are reflected in the stream result. See
- * <a href="package-summary.html#Non-Interference">Non-Interference</a> for
- * more details.
- *
- * @param <T> the type of stream elements
- * @param supplier a {@code Supplier} of a {@code Spliterator}
- * @param characteristics Spliterator characteristics of the supplied
- * {@code Spliterator}. The characteristics must be equal to
- * {@code source.get().getCharacteristics()}.
- * @return a new sequential {@code Stream}
- * @see #stream(Spliterator)
- */
- public static <T> Stream<T> stream(Supplier<? extends Spliterator<T>> supplier,
- int characteristics) {
- Objects.requireNonNull(supplier);
- return new ReferencePipeline.Head<>(supplier,
- StreamOpFlag.fromCharacteristics(characteristics),
- false);
- }
-
- /**
- * Creates a new parallel {@code Stream} from a {@code Supplier} of
- * {@code Spliterator}.
- *
- * <p>The {@link Supplier#get()} method will be invoked on the supplier no
- * more than once, and after the terminal operation of the stream pipeline
- * commences.
- *
- * <p>For spliterators that report a characteristic of {@code IMMUTABLE}
- * or {@code CONCURRENT}, or that are
- * <a href="../Spliterator.html#binding">late-binding</a>, it is likely
- * more efficient to use {@link #stream(Spliterator)} instead.
+ * more efficient to use {@link #stream(java.util.Spliterator, boolean)}
+ * instead.
* The use of a {@code Supplier} in this form provides a level of
* indirection that reduces the scope of potential interference with the
* source. Since the supplier is only invoked after the terminal operation
@@ -152,24 +96,28 @@
* <a href="package-summary.html#Non-Interference">Non-Interference</a> for
* more details.
*
- * @param <T> the type of stream elements
* @param supplier a {@code Supplier} of a {@code Spliterator}
* @param characteristics Spliterator characteristics of the supplied
* {@code Spliterator}. The characteristics must be equal to
- * {@code source.get().getCharacteristics()}
- * @return a new parallel {@code Stream}
- * @see #parallelStream(Spliterator)
+ * {@code supplier.get().characteristics()}.
+ * @param parallel if {@code true} then the returned stream is a parallel
+ * stream; if {@code false} the returned stream is a sequential
+ * stream.
+ * @return a new sequential or parallel {@code Stream}
+ * @see #stream(java.util.Spliterator, boolean)
*/
- public static <T> Stream<T> parallelStream(Supplier<? extends Spliterator<T>> supplier,
- int characteristics) {
+ public static <T> Stream<T> stream(Supplier<? extends Spliterator<T>> supplier,
+ int characteristics,
+ boolean parallel) {
Objects.requireNonNull(supplier);
return new ReferencePipeline.Head<>(supplier,
StreamOpFlag.fromCharacteristics(characteristics),
- true);
+ parallel);
}
/**
- * Creates a new sequential {@code IntStream} from a {@code Spliterator.OfInt}.
+ * Creates a new sequential or parallel {@code IntStream} from a
+ * {@code Spliterator.OfInt}.
*
* <p>The spliterator is only traversed, split, or queried for estimated size
* after the terminal operation of the stream pipeline commences.
@@ -177,46 +125,26 @@
* <p>It is strongly recommended the spliterator report a characteristic of
* {@code IMMUTABLE} or {@code CONCURRENT}, or be
* <a href="../Spliterator.html#binding">late-binding</a>. Otherwise,
- * {@link #stream(Supplier, int)}} should be used to
- * reduce the scope of potential interference with the source. See
+ * {@link #intStream(java.util.function.Supplier, int, boolean)} should be
+ * used to reduce the scope of potential interference with the source. See
* <a href="package-summary.html#Non-Interference">Non-Interference</a> for
* more details.
*
* @param spliterator a {@code Spliterator.OfInt} describing the stream elements
- * @return a new sequential {@code IntStream}
+ * @param parallel if {@code true} then the returned stream is a parallel
+ * stream; if {@code false} the returned stream is a sequential
+ * stream.
+ * @return a new sequential or parallel {@code IntStream}
*/
- public static IntStream intStream(Spliterator.OfInt spliterator) {
+ public static IntStream intStream(Spliterator.OfInt spliterator, boolean parallel) {
return new IntPipeline.Head<>(spliterator,
StreamOpFlag.fromCharacteristics(spliterator),
- false);
+ parallel);
}
/**
- * Creates a new parallel {@code IntStream} from a {@code Spliterator.OfInt}.
- *
- * <p>he spliterator is only traversed, split, or queried for estimated size
- * after the terminal operation of the stream pipeline commences.
- *
- * <p>It is strongly recommended the spliterator report a characteristic of
- * {@code IMMUTABLE} or {@code CONCURRENT}, or be
- * <a href="../Spliterator.html#binding">late-binding</a>. Otherwise,
- * {@link #stream(Supplier, int)}} should be used to
- * reduce the scope of potential interference with the source. See
- * <a href="package-summary.html#Non-Interference">Non-Interference</a> for
- * more details.
- *
- * @param spliterator a {@code Spliterator.OfInt} describing the stream elements
- * @return a new parallel {@code IntStream}
- */
- public static IntStream intParallelStream(Spliterator.OfInt spliterator) {
- return new IntPipeline.Head<>(spliterator,
- StreamOpFlag.fromCharacteristics(spliterator),
- true);
- }
-
- /**
- * Creates a new sequential {@code IntStream} from a {@code Supplier} of
- * {@code Spliterator.OfInt}.
+ * Creates a new sequential or parallel {@code IntStream} from a
+ * {@code Supplier} of {@code Spliterator.OfInt}.
*
* <p>The {@link Supplier#get()} method will be invoked on the supplier no
* more than once, and after the terminal operation of the stream pipeline
@@ -225,41 +153,8 @@
* <p>For spliterators that report a characteristic of {@code IMMUTABLE}
* or {@code CONCURRENT}, or that are
* <a href="../Spliterator.html#binding">late-binding</a>, it is likely
- * more efficient to use {@link #intStream(Spliterator.OfInt)} instead.
- * The use of a {@code Supplier} in this form provides a level of
- * indirection that reduces the scope of potential interference with the
- * source. Since the supplier is only invoked after the terminal operation
- * commences, any modifications to the source up to the start of the
- * terminal operation are reflected in the stream result. See
- * <a href="package-summary.html#Non-Interference">Non-Interference</a> for
- * more details.
- *
- * @param supplier a {@code Supplier} of a {@code Spliterator.OfInt}
- * @param characteristics Spliterator characteristics of the supplied
- * {@code Spliterator.OfInt}. The characteristics must be equal to
- * {@code source.get().getCharacteristics()}
- * @return a new sequential {@code IntStream}
- * @see #intStream(Spliterator.OfInt)
- */
- public static IntStream intStream(Supplier<? extends Spliterator.OfInt> supplier,
- int characteristics) {
- return new IntPipeline.Head<>(supplier,
- StreamOpFlag.fromCharacteristics(characteristics),
- false);
- }
-
- /**
- * Creates a new parallel {@code IntStream} from a {@code Supplier} of
- * {@code Spliterator.OfInt}.
- *
- * <p>The {@link Supplier#get()} method will be invoked on the supplier no
- * more than once, and after the terminal operation of the stream pipeline
- * commences.
- *
- * <p>For spliterators that report a characteristic of {@code IMMUTABLE}
- * or {@code CONCURRENT}, or that are
- * <a href="../Spliterator.html#binding">late-binding</a>, it is likely
- * more efficient to use {@link #intStream(Spliterator.OfInt)} instead.
+ * more efficient to use {@link #intStream(java.util.Spliterator.OfInt, boolean)}
+ * instead.
* The use of a {@code Supplier} in this form provides a level of
* indirection that reduces the scope of potential interference with the
* source. Since the supplier is only invoked after the terminal operation
@@ -271,19 +166,24 @@
* @param supplier a {@code Supplier} of a {@code Spliterator.OfInt}
* @param characteristics Spliterator characteristics of the supplied
* {@code Spliterator.OfInt}. The characteristics must be equal to
- * {@code source.get().getCharacteristics()}
- * @return a new parallel {@code IntStream}
- * @see #intParallelStream(Spliterator.OfInt)
+ * {@code supplier.get().characteristics()}
+ * @param parallel if {@code true} then the returned stream is a parallel
+ * stream; if {@code false} the returned stream is a sequential
+ * stream.
+ * @return a new sequential or parallel {@code IntStream}
+ * @see #intStream(java.util.Spliterator.OfInt, boolean)
*/
- public static IntStream intParallelStream(Supplier<? extends Spliterator.OfInt> supplier,
- int characteristics) {
+ public static IntStream intStream(Supplier<? extends Spliterator.OfInt> supplier,
+ int characteristics,
+ boolean parallel) {
return new IntPipeline.Head<>(supplier,
StreamOpFlag.fromCharacteristics(characteristics),
- true);
+ parallel);
}
/**
- * Creates a new sequential {@code LongStream} from a {@code Spliterator.OfLong}.
+ * Creates a new sequential or parallel {@code LongStream} from a
+ * {@code Spliterator.OfLong}.
*
* <p>The spliterator is only traversed, split, or queried for estimated
* size after the terminal operation of the stream pipeline commences.
@@ -291,47 +191,27 @@
* <p>It is strongly recommended the spliterator report a characteristic of
* {@code IMMUTABLE} or {@code CONCURRENT}, or be
* <a href="../Spliterator.html#binding">late-binding</a>. Otherwise,
- * {@link #stream(Supplier, int)} should be used to
- * reduce the scope of potential interference with the source. See
- * <a href="package-summary.html#Non-Interference">Non-Interference</a> for
- * more details.
- *
- * @param spliterator a {@code Spliterator.OfLong} describing the stream
- * elements
- * @return a new sequential {@code LongStream}
- */
- public static LongStream longStream(Spliterator.OfLong spliterator) {
- return new LongPipeline.Head<>(spliterator,
- StreamOpFlag.fromCharacteristics(spliterator),
- false);
- }
-
- /**
- * Creates a new parallel {@code LongStream} from a {@code Spliterator.OfLong}.
- *
- * <p>The spliterator is only traversed, split, or queried for estimated
- * size after the terminal operation of the stream pipeline commences.
- *
- * <p>It is strongly recommended the spliterator report a characteristic of
- * {@code IMMUTABLE} or {@code CONCURRENT}, or be
- * <a href="../Spliterator.html#binding">late-binding</a>. Otherwise,
- * {@link #stream(Supplier, int)} should be used to
- * reduce the scope of potential interference with the source. See
+ * {@link #longStream(java.util.function.Supplier, int, boolean)} should be
+ * used to reduce the scope of potential interference with the source. See
* <a href="package-summary.html#Non-Interference">Non-Interference</a> for
* more details.
*
* @param spliterator a {@code Spliterator.OfLong} describing the stream elements
- * @return a new parallel {@code LongStream}
+ * @param parallel if {@code true} then the returned stream is a parallel
+ * stream; if {@code false} the returned stream is a sequential
+ * stream.
+ * @return a new sequential or parallel {@code LongStream}
*/
- public static LongStream longParallelStream(Spliterator.OfLong spliterator) {
+ public static LongStream longStream(Spliterator.OfLong spliterator,
+ boolean parallel) {
return new LongPipeline.Head<>(spliterator,
StreamOpFlag.fromCharacteristics(spliterator),
- true);
+ parallel);
}
/**
- * Creates a new sequential {@code LongStream} from a {@code Supplier} of
- * {@code Spliterator.OfLong}.
+ * Creates a new sequential or parallel {@code LongStream} from a
+ * {@code Supplier} of {@code Spliterator.OfLong}.
*
* <p>The {@link Supplier#get()} method will be invoked on the supplier no
* more than once, and after the terminal operation of the stream pipeline
@@ -340,7 +220,8 @@
* <p>For spliterators that report a characteristic of {@code IMMUTABLE}
* or {@code CONCURRENT}, or that are
* <a href="../Spliterator.html#binding">late-binding</a>, it is likely
- * more efficient to use {@link #longStream(Spliterator.OfLong)} instead.
+ * more efficient to use {@link #longStream(java.util.Spliterator.OfLong, boolean)}
+ * instead.
* The use of a {@code Supplier} in this form provides a level of
* indirection that reduces the scope of potential interference with the
* source. Since the supplier is only invoked after the terminal operation
@@ -352,20 +233,52 @@
* @param supplier a {@code Supplier} of a {@code Spliterator.OfLong}
* @param characteristics Spliterator characteristics of the supplied
* {@code Spliterator.OfLong}. The characteristics must be equal to
- * {@code source.get().getCharacteristics()}
- * @return a new sequential {@code LongStream}
- * @see #longStream(Spliterator.OfLong)
+ * {@code supplier.get().characteristics()}
+ * @param parallel if {@code true} then the returned stream is a parallel
+ * stream; if {@code false} the returned stream is a sequential
+ * stream.
+ * @return a new sequential or parallel {@code LongStream}
+ * @see #longStream(java.util.Spliterator.OfLong, boolean)
*/
public static LongStream longStream(Supplier<? extends Spliterator.OfLong> supplier,
- int characteristics) {
+ int characteristics,
+ boolean parallel) {
return new LongPipeline.Head<>(supplier,
StreamOpFlag.fromCharacteristics(characteristics),
- false);
+ parallel);
}
/**
- * Creates a new parallel {@code LongStream} from a {@code Supplier} of
- * {@code Spliterator.OfLong}.
+ * Creates a new sequential or parallel {@code DoubleStream} from a
+ * {@code Spliterator.OfDouble}.
+ *
+ * <p>The spliterator is only traversed, split, or queried for estimated size
+ * after the terminal operation of the stream pipeline commences.
+ *
+ * <p>It is strongly recommended the spliterator report a characteristic of
+ * {@code IMMUTABLE} or {@code CONCURRENT}, or be
+ * <a href="../Spliterator.html#binding">late-binding</a>. Otherwise,
+ * {@link #doubleStream(java.util.function.Supplier, int, boolean)} should
+ * be used to reduce the scope of potential interference with the source. See
+ * <a href="package-summary.html#Non-Interference">Non-Interference</a> for
+ * more details.
+ *
+ * @param spliterator A {@code Spliterator.OfDouble} describing the stream elements
+ * @param parallel if {@code true} then the returned stream is a parallel
+ * stream; if {@code false} the returned stream is a sequential
+ * stream.
+ * @return a new sequential or parallel {@code DoubleStream}
+ */
+ public static DoubleStream doubleStream(Spliterator.OfDouble spliterator,
+ boolean parallel) {
+ return new DoublePipeline.Head<>(spliterator,
+ StreamOpFlag.fromCharacteristics(spliterator),
+ parallel);
+ }
+
+ /**
+ * Creates a new sequential or parallel {@code DoubleStream} from a
+ * {@code Supplier} of {@code Spliterator.OfDouble}.
*
* <p>The {@link Supplier#get()} method will be invoked on the supplier no
* more than once, and after the terminal operation of the stream pipeline
@@ -374,89 +287,8 @@
* <p>For spliterators that report a characteristic of {@code IMMUTABLE}
* or {@code CONCURRENT}, or that are
* <a href="../Spliterator.html#binding">late-binding</a>, it is likely
- * more efficient to use {@link #longStream(Spliterator.OfLong)} instead.
- * The use of a {@code Supplier} in this form provides a level of
- * indirection that reduces the scope of potential interference with the
- * source. Since the supplier is only invoked after the terminal operation
- * commences, any modifications to the source up to the start of the
- * terminal operation are reflected in the stream result. See
- * <a href="package-summary.html#Non-Interference">Non-Interference</a> for
- * more details.
- *
- * @param supplier A {@code Supplier} of a {@code Spliterator.OfLong}
- * @param characteristics Spliterator characteristics of the supplied
- * {@code Spliterator.OfLong}. The characteristics must be equal to
- * {@code source.get().getCharacteristics()}
- * @return A new parallel {@code LongStream}
- * @see #longParallelStream(Spliterator.OfLong)
- */
- public static LongStream longParallelStream(Supplier<? extends Spliterator.OfLong> supplier,
- int characteristics) {
- return new LongPipeline.Head<>(supplier,
- StreamOpFlag.fromCharacteristics(characteristics),
- true);
- }
-
- /**
- * Creates a new sequential {@code DoubleStream} from a
- * {@code Spliterator.OfDouble}.
- *
- * <p>The spliterator is only traversed, split, or queried for estimated size
- * after the terminal operation of the stream pipeline commences.
- *
- * <p>It is strongly recommended the spliterator report a characteristic of
- * {@code IMMUTABLE} or {@code CONCURRENT}, or be
- * <a href="../Spliterator.html#binding">late-binding</a>. Otherwise,
- * {@link #stream(Supplier, int)} should be used to
- * reduce the scope of potential interference with the source. See
- * <a href="package-summary.html#Non-Interference">Non-Interference</a> for
- * more details.
- *
- * @param spliterator A {@code Spliterator.OfDouble} describing the stream elements
- * @return A new sequential {@code DoubleStream}
- */
- public static DoubleStream doubleStream(Spliterator.OfDouble spliterator) {
- return new DoublePipeline.Head<>(spliterator,
- StreamOpFlag.fromCharacteristics(spliterator),
- false);
- }
-
- /**
- * Creates a new parallel {@code DoubleStream} from a
- * {@code Spliterator.OfDouble}.
- *
- * <p>The spliterator is only traversed, split, or queried for estimated size
- * after the terminal operation of the stream pipeline commences.
- *
- * <p>It is strongly recommended the spliterator report a characteristic of
- * {@code IMMUTABLE} or {@code CONCURRENT}, or be
- * <a href="../Spliterator.html#binding">late-binding</a>. Otherwise,
- * {@link #stream(Supplier, int)} should be used to
- * reduce the scope of potential interference with the source. See
- * <a href="package-summary.html#Non-Interference">Non-Interference</a> for
- * more details.
- *
- * @param spliterator A {@code Spliterator.OfDouble} describing the stream elements
- * @return A new parallel {@code DoubleStream}
- */
- public static DoubleStream doubleParallelStream(Spliterator.OfDouble spliterator) {
- return new DoublePipeline.Head<>(spliterator,
- StreamOpFlag.fromCharacteristics(spliterator),
- true);
- }
-
- /**
- * Creates a new sequential {@code DoubleStream} from a {@code Supplier} of
- * {@code Spliterator.OfDouble}.
- * <p>
- * The {@link Supplier#get()} method will be invoked on the supplier no
- * more than once, and after the terminal operation of the stream pipeline
- * commences.
- * <p>
- * For spliterators that report a characteristic of {@code IMMUTABLE}
- * or {@code CONCURRENT}, or that are
- * <a href="../Spliterator.html#binding">late-binding</a>, it is likely
- * more efficient to use {@link #doubleStream(Spliterator.OfDouble)} instead.
+ * more efficient to use {@link #doubleStream(java.util.Spliterator.OfDouble, boolean)}
+ * instead.
* The use of a {@code Supplier} in this form provides a level of
* indirection that reduces the scope of potential interference with the
* source. Since the supplier is only invoked after the terminal operation
@@ -468,48 +300,18 @@
* @param supplier A {@code Supplier} of a {@code Spliterator.OfDouble}
* @param characteristics Spliterator characteristics of the supplied
* {@code Spliterator.OfDouble}. The characteristics must be equal to
- * {@code source.get().getCharacteristics()}
- * @return A new sequential {@code DoubleStream}
- * @see #doubleStream(Spliterator.OfDouble)
+ * {@code supplier.get().characteristics()}
+ * @param parallel if {@code true} then the returned stream is a parallel
+ * stream; if {@code false} the returned stream is a sequential
+ * stream.
+ * @return a new sequential or parallel {@code DoubleStream}
+ * @see #doubleStream(java.util.Spliterator.OfDouble, boolean)
*/
public static DoubleStream doubleStream(Supplier<? extends Spliterator.OfDouble> supplier,
- int characteristics) {
+ int characteristics,
+ boolean parallel) {
return new DoublePipeline.Head<>(supplier,
StreamOpFlag.fromCharacteristics(characteristics),
- false);
- }
-
- /**
- * Creates a new parallel {@code DoubleStream} from a {@code Supplier} of
- * {@code Spliterator.OfDouble}.
- *
- * <p>The {@link Supplier#get()} method will be invoked on the supplier no
- * more than once, and after the terminal operation of the stream pipeline
- * commences.
- *
- * <p>For spliterators that report a characteristic of {@code IMMUTABLE}
- * or {@code CONCURRENT}, or that are
- * <a href="../Spliterator.html#binding">late-binding</a>, it is likely
- * more efficient to use {@link #doubleStream(Spliterator.OfDouble)} instead.
- * The use of a {@code Supplier} in this form provides a level of
- * indirection that reduces the scope of potential interference with the
- * source. Since the supplier is only invoked after the terminal operation
- * commences, any modifications to the source up to the start of the
- * terminal operation are reflected in the stream result. See
- * <a href="package-summary.html#Non-Interference">Non-Interference</a> for
- * more details.
- *
- * @param supplier a {@code Supplier} of a {@code Spliterator.OfDouble}
- * @param characteristics Spliterator characteristics of the supplied
- * {@code Spliterator.OfDouble}. The characteristics must be equal to
- * {@code source.get().getCharacteristics()}
- * @return a new parallel {@code DoubleStream}
- * @see #doubleParallelStream(Spliterator.OfDouble)
- */
- public static DoubleStream doubleParallelStream(Supplier<? extends Spliterator.OfDouble> supplier,
- int characteristics) {
- return new DoublePipeline.Head<>(supplier,
- StreamOpFlag.fromCharacteristics(characteristics),
- true);
+ parallel);
}
}
--- a/jdk/src/share/classes/java/util/stream/Streams.java Fri Jul 12 12:15:59 2013 -0700
+++ b/jdk/src/share/classes/java/util/stream/Streams.java Wed Jul 03 21:43:49 2013 +0200
@@ -25,10 +25,7 @@
package java.util.stream;
import java.util.Comparator;
-import java.util.Objects;
import java.util.Spliterator;
-import java.util.Spliterators;
-import java.util.function.BiFunction;
import java.util.function.Consumer;
import java.util.function.DoubleConsumer;
import java.util.function.IntConsumer;
@@ -379,7 +376,7 @@
count = -count - 1;
// Use this spliterator if 0 or 1 elements, otherwise use
// the spliterator of the spined buffer
- return (c < 2) ? StreamSupport.stream(this) : StreamSupport.stream(buffer.spliterator());
+ return (c < 2) ? StreamSupport.stream(this, false) : StreamSupport.stream(buffer.spliterator(), false);
}
throw new IllegalStateException();
@@ -466,7 +463,7 @@
count = -count - 1;
// Use this spliterator if 0 or 1 elements, otherwise use
// the spliterator of the spined buffer
- return (c < 2) ? StreamSupport.intStream(this) : StreamSupport.intStream(buffer.spliterator());
+ return (c < 2) ? StreamSupport.intStream(this, false) : StreamSupport.intStream(buffer.spliterator(), false);
}
throw new IllegalStateException();
@@ -553,7 +550,7 @@
count = -count - 1;
// Use this spliterator if 0 or 1 elements, otherwise use
// the spliterator of the spined buffer
- return (c < 2) ? StreamSupport.longStream(this) : StreamSupport.longStream(buffer.spliterator());
+ return (c < 2) ? StreamSupport.longStream(this, false) : StreamSupport.longStream(buffer.spliterator(), false);
}
throw new IllegalStateException();
@@ -640,7 +637,7 @@
count = -count - 1;
// Use this spliterator if 0 or 1 elements, otherwise use
// the spliterator of the spined buffer
- return (c < 2) ? StreamSupport.doubleStream(this) : StreamSupport.doubleStream(buffer.spliterator());
+ return (c < 2) ? StreamSupport.doubleStream(this, false) : StreamSupport.doubleStream(buffer.spliterator(), false);
}
throw new IllegalStateException();
--- a/jdk/src/share/classes/java/util/zip/ZipFile.java Fri Jul 12 12:15:59 2013 -0700
+++ b/jdk/src/share/classes/java/util/zip/ZipFile.java Wed Jul 03 21:43:49 2013 +0200
@@ -551,7 +551,7 @@
return StreamSupport.stream(Spliterators.spliterator(
new ZipEntryIterator(), size(),
Spliterator.ORDERED | Spliterator.DISTINCT |
- Spliterator.IMMUTABLE | Spliterator.NONNULL));
+ Spliterator.IMMUTABLE | Spliterator.NONNULL), false);
}
private ZipEntry getZipEntry(String name, long jzentry) {
--- a/jdk/test/java/util/stream/bootlib/java/util/stream/DoubleStreamTestScenario.java Fri Jul 12 12:15:59 2013 -0700
+++ b/jdk/test/java/util/stream/bootlib/java/util/stream/DoubleStreamTestScenario.java Wed Jul 03 21:43:49 2013 +0200
@@ -140,9 +140,9 @@
void _run(TestData<T, S_IN> data, DoubleConsumer b, Function<S_IN, DoubleStream> m) {
DoubleStream s = m.apply(data.parallelStream());
Spliterator.OfDouble sp = s.spliterator();
- DoubleStream ss = StreamSupport.doubleParallelStream(() -> sp,
- StreamOpFlag.toCharacteristics(OpTestCase.getStreamFlags(s))
- | (sp.getExactSizeIfKnown() < 0 ? 0 : Spliterator.SIZED));
+ DoubleStream ss = StreamSupport.doubleStream(() -> sp,
+ StreamOpFlag.toCharacteristics(OpTestCase.getStreamFlags(s))
+ | (sp.getExactSizeIfKnown() < 0 ? 0 : Spliterator.SIZED), true);
for (double t : ss.toArray())
b.accept(t);
}
--- a/jdk/test/java/util/stream/bootlib/java/util/stream/IntStreamTestScenario.java Fri Jul 12 12:15:59 2013 -0700
+++ b/jdk/test/java/util/stream/bootlib/java/util/stream/IntStreamTestScenario.java Wed Jul 03 21:43:49 2013 +0200
@@ -140,9 +140,10 @@
void _run(TestData<T, S_IN> data, IntConsumer b, Function<S_IN, IntStream> m) {
IntStream s = m.apply(data.parallelStream());
Spliterator.OfInt sp = s.spliterator();
- IntStream ss = StreamSupport.intParallelStream(() -> sp,
- StreamOpFlag.toCharacteristics(OpTestCase.getStreamFlags(s))
- | (sp.getExactSizeIfKnown() < 0 ? 0 : Spliterator.SIZED));
+ IntStream ss = StreamSupport.intStream(() -> sp,
+ StreamOpFlag.toCharacteristics(OpTestCase.getStreamFlags(s))
+ | (sp.getExactSizeIfKnown() < 0 ? 0 : Spliterator.SIZED),
+ true);
for (int t : ss.toArray())
b.accept(t);
}
--- a/jdk/test/java/util/stream/bootlib/java/util/stream/LongStreamTestScenario.java Fri Jul 12 12:15:59 2013 -0700
+++ b/jdk/test/java/util/stream/bootlib/java/util/stream/LongStreamTestScenario.java Wed Jul 03 21:43:49 2013 +0200
@@ -140,9 +140,9 @@
void _run(TestData<T, S_IN> data, LongConsumer b, Function<S_IN, LongStream> m) {
LongStream s = m.apply(data.parallelStream());
Spliterator.OfLong sp = s.spliterator();
- LongStream ss = StreamSupport.longParallelStream(() -> sp,
- StreamOpFlag.toCharacteristics(OpTestCase.getStreamFlags(s))
- | (sp.getExactSizeIfKnown() < 0 ? 0 : Spliterator.SIZED));
+ LongStream ss = StreamSupport.longStream(() -> sp,
+ StreamOpFlag.toCharacteristics(OpTestCase.getStreamFlags(s))
+ | (sp.getExactSizeIfKnown() < 0 ? 0 : Spliterator.SIZED), true);
for (long t : ss.toArray())
b.accept(t);
}
--- a/jdk/test/java/util/stream/bootlib/java/util/stream/StreamTestScenario.java Fri Jul 12 12:15:59 2013 -0700
+++ b/jdk/test/java/util/stream/bootlib/java/util/stream/StreamTestScenario.java Wed Jul 03 21:43:49 2013 +0200
@@ -151,9 +151,9 @@
void _run(TestData<T, S_IN> data, Consumer<U> b, Function<S_IN, Stream<U>> m) {
Stream<U> s = m.apply(data.parallelStream());
Spliterator<U> sp = s.spliterator();
- Stream<U> ss = StreamSupport.parallelStream(() -> sp,
- StreamOpFlag.toCharacteristics(OpTestCase.getStreamFlags(s))
- | (sp.getExactSizeIfKnown() < 0 ? 0 : Spliterator.SIZED));
+ Stream<U> ss = StreamSupport.stream(() -> sp,
+ StreamOpFlag.toCharacteristics(OpTestCase.getStreamFlags(s))
+ | (sp.getExactSizeIfKnown() < 0 ? 0 : Spliterator.SIZED), true);
for (Object t : ss.toArray())
b.accept((U) t);
}
--- a/jdk/test/java/util/stream/bootlib/java/util/stream/TestData.java Fri Jul 12 12:15:59 2013 -0700
+++ b/jdk/test/java/util/stream/bootlib/java/util/stream/TestData.java Wed Jul 03 21:43:49 2013 +0200
@@ -87,8 +87,8 @@
public static <T> OfRef<T> ofSpinedBuffer(String name, SpinedBuffer<T> buffer) {
return new AbstractTestData.RefTestData<>(name, buffer,
- b -> StreamSupport.stream(b.spliterator()),
- b -> StreamSupport.parallelStream(b.spliterator()),
+ b -> StreamSupport.stream(b.spliterator(), false),
+ b -> StreamSupport.stream(b.spliterator(), true),
SpinedBuffer::spliterator,
b -> (int) b.count());
}
@@ -103,8 +103,8 @@
public static <T> OfRef<T> ofRefNode(String name, Node<T> node) {
return new AbstractTestData.RefTestData<>(name, node,
- n -> StreamSupport.stream(n::spliterator, Spliterator.SIZED | Spliterator.ORDERED),
- n -> StreamSupport.parallelStream(n::spliterator, Spliterator.SIZED | Spliterator.ORDERED),
+ n -> StreamSupport.stream(n::spliterator, Spliterator.SIZED | Spliterator.ORDERED, false),
+ n -> StreamSupport.stream(n::spliterator, Spliterator.SIZED | Spliterator.ORDERED, true),
Node::spliterator,
n -> (int) n.count());
}
@@ -117,8 +117,8 @@
public static OfInt ofSpinedBuffer(String name, SpinedBuffer.OfInt buffer) {
return new AbstractTestData.IntTestData<>(name, buffer,
- b -> StreamSupport.intStream(b.spliterator()),
- b -> StreamSupport.intParallelStream(b.spliterator()),
+ b -> StreamSupport.intStream(b.spliterator(), false),
+ b -> StreamSupport.intStream(b.spliterator(), true),
SpinedBuffer.OfInt::spliterator,
b -> (int) b.count());
}
@@ -134,8 +134,8 @@
public static OfInt ofNode(String name, Node.OfInt node) {
int characteristics = Spliterator.SIZED | Spliterator.ORDERED;
return new AbstractTestData.IntTestData<>(name, node,
- n -> StreamSupport.intStream(n::spliterator, characteristics),
- n -> StreamSupport.intParallelStream(n::spliterator, characteristics),
+ n -> StreamSupport.intStream(n::spliterator, characteristics, false),
+ n -> StreamSupport.intStream(n::spliterator, characteristics, true),
Node.OfInt::spliterator,
n -> (int) n.count());
}
@@ -148,8 +148,8 @@
public static OfLong ofSpinedBuffer(String name, SpinedBuffer.OfLong buffer) {
return new AbstractTestData.LongTestData<>(name, buffer,
- b -> StreamSupport.longStream(b.spliterator()),
- b -> StreamSupport.longParallelStream(b.spliterator()),
+ b -> StreamSupport.longStream(b.spliterator(), false),
+ b -> StreamSupport.longStream(b.spliterator(), true),
SpinedBuffer.OfLong::spliterator,
b -> (int) b.count());
}
@@ -165,8 +165,8 @@
public static OfLong ofNode(String name, Node.OfLong node) {
int characteristics = Spliterator.SIZED | Spliterator.ORDERED;
return new AbstractTestData.LongTestData<>(name, node,
- n -> StreamSupport.longStream(n::spliterator, characteristics),
- n -> StreamSupport.longParallelStream(n::spliterator, characteristics),
+ n -> StreamSupport.longStream(n::spliterator, characteristics, false),
+ n -> StreamSupport.longStream(n::spliterator, characteristics, true),
Node.OfLong::spliterator,
n -> (int) n.count());
}
@@ -179,8 +179,8 @@
public static OfDouble ofSpinedBuffer(String name, SpinedBuffer.OfDouble buffer) {
return new AbstractTestData.DoubleTestData<>(name, buffer,
- b -> StreamSupport.doubleStream(b.spliterator()),
- b -> StreamSupport.doubleParallelStream(b.spliterator()),
+ b -> StreamSupport.doubleStream(b.spliterator(), false),
+ b -> StreamSupport.doubleStream(b.spliterator(), true),
SpinedBuffer.OfDouble::spliterator,
b -> (int) b.count());
}
@@ -196,8 +196,8 @@
public static OfDouble ofNode(String name, Node.OfDouble node) {
int characteristics = Spliterator.SIZED | Spliterator.ORDERED;
return new AbstractTestData.DoubleTestData<>(name, node,
- n -> StreamSupport.doubleStream(n::spliterator, characteristics),
- n -> StreamSupport.doubleParallelStream(n::spliterator, characteristics),
+ n -> StreamSupport.doubleStream(n::spliterator, characteristics, false),
+ n -> StreamSupport.doubleStream(n::spliterator, characteristics, true),
Node.OfDouble::spliterator,
n -> (int) n.count());
}
--- a/jdk/test/java/util/stream/test/org/openjdk/tests/java/util/stream/DistinctOpTest.java Fri Jul 12 12:15:59 2013 -0700
+++ b/jdk/test/java/util/stream/test/org/openjdk/tests/java/util/stream/DistinctOpTest.java Wed Jul 03 21:43:49 2013 +0200
@@ -86,8 +86,8 @@
static class SortedTestData<T> extends TestData.AbstractTestData.RefTestData<T, List<T>> {
SortedTestData(List<T> coll) {
super("SortedTestData", coll,
- c -> StreamSupport.stream(Spliterators.spliterator(c.toArray(), Spliterator.ORDERED | Spliterator.SORTED)),
- c -> StreamSupport.parallelStream(Spliterators.spliterator(c.toArray(), Spliterator.ORDERED | Spliterator.SORTED)),
+ c -> StreamSupport.stream(Spliterators.spliterator(c.toArray(), Spliterator.ORDERED | Spliterator.SORTED), false),
+ c -> StreamSupport.stream(Spliterators.spliterator(c.toArray(), Spliterator.ORDERED | Spliterator.SORTED), true),
c -> Spliterators.spliterator(c.toArray(), Spliterator.ORDERED | Spliterator.SORTED),
List::size);
}
--- a/jdk/test/java/util/stream/test/org/openjdk/tests/java/util/stream/InfiniteStreamWithLimitOpTest.java Fri Jul 12 12:15:59 2013 -0700
+++ b/jdk/test/java/util/stream/test/org/openjdk/tests/java/util/stream/InfiniteStreamWithLimitOpTest.java Wed Jul 03 21:43:49 2013 +0200
@@ -306,7 +306,7 @@
private TestData.OfLong proxiedLongRange(long l, long u) {
return TestData.Factory.ofLongSupplier(
String.format("[%d, %d)", l, u),
- () -> StreamSupport.longStream(proxyNotSubsized(LongStream.range(l, u).spliterator())));
+ () -> StreamSupport.longStream(proxyNotSubsized(LongStream.range(l, u).spliterator()), false));
}
@Test(dataProvider = "Stream.limit")
--- a/jdk/test/java/util/stream/test/org/openjdk/tests/java/util/stream/MatchOpTest.java Fri Jul 12 12:15:59 2013 -0700
+++ b/jdk/test/java/util/stream/test/org/openjdk/tests/java/util/stream/MatchOpTest.java Wed Jul 03 21:43:49 2013 +0200
@@ -155,7 +155,7 @@
}
Supplier<Iterator<Integer>> source = () -> Arrays.asList(1, 2, 3, 4).iterator();
- Supplier<Stream<Integer>> s = () -> StreamSupport.stream(Spliterators.spliteratorUnknownSize(new CycleIterator(source), 0));
+ Supplier<Stream<Integer>> s = () -> StreamSupport.stream(Spliterators.spliteratorUnknownSize(new CycleIterator(source), 0), false);
assertFalse(s.get().allMatch(i -> i > 3));
assertTrue(s.get().anyMatch(i -> i > 3));
@@ -240,7 +240,7 @@
}
Supplier<PrimitiveIterator.OfInt> source = () -> Arrays.stream(new int[]{1, 2, 3, 4}).iterator();
- Supplier<IntStream> s = () -> StreamSupport.intStream(Spliterators.spliteratorUnknownSize(new CycleIterator(source), 0));
+ Supplier<IntStream> s = () -> StreamSupport.intStream(Spliterators.spliteratorUnknownSize(new CycleIterator(source), 0), false);
assertFalse(s.get().allMatch(i -> i > 3));
assertTrue(s.get().anyMatch(i -> i > 3));
@@ -325,7 +325,7 @@
}
Supplier<PrimitiveIterator.OfLong> source = () -> Arrays.stream(new long[]{1, 2, 3, 4}).iterator();
- Supplier<LongStream> s = () -> StreamSupport.longStream(Spliterators.spliteratorUnknownSize(new CycleIterator(source), 0));
+ Supplier<LongStream> s = () -> StreamSupport.longStream(Spliterators.spliteratorUnknownSize(new CycleIterator(source), 0), false);
assertFalse(s.get().allMatch(i -> i > 3));
assertTrue(s.get().anyMatch(i -> i > 3));
@@ -410,7 +410,7 @@
}
Supplier<PrimitiveIterator.OfDouble> source = () -> Arrays.stream(new double[]{1, 2, 3, 4}).iterator();
- Supplier<DoubleStream> s = () -> StreamSupport.doubleStream(Spliterators.spliteratorUnknownSize(new CycleIterator(source), 0));
+ Supplier<DoubleStream> s = () -> StreamSupport.doubleStream(Spliterators.spliteratorUnknownSize(new CycleIterator(source), 0), false);
assertFalse(s.get().allMatch(i -> i > 3));
assertTrue(s.get().anyMatch(i -> i > 3));
--- a/jdk/test/java/util/stream/test/org/openjdk/tests/java/util/stream/SliceOpTest.java Fri Jul 12 12:15:59 2013 -0700
+++ b/jdk/test/java/util/stream/test/org/openjdk/tests/java/util/stream/SliceOpTest.java Wed Jul 03 21:43:49 2013 +0200
@@ -237,7 +237,7 @@
List<Integer> list = IntStream.range(0, 100).boxed().collect(Collectors.toList());
TestData.OfRef<Integer> data = TestData.Factory.ofSupplier(
"Non splitting, not SUBSIZED, ORDERED, stream",
- () -> StreamSupport.stream(new NonSplittingNotSubsizedOrderedSpliterator<>(list.spliterator())));
+ () -> StreamSupport.stream(new NonSplittingNotSubsizedOrderedSpliterator<>(list.spliterator()), false));
testSkipLimitOps("testSkipLimitOpsWithNonSplittingSpliterator", data);
}
--- a/jdk/test/java/util/stream/test/org/openjdk/tests/java/util/stream/SortedOpTest.java Fri Jul 12 12:15:59 2013 -0700
+++ b/jdk/test/java/util/stream/test/org/openjdk/tests/java/util/stream/SortedOpTest.java Wed Jul 03 21:43:49 2013 +0200
@@ -78,7 +78,7 @@
}
private <T> Stream<T> unknownSizeStream(List<T> l) {
- return StreamSupport.stream(Spliterators.spliteratorUnknownSize(l.iterator(), 0));
+ return StreamSupport.stream(Spliterators.spliteratorUnknownSize(l.iterator(), 0), false);
}
@Test(dataProvider = "StreamTestData<Integer>", dataProviderClass = StreamTestDataProvider.class)
@@ -150,7 +150,7 @@
}
private IntStream unknownSizeIntStream(int[] a) {
- return StreamSupport.intStream(Spliterators.spliteratorUnknownSize(Spliterators.iterator(Arrays.spliterator(a)), 0));
+ return StreamSupport.intStream(Spliterators.spliteratorUnknownSize(Spliterators.iterator(Arrays.spliterator(a)), 0), false);
}
@Test(dataProvider = "IntStreamTestData", dataProviderClass = IntStreamTestDataProvider.class)
@@ -193,7 +193,7 @@
}
private LongStream unknownSizeLongStream(long[] a) {
- return StreamSupport.longStream(Spliterators.spliteratorUnknownSize(Spliterators.iterator(Arrays.spliterator(a)), 0));
+ return StreamSupport.longStream(Spliterators.spliteratorUnknownSize(Spliterators.iterator(Arrays.spliterator(a)), 0), false);
}
@Test(dataProvider = "LongStreamTestData", dataProviderClass = LongStreamTestDataProvider.class)
@@ -236,7 +236,7 @@
}
private DoubleStream unknownSizeDoubleStream(double[] a) {
- return StreamSupport.doubleStream(Spliterators.spliteratorUnknownSize(Spliterators.iterator(Arrays.spliterator(a)), 0));
+ return StreamSupport.doubleStream(Spliterators.spliteratorUnknownSize(Spliterators.iterator(Arrays.spliterator(a)), 0), false);
}
@Test(dataProvider = "DoubleStreamTestData", dataProviderClass = DoubleStreamTestDataProvider.class)
--- a/jdk/test/java/util/stream/test/org/openjdk/tests/java/util/stream/StreamSpliteratorTest.java Fri Jul 12 12:15:59 2013 -0700
+++ b/jdk/test/java/util/stream/test/org/openjdk/tests/java/util/stream/StreamSpliteratorTest.java Wed Jul 03 21:43:49 2013 +0200
@@ -266,7 +266,7 @@
setContext("proxyEstimateSize", proxyEstimateSize);
Spliterator<Integer> sp = intermediateOp.apply(l.stream()).spliterator();
ProxyNoExactSizeSpliterator<Integer> psp = new ProxyNoExactSizeSpliterator<>(sp, proxyEstimateSize);
- Stream<Integer> s = StreamSupport.parallelStream(psp);
+ Stream<Integer> s = StreamSupport.stream(psp, true);
terminalOp.accept(s);
Assert.assertTrue(psp.splits > 0,
String.format("Number of splits should be greater that zero when proxyEstimateSize is %s",
@@ -290,14 +290,14 @@
withData(data).
stream((Stream<Integer> in) -> {
Stream<Integer> out = f.apply(in);
- return StreamSupport.stream(() -> out.spliterator(), OpTestCase.getStreamFlags(out));
+ return StreamSupport.stream(() -> out.spliterator(), OpTestCase.getStreamFlags(out), false);
}).
exercise();
withData(data).
stream((Stream<Integer> in) -> {
Stream<Integer> out = f.apply(in);
- return StreamSupport.parallelStream(() -> out.spliterator(), OpTestCase.getStreamFlags(out));
+ return StreamSupport.stream(() -> out.spliterator(), OpTestCase.getStreamFlags(out), true);
}).
exercise();
}
@@ -362,7 +362,7 @@
// @@@ Need way to obtain the target size
Spliterator.OfInt sp = intermediateOp.apply(IntStream.range(0, 1000)).spliterator();
ProxyNoExactSizeSpliterator.OfInt psp = new ProxyNoExactSizeSpliterator.OfInt(sp, proxyEstimateSize);
- IntStream s = StreamSupport.intParallelStream(psp);
+ IntStream s = StreamSupport.intStream(psp, true);
terminalOp.accept(s);
Assert.assertTrue(psp.splits > 0,
String.format("Number of splits should be greater that zero when proxyEstimateSize is %s",
@@ -386,14 +386,14 @@
withData(data).
stream(in -> {
IntStream out = f.apply(in);
- return StreamSupport.intStream(() -> out.spliterator(), OpTestCase.getStreamFlags(out));
+ return StreamSupport.intStream(() -> out.spliterator(), OpTestCase.getStreamFlags(out), false);
}).
exercise();
withData(data).
stream((in) -> {
IntStream out = f.apply(in);
- return StreamSupport.intParallelStream(() -> out.spliterator(), OpTestCase.getStreamFlags(out));
+ return StreamSupport.intStream(() -> out.spliterator(), OpTestCase.getStreamFlags(out), true);
}).
exercise();
}
@@ -455,7 +455,7 @@
// @@@ Need way to obtain the target size
Spliterator.OfLong sp = intermediateOp.apply(LongStream.range(0, 1000)).spliterator();
ProxyNoExactSizeSpliterator.OfLong psp = new ProxyNoExactSizeSpliterator.OfLong(sp, proxyEstimateSize);
- LongStream s = StreamSupport.longParallelStream(psp);
+ LongStream s = StreamSupport.longStream(psp, true);
terminalOp.accept(s);
Assert.assertTrue(psp.splits > 0,
String.format("Number of splits should be greater that zero when proxyEstimateSize is %s",
@@ -479,14 +479,14 @@
withData(data).
stream(in -> {
LongStream out = f.apply(in);
- return StreamSupport.longStream(() -> out.spliterator(), OpTestCase.getStreamFlags(out));
+ return StreamSupport.longStream(() -> out.spliterator(), OpTestCase.getStreamFlags(out), false);
}).
exercise();
withData(data).
stream((in) -> {
LongStream out = f.apply(in);
- return StreamSupport.longParallelStream(() -> out.spliterator(), OpTestCase.getStreamFlags(out));
+ return StreamSupport.longStream(() -> out.spliterator(), OpTestCase.getStreamFlags(out), true);
}).
exercise();
}
@@ -548,7 +548,7 @@
// @@@ Need way to obtain the target size
Spliterator.OfDouble sp = intermediateOp.apply(IntStream.range(0, 1000).asDoubleStream()).spliterator();
ProxyNoExactSizeSpliterator.OfDouble psp = new ProxyNoExactSizeSpliterator.OfDouble(sp, proxyEstimateSize);
- DoubleStream s = StreamSupport.doubleParallelStream(psp);
+ DoubleStream s = StreamSupport.doubleStream(psp, true);
terminalOp.accept(s);
Assert.assertTrue(psp.splits > 0,
String.format("Number of splits should be greater that zero when proxyEstimateSize is %s",
@@ -572,14 +572,14 @@
withData(data).
stream(in -> {
DoubleStream out = f.apply(in);
- return StreamSupport.doubleStream(() -> out.spliterator(), OpTestCase.getStreamFlags(out));
+ return StreamSupport.doubleStream(() -> out.spliterator(), OpTestCase.getStreamFlags(out), false);
}).
exercise();
withData(data).
stream((in) -> {
DoubleStream out = f.apply(in);
- return StreamSupport.doubleParallelStream(() -> out.spliterator(), OpTestCase.getStreamFlags(out));
+ return StreamSupport.doubleStream(() -> out.spliterator(), OpTestCase.getStreamFlags(out), true);
}).
exercise();
}