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 <garydgreg...@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