Author: bayard
Date: Thu Nov  4 04:05:57 2010
New Revision: 1030830

URL: http://svn.apache.org/viewvc?rev=1030830&view=rev
Log:
Adding StringUtils.defaultIfBlank(String, String). Requested by Adam Dyga, 
patch from Nicklas Holm. LANG-655

Modified:
    
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/StringUtils.java
    
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/StringUtilsTest.java

Modified: 
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/StringUtils.java
URL: 
http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/StringUtils.java?rev=1030830&r1=1030829&r2=1030830&view=diff
==============================================================================
--- 
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/StringUtils.java
 (original)
+++ 
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/StringUtils.java
 Thu Nov  4 04:05:57 2010
@@ -5516,6 +5516,28 @@ public class StringUtils {
 
     /**
      * <p>Returns either the passed in CharSequence, or if the CharSequence is
+     * whitespace, empty ("") or <code>null</code>, the value of 
<code>defaultStr</code>.</p>
+     *
+     * <pre>
+     * StringUtils.defaultIfBlank(null, "NULL")  = "NULL"
+     * StringUtils.defaultIfBlank("", "NULL")    = "NULL"
+     * StringUtils.defaultIfBlank(" ", "NULL")   = "NULL"
+     * StringUtils.defaultIfBlank("bat", "NULL") = "bat"
+     * StringUtils.defaultIfBlank("", null)      = null
+     * </pre>
+     * @param <T> the specific kind of CharSequence
+     * @param str the CharSequence to check, may be null
+     * @param defaultStr  the default CharSequence to return
+     *  if the input is whitespace, empty ("") or <code>null</code>, may be 
null
+     * @return the passed in CharSequence, or the default
+     * @see StringUtils#defaultString(String, String)
+     */
+    public static <T extends CharSequence> T defaultIfBlank(T str, T 
defaultStr) {
+        return StringUtils.isBlank(str) ? defaultStr : str;
+    }
+
+    /**
+     * <p>Returns either the passed in CharSequence, or if the CharSequence is
      * empty or <code>null</code>, the value of <code>defaultStr</code>.</p>
      *
      * <pre>

Modified: 
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/StringUtilsTest.java
URL: 
http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/StringUtilsTest.java?rev=1030830&r1=1030829&r2=1030830&view=diff
==============================================================================
--- 
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/StringUtilsTest.java
 (original)
+++ 
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/StringUtilsTest.java
 Thu Nov  4 04:05:57 2010
@@ -1447,6 +1447,17 @@ public class StringUtilsTest extends Tes
         assertEquals("abc", s);
     }
 
+    public void testDefaultIfBlank_StringString() {
+        assertEquals("NULL", StringUtils.defaultIfBlank(null, "NULL"));
+        assertEquals("NULL", StringUtils.defaultIfBlank("", "NULL"));
+        assertEquals("NULL", StringUtils.defaultIfBlank(" ", "NULL"));
+        assertEquals("abc", StringUtils.defaultIfBlank("abc", "NULL"));
+        assertNull(StringUtils.defaultIfBlank("", null));
+        // Tests compatibility for the API return type
+        String s = StringUtils.defaultIfBlank("abc", "NULL");
+        assertEquals("abc", s);
+    }
+
     public void testDefaultIfEmpty_StringBuilders() {
         assertEquals("NULL", StringUtils.defaultIfEmpty(new StringBuilder(""), 
new StringBuilder("NULL")).toString());
         assertEquals("abc", StringUtils.defaultIfEmpty(new 
StringBuilder("abc"), new StringBuilder("NULL")).toString());
@@ -1456,6 +1467,16 @@ public class StringUtilsTest extends Tes
         assertEquals("abc", s.toString());
     }
 
+    public void testDefaultIfBlank_StringBuilders() {
+        assertEquals("NULL", StringUtils.defaultIfBlank(new StringBuilder(""), 
new StringBuilder("NULL")).toString());
+        assertEquals("NULL", StringUtils.defaultIfBlank(new StringBuilder(" 
"), new StringBuilder("NULL")).toString());
+        assertEquals("abc", StringUtils.defaultIfBlank(new 
StringBuilder("abc"), new StringBuilder("NULL")).toString());
+        assertNull(StringUtils.defaultIfBlank(new StringBuilder(""), null));
+        // Tests compatibility for the API return type
+        StringBuilder s = StringUtils.defaultIfBlank(new StringBuilder("abc"), 
new StringBuilder("NULL"));
+        assertEquals("abc", s.toString());
+    }
+
     public void testDefaultIfEmpty_StringBuffers() {
         assertEquals("NULL", StringUtils.defaultIfEmpty(new StringBuffer(""), 
new StringBuffer("NULL")).toString());
         assertEquals("abc", StringUtils.defaultIfEmpty(new 
StringBuffer("abc"), new StringBuffer("NULL")).toString());
@@ -1465,6 +1486,16 @@ public class StringUtilsTest extends Tes
         assertEquals("abc", s.toString());
     }
 
+    public void testDefaultIfBlank_StringBuffers() {
+        assertEquals("NULL", StringUtils.defaultIfBlank(new StringBuffer(""), 
new StringBuffer("NULL")).toString());
+        assertEquals("NULL", StringUtils.defaultIfBlank(new StringBuffer(" "), 
new StringBuffer("NULL")).toString());
+        assertEquals("abc", StringUtils.defaultIfBlank(new 
StringBuffer("abc"), new StringBuffer("NULL")).toString());
+        assertNull(StringUtils.defaultIfBlank(new StringBuffer(""), null));
+        // Tests compatibility for the API return type
+        StringBuffer s = StringUtils.defaultIfBlank(new StringBuffer("abc"), 
new StringBuffer("NULL"));
+        assertEquals("abc", s.toString());
+    }
+
     public void testDefaultIfEmpty_CharBuffers() {
         assertEquals("NULL", StringUtils.defaultIfEmpty(CharBuffer.wrap(""), 
CharBuffer.wrap("NULL")).toString());
         assertEquals("abc", StringUtils.defaultIfEmpty(CharBuffer.wrap("abc"), 
CharBuffer.wrap("NULL")).toString());
@@ -1474,6 +1505,16 @@ public class StringUtilsTest extends Tes
         assertEquals("abc", s.toString());
     }
 
+    public void testDefaultIfBlank_CharBuffers() {
+        assertEquals("NULL", StringUtils.defaultIfBlank(CharBuffer.wrap(""), 
CharBuffer.wrap("NULL")).toString());
+        assertEquals("NULL", StringUtils.defaultIfBlank(CharBuffer.wrap(" "), 
CharBuffer.wrap("NULL")).toString());
+        assertEquals("abc", StringUtils.defaultIfBlank(CharBuffer.wrap("abc"), 
CharBuffer.wrap("NULL")).toString());
+        assertNull(StringUtils.defaultIfBlank(CharBuffer.wrap(""), null));
+        // Tests compatibility for the API return type
+        CharBuffer s = StringUtils.defaultIfBlank(CharBuffer.wrap("abc"), 
CharBuffer.wrap("NULL"));
+        assertEquals("abc", s.toString());
+    }
+
     //-----------------------------------------------------------------------
     public void testAbbreviate_StringInt() {
         assertEquals(null, StringUtils.abbreviate(null, 10));


Reply via email to