From 75f12374003b6e140fa7d15769a0dc8e211b57cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Mat=C3=A8rne?= Date: Fri, 29 Apr 2016 11:49:30 +0200 Subject: [PATCH] StringUtils.join: new method --- .../apache/tools/ant/util/StringUtils.java | 25 ++++++++++++ .../tools/ant/util/StringUtilsTest.java | 40 +++++++++++++++---- 2 files changed, 57 insertions(+), 8 deletions(-) diff --git a/src/main/org/apache/tools/ant/util/StringUtils.java b/src/main/org/apache/tools/ant/util/StringUtils.java index 626fb224b..fc2fb46e9 100644 --- a/src/main/org/apache/tools/ant/util/StringUtils.java +++ b/src/main/org/apache/tools/ant/util/StringUtils.java @@ -19,7 +19,10 @@ package org.apache.tools.ant.util; import java.io.PrintWriter; import java.io.StringWriter; +import java.util.Arrays; +import java.util.Collection; import java.util.Vector; +import java.util.stream.Collectors; import org.apache.tools.ant.BuildException; @@ -270,4 +273,26 @@ public final class StringUtils { return string; } } + + /** + * Joins the string representation of the elements of a collection to + * a joined string with a given separator. + * @param collection Collection of the data to be joined (may be null) + * @param separator Separator between elements (may be null) + * @return the joined string + */ + public static String join(Collection collection, CharSequence separator) { + return collection.stream().map( o -> String.valueOf(o) ).collect(Collectors.joining(separator)); + } + + /** + * Joins the string representation of the elements of an array to + * a joined string with a given separator. + * @param array Array of the data to be joined (may be null) + * @param separator Separator between elements (may be null) + * @return the joined string + */ + public static String join(Object[] array, CharSequence separator) { + return join(Arrays.asList(array), separator); + } } diff --git a/src/tests/junit/org/apache/tools/ant/util/StringUtilsTest.java b/src/tests/junit/org/apache/tools/ant/util/StringUtilsTest.java index 4dc43ee82..81ea3c648 100644 --- a/src/tests/junit/org/apache/tools/ant/util/StringUtilsTest.java +++ b/src/tests/junit/org/apache/tools/ant/util/StringUtilsTest.java @@ -17,14 +17,16 @@ */ package org.apache.tools.ant.util; -import java.util.Vector; - -import org.junit.Test; - import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; +import java.util.Arrays; +import java.util.Collection; +import java.util.Vector; + +import org.junit.Test; + /** * Test for StringUtils */ @@ -33,7 +35,7 @@ public class StringUtilsTest { @Test public void testSplit(){ final String data = "a,b,,"; - Vector res = StringUtils.split(data, ','); + Vector res = StringUtils.split(data, ','); assertEquals(4, res.size()); assertEquals("a", res.elementAt(0)); assertEquals("b", res.elementAt(1)); @@ -44,7 +46,7 @@ public class StringUtilsTest { @Test public void testSplitLines(){ final String data = "a\r\nb\nc\nd\ne"; - Vector res = StringUtils.lineSplit(data); + Vector res = StringUtils.lineSplit(data); assertEquals(5, res.size()); assertEquals("a\r", res.elementAt(0)); assertEquals("b", res.elementAt(1)); @@ -53,7 +55,8 @@ public class StringUtilsTest { assertEquals("e", res.elementAt(4)); } - @Test + @SuppressWarnings("deprecation") + @Test public void testReplace() { final String data = "abcabcabca"; String res = StringUtils.replace(data, "a", ""); @@ -166,5 +169,26 @@ public class StringUtilsTest { prefix + name + suffix, StringUtils.removePrefix(input, "bla") ); - } + } + + @Test + public void testJoin() { + assertEquals("a, b, c", StringUtils.join(Arrays.asList("a", "b", "c"), ", ")); + } + + @Test + public void testJoinEmptyArray() { + assertEquals("", StringUtils.join(new String[]{}, ", ")); + } + + @Test + public void testJoinNullArray() { + assertEquals("", StringUtils.join((Collection)null, ", ")); + } + + @Test + public void testJoinNullSeparator() { + assertEquals("abc", StringUtils.join(Arrays.asList("a", "b", "c"), null)); + } + }