From 0d6cc122744df002e35f0788eab28bbd492c46ed Mon Sep 17 00:00:00 2001 From: Koy Date: Thu, 16 Sep 2021 16:13:29 +0800 Subject: [PATCH 1/2] Fix collectionToDelimitedString failure for null elements. Prior to this commit, calling `StringUtils#collectionToDelimitedString` would fail with an NPE if the collection contains null elements. This commit ensures that null elements are converted as `"null"` in the resulting String without failure. See gh-27419 --- .../src/main/java/org/springframework/util/StringUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-core/src/main/java/org/springframework/util/StringUtils.java b/spring-core/src/main/java/org/springframework/util/StringUtils.java index 80a996d481..269257fd60 100644 --- a/spring-core/src/main/java/org/springframework/util/StringUtils.java +++ b/spring-core/src/main/java/org/springframework/util/StringUtils.java @@ -1301,7 +1301,7 @@ public abstract class StringUtils { int totalLength = coll.size() * (prefix.length() + suffix.length()) + (coll.size() - 1) * delim.length(); for (Object element : coll) { - totalLength += element.toString().length(); + totalLength += String.valueOf(element).length(); } StringBuilder sb = new StringBuilder(totalLength); From a50537fbaf3f6067071de5bcafa6052d1ac564fd Mon Sep 17 00:00:00 2001 From: Brian Clozel Date: Fri, 17 Sep 2021 15:15:51 +0200 Subject: [PATCH 2/2] Polish "Fix collectionToDelimitedString failure for null elements." Fixes gh-27419 --- .../java/org/springframework/util/StringUtilsTests.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/spring-core/src/test/java/org/springframework/util/StringUtilsTests.java b/spring-core/src/test/java/org/springframework/util/StringUtilsTests.java index 2aae6260dd..2b46f73a56 100644 --- a/spring-core/src/test/java/org/springframework/util/StringUtilsTests.java +++ b/spring-core/src/test/java/org/springframework/util/StringUtilsTests.java @@ -17,6 +17,7 @@ package org.springframework.util; import java.util.Arrays; +import java.util.Collections; import java.util.Locale; import java.util.Properties; @@ -777,4 +778,9 @@ class StringUtilsTests { assertThat(StringUtils.split(null, null)).isNull(); } + @Test + void collectionToDelimitedStringWithNullValuesShouldNotFail() { + assertThat(StringUtils.collectionToCommaDelimitedString(Collections.singletonList(null))).isEqualTo("null"); + } + }