diff --git a/src/java/org/apache/commons/lang/StringUtils.java b/src/java/org/apache/commons/lang/StringUtils.java index 9d4d33737d9..da0536d4322 100644 --- a/src/java/org/apache/commons/lang/StringUtils.java +++ b/src/java/org/apache/commons/lang/StringUtils.java @@ -144,7 +144,7 @@ * @author Gary Gregory * @author Phil Steitz * @since 1.0 - * @version $Id: StringUtils.java,v 1.87 2003/08/01 23:01:52 scolebourne Exp $ + * @version $Id: StringUtils.java,v 1.88 2003/08/01 23:11:55 scolebourne Exp $ */ public class StringUtils { // Performance testing notes (JDK 1.4, Jul03, scolebourne) @@ -1431,7 +1431,7 @@ public static String substring(String str, int start, int end) { * *
* StringUtils.left(null, *) = null - * StringUtils.left(*, -ve) = IllegalArgumentException + * StringUtils.left(*, -ve) = "" * StringUtils.left("", *) = "" * StringUtils.left("abc", 0) = "" * StringUtils.left("abc", 2) = "ab" @@ -1441,14 +1441,13 @@ public static String substring(String str, int start, int end) { * @param str the String to get the leftmost characters from, may be null * @param len the length of the required String, must be zero or positive * @return the leftmost characters,null
if null String input - * @throws IllegalArgumentException if len is less than zero */ public static String left(String str, int len) { if (str == null) { return null; } if (len < 0) { - throw new IllegalArgumentException("Requested String length " + len + " is less than zero"); + return ""; } if (str.length() <= len) { return str; @@ -1466,7 +1465,7 @@ public static String left(String str, int len) { * ** StringUtils.right(null, *) = null - * StringUtils.right(*, -ve) = IllegalArgumentException + * StringUtils.right(*, -ve) = "" * StringUtils.right("", *) = "" * StringUtils.right("abc", 0) = "" * StringUtils.right("abc", 2) = "bc" @@ -1476,14 +1475,13 @@ public static String left(String str, int len) { * @param str the String to get the rightmost characters from, may be null * @param len the length of the required String, must be zero or positive * @return the rightmost characters,null
if null String input - * @throws IllegalArgumentException if len is less than zero */ public static String right(String str, int len) { if (str == null) { return null; } if (len < 0) { - throw new IllegalArgumentException("Requested String length " + len + " is less than zero"); + return ""; } if (str.length() <= len) { return str; @@ -1502,7 +1500,7 @@ public static String right(String str, int len) { * ** StringUtils.mid(null, *, *) = null - * StringUtils.mid(*, *, -ve) = IllegalArgumentException + * StringUtils.mid(*, *, -ve) = "" * StringUtils.mid("", 0, *) = "" * StringUtils.mid("abc", 0, 2) = "ab" * StringUtils.mid("abc", 0, 4) = "abc" @@ -1515,21 +1513,17 @@ public static String right(String str, int len) { * @param pos the position to start from, negative treated as zero * @param len the length of the required String, must be zero or positive * @return the middle characters,null
if null String input - * @throws IllegalArgumentException if len is less than zero */ public static String mid(String str, int pos, int len) { if (str == null) { return null; } - if (pos > str.length()) { + if (len < 0 || pos > str.length()) { return ""; } if (pos < 0) { pos = 0; } - if (len < 0) { - throw new IllegalArgumentException("Requested String length " + len + " is less than zero"); - } if (str.length() <= (pos + len)) { return str.substring(pos); } else { diff --git a/src/test/org/apache/commons/lang/StringUtilsSubstringTest.java b/src/test/org/apache/commons/lang/StringUtilsSubstringTest.java index 0eac11137c7..6e3a60c4d88 100644 --- a/src/test/org/apache/commons/lang/StringUtilsSubstringTest.java +++ b/src/test/org/apache/commons/lang/StringUtilsSubstringTest.java @@ -64,7 +64,7 @@ * @author Stephen Colebourne * @author Ringo De Smet * @author Phil Steitz - * @version $Id: StringUtilsSubstringTest.java,v 1.11 2003/08/01 22:05:43 scolebourne Exp $ + * @version $Id: StringUtilsSubstringTest.java,v 1.12 2003/08/01 23:11:54 scolebourne Exp $ */ public class StringUtilsSubstringTest extends TestCase { private static final String FOO = "foo"; @@ -139,30 +139,30 @@ public void testLeft_String() { assertSame(null, StringUtils.left(null, -1)); assertSame(null, StringUtils.left(null, 0)); assertSame(null, StringUtils.left(null, 2)); - assertSame("", StringUtils.left("", 0)); - assertSame("", StringUtils.left("", 2)); + + assertEquals("", StringUtils.left("", -1)); + assertEquals("", StringUtils.left("", 0)); + assertEquals("", StringUtils.left("", 2)); + + assertEquals("", StringUtils.left(FOOBAR, -1)); assertEquals("", StringUtils.left(FOOBAR, 0)); assertEquals(FOO, StringUtils.left(FOOBAR, 3)); assertSame(FOOBAR, StringUtils.left(FOOBAR, 80)); - try { - StringUtils.left(FOOBAR, -1); - fail(); - } catch (IllegalArgumentException ex) {} } public void testRight_String() { assertSame(null, StringUtils.right(null, -1)); assertSame(null, StringUtils.right(null, 0)); assertSame(null, StringUtils.right(null, 2)); - assertSame("", StringUtils.right("", 0)); - assertSame("", StringUtils.right("", 2)); + + assertEquals("", StringUtils.right("", -1)); + assertEquals("", StringUtils.right("", 0)); + assertEquals("", StringUtils.right("", 2)); + + assertEquals("", StringUtils.right(FOOBAR, -1)); assertEquals("", StringUtils.right(FOOBAR, 0)); assertEquals(BAR, StringUtils.right(FOOBAR, 3)); assertSame(FOOBAR, StringUtils.right(FOOBAR, 80)); - try { - StringUtils.right(FOOBAR, -1); - fail(); - } catch (IllegalArgumentException ex) {} } public void testMid_String() { @@ -170,8 +170,12 @@ public void testMid_String() { assertSame(null, StringUtils.mid(null, 0, -1)); assertSame(null, StringUtils.mid(null, 3, 0)); assertSame(null, StringUtils.mid(null, 3, 2)); - assertSame("", StringUtils.mid("", 0, 0)); - assertSame("", StringUtils.mid("", 0, 2)); + + assertEquals("", StringUtils.mid("", 0, -1)); + assertEquals("", StringUtils.mid("", 0, 0)); + assertEquals("", StringUtils.mid("", 0, 2)); + + assertEquals("", StringUtils.mid(FOOBAR, 3, -1)); assertEquals("", StringUtils.mid(FOOBAR, 3, 0)); assertEquals("b", StringUtils.mid(FOOBAR, 3, 1)); assertEquals(FOO, StringUtils.mid(FOOBAR, 0, 3)); @@ -180,10 +184,6 @@ public void testMid_String() { assertEquals(BAR, StringUtils.mid(FOOBAR, 3, 80)); assertEquals("", StringUtils.mid(FOOBAR, 9, 3)); assertEquals(FOO, StringUtils.mid(FOOBAR, -1, 3)); - try { - StringUtils.mid(FOOBAR, 0, -1); - fail(); - } catch (IllegalArgumentException ex) {} } //-----------------------------------------------------------------------