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"));
     }
 
 }

Reply via email to