This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-lang.git
The following commit(s) were added to refs/heads/master by this push: new 5c6de5a Add and use null-safe Streams.of(T[]). 5c6de5a is described below commit 5c6de5a7a0226b96e839381cc4ff96eb66fd5295 Author: Gary Gregory <garydgreg...@gmail.com> AuthorDate: Thu Jul 1 14:46:15 2021 -0400 Add and use null-safe Streams.of(T[]). --- src/changes/changes.xml | 1 + src/main/java/org/apache/commons/lang3/ArchUtils.java | 4 ++-- src/main/java/org/apache/commons/lang3/stream/Streams.java | 13 +++++++++++++ .../java/org/apache/commons/lang3/stream/StreamsTest.java | 7 +++++++ 4 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 314a068..bf8f492 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -59,6 +59,7 @@ The <action> type attribute can be add,update,fix,remove. <action type="add" dev="ggregory" due-to="Gary Gregory">Add and use ClassUtils.getComponentType(Class>T[]>).</action> <action type="add" dev="ggregory" due-to="Gary Gregory">Add and use ObjectUtils.getClass(T).</action> <action type="add" dev="ggregory" due-to="Gary Gregory">Add and use ArrayUtils.newInstance(Class>T>, int).</action> + <action type="add" dev="ggregory" due-to="Gary Gregory">Add and use null-safe Streams.of(T...).</action> <!-- UPDATE --> <action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump spotbugs-maven-plugin from 4.2.0 to 4.2.3 #735.</action> <action type="update" dev="ggregory" due-to="Dependabot, XenoAmess">Bump Bump actions/cache from v2.1.4 to v2.1.6 #742, #752, #764.</action> diff --git a/src/main/java/org/apache/commons/lang3/ArchUtils.java b/src/main/java/org/apache/commons/lang3/ArchUtils.java index 20ba2fb..dffb9c8 100644 --- a/src/main/java/org/apache/commons/lang3/ArchUtils.java +++ b/src/main/java/org/apache/commons/lang3/ArchUtils.java @@ -18,9 +18,9 @@ package org.apache.commons.lang3; import java.util.HashMap; import java.util.Map; -import java.util.stream.Stream; import org.apache.commons.lang3.arch.Processor; +import org.apache.commons.lang3.stream.Streams; /** * An utility class for the os.arch System Property. The class defines methods for @@ -101,7 +101,7 @@ public class ArchUtils { * @throws IllegalStateException If the key already exists. */ private static void addProcessors(final Processor processor, final String... keys) { - Stream.of(keys).forEach(e -> addProcessor(e, processor)); + Streams.of(keys).forEach(e -> addProcessor(e, processor)); } /** diff --git a/src/main/java/org/apache/commons/lang3/stream/Streams.java b/src/main/java/org/apache/commons/lang3/stream/Streams.java index 7022210..cf89da7 100644 --- a/src/main/java/org/apache/commons/lang3/stream/Streams.java +++ b/src/main/java/org/apache/commons/lang3/stream/Streams.java @@ -417,6 +417,19 @@ public class Streams { } /** + * Null-safe version of {@link Stream#of(Object[])}. + * + * @param <T> the type of stream elements. + * @param values the elements of the new stream, may be {@code null}. + * @return the new stream on {@code values} or {@link Stream#empty()}. + * @since 3.13.0 + */ + @SafeVarargs // Creating a stream from an array is safe + public static <T> Stream<T> of(T... values) { + return values == null ? Stream.empty() : Stream.of(values); + } + + /** * Converts the given {@link Collection} into a {@link FailableStream}. This is basically a simplified, reduced * version of the {@link Stream} class, with the same underlying element stream, except that failable objects, like * {@link FailablePredicate}, {@link FailableFunction}, or {@link FailableConsumer} may be applied, instead of diff --git a/src/test/java/org/apache/commons/lang3/stream/StreamsTest.java b/src/test/java/org/apache/commons/lang3/stream/StreamsTest.java index 5910cb7..0d888f7 100644 --- a/src/test/java/org/apache/commons/lang3/stream/StreamsTest.java +++ b/src/test/java/org/apache/commons/lang3/stream/StreamsTest.java @@ -136,6 +136,13 @@ public class StreamsTest { } @Test + public void testOf() { + assertEquals(0, Streams.of((Object[]) null).count()); + assertEquals(1, Streams.of("foo").count()); + assertEquals(2, Streams.of("foo", "bar").count()); + } + + @Test public void testSimpleStreamFilter() { final List<String> input = Arrays.asList("1", "2", "3", "4", "5", "6"); final List<Integer> output = Failable.stream(input).map(Integer::valueOf).filter(i -> (i.intValue() % 2 == 0))