JAMES-2235 add a vararg API to flatten
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/22495689 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/22495689 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/22495689 Branch: refs/heads/master Commit: 22495689fb83beea66607dbd4caa5094389c070f Parents: a5dc56d Author: Matthieu Baechler <[email protected]> Authored: Wed Nov 29 10:42:51 2017 +0100 Committer: Matthieu Baechler <[email protected]> Committed: Wed Nov 29 10:55:57 2017 +0100 ---------------------------------------------------------------------- .../java/org/apache/james/util/StreamUtils.java | 11 ++++++++-- .../org/apache/james/util/StreamUtilsTest.java | 21 ++++++++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/22495689/server/container/util-java8/src/main/java/org/apache/james/util/StreamUtils.java ---------------------------------------------------------------------- diff --git a/server/container/util-java8/src/main/java/org/apache/james/util/StreamUtils.java b/server/container/util-java8/src/main/java/org/apache/james/util/StreamUtils.java index f980802..4036ae5 100644 --- a/server/container/util-java8/src/main/java/org/apache/james/util/StreamUtils.java +++ b/server/container/util-java8/src/main/java/org/apache/james/util/StreamUtils.java @@ -19,16 +19,23 @@ package org.apache.james.util; +import java.util.Arrays; import java.util.Collection; import java.util.function.Function; import java.util.stream.Stream; public class StreamUtils { - public static <T> Stream<T> flatten(Collection<Stream<T>> streams) { + + public static <T> Stream<T> flatten(Collection<Stream<T>> streams) { return flatten(streams.stream()); } - public static <T> Stream<T> flatten(Stream<Stream<T>> streams) { + public static <T> Stream<T> flatten(Stream<Stream<T>> streams) { return streams.flatMap(Function.identity()); } + + @SafeVarargs + public static <T> Stream<T> flatten(Stream<T>... streams) { + return flatten(Arrays.stream(streams)); + } } http://git-wip-us.apache.org/repos/asf/james-project/blob/22495689/server/container/util-java8/src/test/java/org/apache/james/util/StreamUtilsTest.java ---------------------------------------------------------------------- diff --git a/server/container/util-java8/src/test/java/org/apache/james/util/StreamUtilsTest.java b/server/container/util-java8/src/test/java/org/apache/james/util/StreamUtilsTest.java index c14cd4c..13729f4 100644 --- a/server/container/util-java8/src/test/java/org/apache/james/util/StreamUtilsTest.java +++ b/server/container/util-java8/src/test/java/org/apache/james/util/StreamUtilsTest.java @@ -20,6 +20,7 @@ package org.apache.james.util; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; import java.util.stream.Stream; @@ -77,4 +78,24 @@ public class StreamUtilsTest { .containsExactly(1, 2, 3); } + @Test + public void flattenShouldAcceptEmptyVarArg() { + assertThat( + StreamUtils.flatten() + .collect(Guavate.toImmutableList())) + .isEmpty(); + } + + @Test + public void flattenShouldThrowOnNullVarArg() { + Stream<String>[] streams = null; + assertThatThrownBy(() -> StreamUtils.flatten(streams).collect(Guavate.toImmutableList())) + .isInstanceOf(NullPointerException.class); + } + + @Test + public void flattenShouldFlattenNonEmptyVarArg() { + assertThat(StreamUtils.flatten(Stream.of(1), Stream.of(2)).collect(Guavate.toImmutableList())) + .containsExactly(1, 2); + } } \ No newline at end of file --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
