LANG-1258: Add ArrayUtils#toStringArray(Object[], String) method (and minimal clean-up of ArrayUtils#toStringArray(Object[]))
add changes.xml entry Project: http://git-wip-us.apache.org/repos/asf/commons-lang/repo Commit: http://git-wip-us.apache.org/repos/asf/commons-lang/commit/8d601ab7 Tree: http://git-wip-us.apache.org/repos/asf/commons-lang/tree/8d601ab7 Diff: http://git-wip-us.apache.org/repos/asf/commons-lang/diff/8d601ab7 Branch: refs/heads/master Commit: 8d601ab71228f7c3dff950540e7ee6e4043e9053 Parents: 8d95ae4 Author: pascalschumacher <pascalschumac...@gmx.net> Authored: Fri Oct 28 22:36:11 2016 +0200 Committer: pascalschumacher <pascalschumac...@gmx.net> Committed: Sun Nov 13 17:10:20 2016 +0100 ---------------------------------------------------------------------- src/changes/changes.xml | 1 + .../org/apache/commons/lang3/ArrayUtils.java | 56 +++++++++++++++----- .../apache/commons/lang3/ArrayUtilsTest.java | 20 ++++++- 3 files changed, 63 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-lang/blob/8d601ab7/src/changes/changes.xml ---------------------------------------------------------------------- diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 955c4a2..d0d86fc 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -55,6 +55,7 @@ The <action> type attribute can be add,update,fix,remove. <action issue="LANG-1070" type="fix" dev="pschumacher" due-to="Paul Pogonyshev">ArrayUtils#add confusing example in javadoc</action> <action issue="LANG-1271" type="fix" dev="pschumacher" due-to="Pierre Templier">StringUtils#isAnyEmpty and #isAnyBlank should return false for an empty array</action> <action issue="LANG-1155" type="fix" dev="pschumacher" due-to="Saif Asif, Thiago Andrade">Add StringUtils#unwrap</action> + <action issue="LANG-1258" type="add" dev="pschumacher" due-to="IG, Grzegorz Rożniecki">Add ArrayUtils#toStringArray method</action> <action issue="LANG-1160" type="add" dev="kinow">StringUtils#abbreviate should support 'custom ellipses' parameter</action> <action issue="LANG-1270" type="add" dev="pschumacher" due-to="Pierre Templier">Add StringUtils#isAnyNotEmpty and #isAnyNotBlank</action> <action issue="LANG-1274" type="update" dev="pschumacher">StrSubstitutor should state its thread safety</action> http://git-wip-us.apache.org/repos/asf/commons-lang/blob/8d601ab7/src/main/java/org/apache/commons/lang3/ArrayUtils.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/lang3/ArrayUtils.java b/src/main/java/org/apache/commons/lang3/ArrayUtils.java index 8c1108e..2c3c0a4 100644 --- a/src/main/java/org/apache/commons/lang3/ArrayUtils.java +++ b/src/main/java/org/apache/commons/lang3/ArrayUtils.java @@ -7970,25 +7970,55 @@ public class ArrayUtils { } /** - * Returns an array containing the string representation of each entry in the argument array. + * <p>Returns an array containing the string representation of each element in the argument array.</p> * - * <p> - * A {@code null} input Object[] returns {@code null}. - * </p> + * <p>This method returns {@code null} for a {@code null} input array.</p> * - * @param source the Object[] to be processed, may be null - * @return String[] of the same size as the source with its element's string representation, - * {@code null} if null Object[] input + * @param array the {@code Object[]} to be processed, may be null + * @return {@code String[]} of the same size as the source with its element's string representation, + * {@code null} if null array input + * @throws NullPointerException if array contains {@code null} * @since 3.6 */ - public static String[] toStringArray(final Object[] source) { - if (null == source) return null; + public static String[] toStringArray(final Object[] array) { + if (array == null) { + return null; + } else if (array.length == 0) { + return EMPTY_STRING_ARRAY; + } - String[] al = new String[source.length]; - for (int i = 0; i < source.length; i++) { - al[i] = source[i].toString(); + final String[] result = new String[array.length]; + for (int i = 0; i < array.length; i++) { + result[i] = array[i].toString(); } - return al; + return result; + } + + /** + * <p>Returns an array containing the string representation of each element in the argument + * array handling {@code null} elements.</p> + * + * <p>This method returns {@code null} for a {@code null} input array.</p> + * + * @param array the Object[] to be processed, may be null + * @param valueForNullElements the value to insert if {@code null} is found + * @return a {@code String} array, {@code null} if null array input + * @since 3.6 + */ + public static String[] toStringArray(final Object[] array, final String valueForNullElements) { + if (null == array) { + return null; + } else if (array.length == 0) { + return EMPTY_STRING_ARRAY; + } + + final String[] result = new String[array.length]; + for (int i = 0; i < array.length; i++) { + final Object object = array[i]; + result[i] = (object == null ? valueForNullElements : object.toString()); + } + + return result; } } http://git-wip-us.apache.org/repos/asf/commons-lang/blob/8d601ab7/src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java b/src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java index da639b5..39edfb2 100644 --- a/src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java +++ b/src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java @@ -4443,11 +4443,29 @@ public class ArrayUtilsTest { } @Test - public void testToStringArray() { + public void testToStringArray_array() { assertNull(ArrayUtils.toStringArray(null)); + assertArrayEquals(new String[0], ArrayUtils.toStringArray(new Object[0])); + final Object[] array = new Object[] {1, 2, 3, "array", "test"}; assertArrayEquals(new String[]{"1", "2", "3", "array", "test"}, ArrayUtils.toStringArray(array)); + + try { + ArrayUtils.toStringArray(new Object[] {null}); + fail("NullPointerException expected!"); + } catch (final NullPointerException expected) {} + } + + @Test + public void testToStringArray_array_string() { + assertNull(ArrayUtils.toStringArray(null, "")); + + assertArrayEquals(new String[0], ArrayUtils.toStringArray(new Object[0], "")); + + final Object[] array = new Object[] { 1, null, "test" }; + assertArrayEquals(new String[]{"1", "valueForNullElements", "test"}, + ArrayUtils.toStringArray(array, "valueForNullElements")); } }