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