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&gt;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&gt;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))

Reply via email to