You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2022/08/12 18:36:12 UTC

[commons-lang] 02/03: StringUtils.join(Iterator, String) should only return null when the Iterator is null

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

commit ec93f3b7f59a6f6bc489bc3ffda932a6ca9fe6ca
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Fri Aug 12 14:30:09 2022 -0400

    StringUtils.join(Iterator, String) should only return null when the
    Iterator is null
---
 src/changes/changes.xml                                     |  1 +
 src/main/java/org/apache/commons/lang3/StringUtils.java     | 12 ++++--------
 src/test/java/org/apache/commons/lang3/StringUtilsTest.java |  1 +
 3 files changed, 6 insertions(+), 8 deletions(-)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 5d2d1f74a..0c20ea868 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -90,6 +90,7 @@ The <action> type attribute can be add,update,fix,remove.
     <action                   type="fix" dev="ggregory" due-to="guicaiyue">Javadoc: StringUtils.repeat("", "x", 3) = "xx"; #918.</action>
     <action                   type="fix" dev="ggregory" due-to="Marc Wrobel">Fix typos #920, #923.</action>
     <action                   type="fix" dev="ggregory" due-to="Bhimantoro Suryo Admodjo">Simplify condition #925.</action>
+    <action                   type="fix" dev="ggregory" due-to="Gary Gregory">StringUtils.join(Iterable, String) should only return null when the Iterable is null.</action>
     <action                   type="fix" dev="ggregory" due-to="Gary Gregory">StringUtils.join(Iterator, String) should only return null when the Iterator is null.</action>
     <!-- ADD -->
     <action                   type="add" dev="ggregory" due-to="Gary Gregory">Add GitHub coverage.yml.</action>
diff --git a/src/main/java/org/apache/commons/lang3/StringUtils.java b/src/main/java/org/apache/commons/lang3/StringUtils.java
index b316b1468..573b652fd 100644
--- a/src/main/java/org/apache/commons/lang3/StringUtils.java
+++ b/src/main/java/org/apache/commons/lang3/StringUtils.java
@@ -4394,23 +4394,19 @@ public class StringUtils {
         if (!iterator.hasNext()) {
             return EMPTY;
         }
-        final Object first = iterator.next();
-        if (!iterator.hasNext()) {
-            return toStringOrEmpty(first);
-        }
 
         // two or more elements
         final StringBuilder buf = new StringBuilder(STRING_BUILDER_SIZE); // Java default is 16, probably too small
-        if (first != null) {
-            buf.append(first);
-        }
 
         while (iterator.hasNext()) {
-            buf.append(separator);
             final Object obj = iterator.next();
             if (obj != null) {
                 buf.append(obj);
             }
+            if (iterator.hasNext()) {
+                buf.append(separator);
+            }
+
         }
 
         return buf.toString();
diff --git a/src/test/java/org/apache/commons/lang3/StringUtilsTest.java b/src/test/java/org/apache/commons/lang3/StringUtilsTest.java
index 4ef061b91..bc5aeef80 100644
--- a/src/test/java/org/apache/commons/lang3/StringUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/StringUtilsTest.java
@@ -1292,6 +1292,7 @@ public class StringUtilsTest extends AbstractLangTest {
         assertEquals("", StringUtils.join(Arrays.asList(NULL_ARRAY_LIST).iterator(), SEPARATOR_CHAR));
         assertEquals("", StringUtils.join(Arrays.asList(EMPTY_ARRAY_LIST).iterator(), SEPARATOR_CHAR));
         assertEquals("foo", StringUtils.join(Collections.singleton("foo").iterator(), 'x'));
+        assertEquals("null", StringUtils.join(Arrays.asList(NULL_TO_STRING_LIST).iterator(), SEPARATOR_CHAR));
     }
 
     @Test