scolebourne 2003/07/16 16:56:45 Modified: lang/src/test/org/apache/commons/lang StringUtilsTest.java lang/src/java/org/apache/commons/lang StringUtils.java Log: Update Null handling in StringUtils to handle nulls quietly Revision Changes Path 1.25 +2 -6 jakarta-commons/lang/src/test/org/apache/commons/lang/StringUtilsTest.java Index: StringUtilsTest.java =================================================================== RCS file: /home/cvs/jakarta-commons/lang/src/test/org/apache/commons/lang/StringUtilsTest.java,v retrieving revision 1.24 retrieving revision 1.25 diff -u -r1.24 -r1.25 --- StringUtilsTest.java 16 Jul 2003 23:45:39 -0000 1.24 +++ StringUtilsTest.java 16 Jul 2003 23:56:44 -0000 1.25 @@ -279,16 +279,12 @@ } public void testRepeat() { + assertEquals(null, StringUtils.repeat(null, 2)); assertEquals("", StringUtils.repeat("ab", 0)); assertEquals("", StringUtils.repeat("", 3)); assertEquals("aaa", StringUtils.repeat("a", 3)); assertEquals("ababab", StringUtils.repeat("ab", 3)); assertEquals("abcabcabc", StringUtils.repeat("abc", 3)); - try { - StringUtils.repeat(null, 0); - fail(); - } catch (NullPointerException ex) { - } } public void testCenter() { 1.61 +24 -15 jakarta-commons/lang/src/java/org/apache/commons/lang/StringUtils.java Index: StringUtils.java =================================================================== RCS file: /home/cvs/jakarta-commons/lang/src/java/org/apache/commons/lang/StringUtils.java,v retrieving revision 1.60 retrieving revision 1.61 diff -u -r1.60 -r1.61 --- StringUtils.java 16 Jul 2003 23:45:39 -0000 1.60 +++ StringUtils.java 16 Jul 2003 23:56:45 -0000 1.61 @@ -71,8 +71,15 @@ * <li>whitespace - the characters defined by [EMAIL PROTECTED] Character#isWhitespace(char)} * </ul> * - * <p>The <code>StringUtils</code> class varies in its handling of - * <code>null</code>. Each method should be consulted individually.</p> + * <p>The <code>StringUtils</code> tries to handle <code>null</code> input + * quietly. That is to say that a <code>null</code> will generally return a + * sensible value rather than throw an exception. + * Typically, <code>null</code> in gives <code>null</code> out. + * Each method should be consulted individually for full details.</p> + * + * <p>A side effect of the <code>null</code> handling is that a + * NullPointerException should be considered a bug in <code>StringUtils</code>. + * (Except for deprecated methods).</p> * * @author <a href="http://jakarta.apache.org/turbine/">Apache Jakarta Turbine</a> * @author GenerationJavaCore @@ -1626,25 +1633,27 @@ * new string.</p> * * <pre> + * StringUtils.repeat(null, 2) = null * StringUtils.repeat("", 0) = "" * StringUtils.repeat("", 2) = "" * StringUtils.repeat("a", 3) = "aaa" * StringUtils.repeat("ab", 2) = "abab" - * StringUtils.repeat(null, 2) = NullPointerException - * StringUtils.repeat("a", -2) = NegativeArraySizeException + * StringUtils.repeat("a", -2) = "" * </pre> * - * @param str the String to repeat, must not be null - * @param repeat number of times to repeat str - * @return a new String consisting of the original String repeated - * @throws NegativeArraySizeException if <code>repeat < 0</code> - * @throws NullPointerException if str is <code>null</code> + * @param str the String to repeat, may be null + * @param repeat number of times to repeat str, negative treated as zero + * @return a new String consisting of the original String repeated, + * <code>null</code> if null string input */ public static String repeat(String str, int repeat) { - int inputLength = str.length(); - if (repeat == 0) { + if (str == null) { + return null; + } + if (repeat <= 0) { return ""; } + int inputLength = str.length(); if (inputLength == 1 && repeat <= PAD_LIMIT) { return padding(repeat, str.charAt(0)); } @@ -1904,8 +1913,8 @@ * StringUtils.leftPad("bat", 8, "yz") = "yzyzybat" * StringUtils.leftPad("bat", 1, "yz") = "bat" * StringUtils.leftPad("bat", -1, "yz") = "bat" - * StringUtils.leftPad("bat", 1, null) = NullPointerException - * StringUtils.leftPad("bat", 1, "") = ArithmeticException + * StringUtils.leftPad("bat", 1, null) = IllegalArgumentException + * StringUtils.leftPad("bat", 1, "") = IllegalArgumentException * </pre> * * @param str the String to pad out, may be null @@ -2841,7 +2850,7 @@ /** * <p>Find the Levenshtein distance between two Strings.</p> * - * <P>This is the number of changes needed to change one String into + * <p>This is the number of changes needed to change one String into * another. Where each change is a single character modification.</p> * * <p>This implemmentation of the levenshtein distance algorithm
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]