Author: sebb Date: Sun Jun 10 12:40:15 2012 New Revision: 1348582 URL: http://svn.apache.org/viewvc?rev=1348582&view=rev Log: LANG-807 RandomStringUtils throws confusing IAE when end <= start<
Modified: commons/proper/lang/branches/LANG_2_X/src/main/java/org/apache/commons/lang/RandomStringUtils.java commons/proper/lang/branches/LANG_2_X/src/site/changes/changes.xml commons/proper/lang/branches/LANG_2_X/src/test/java/org/apache/commons/lang/RandomStringUtilsTest.java Modified: commons/proper/lang/branches/LANG_2_X/src/main/java/org/apache/commons/lang/RandomStringUtils.java URL: http://svn.apache.org/viewvc/commons/proper/lang/branches/LANG_2_X/src/main/java/org/apache/commons/lang/RandomStringUtils.java?rev=1348582&r1=1348581&r2=1348582&view=diff ============================================================================== --- commons/proper/lang/branches/LANG_2_X/src/main/java/org/apache/commons/lang/RandomStringUtils.java (original) +++ commons/proper/lang/branches/LANG_2_X/src/main/java/org/apache/commons/lang/RandomStringUtils.java Sun Jun 10 12:40:15 2012 @@ -242,6 +242,10 @@ public class RandomStringUtils { start = ' '; } } + } else { + if (end <= start) { + throw new IllegalArgumentException("Parameter end (" + end + ") must be greater than start (" + start + ")"); + } } char[] buffer = new char[count]; Modified: commons/proper/lang/branches/LANG_2_X/src/site/changes/changes.xml URL: http://svn.apache.org/viewvc/commons/proper/lang/branches/LANG_2_X/src/site/changes/changes.xml?rev=1348582&r1=1348581&r2=1348582&view=diff ============================================================================== --- commons/proper/lang/branches/LANG_2_X/src/site/changes/changes.xml (original) +++ commons/proper/lang/branches/LANG_2_X/src/site/changes/changes.xml Sun Jun 10 12:40:15 2012 @@ -21,6 +21,7 @@ </properties> <body> <release version="2.7" date="TBA" description="TBA (requires minimum of Java 1.3)"> + <action issue="LANG-807" type="fix">RandomStringUtils throws confusing IAE when end <= start</action> <action issue="LANG-805" type="fix">RandomStringUtils.random(count, 0, 0, false, false, universe, random) always throws java.lang.ArrayIndexOutOfBoundsException</action> <action issue="LANG-803" type="fix">LocaleUtils - DCL idiom is not thread-safe.</action> <action issue="LANG-677" type="fix">DateUtils isSameLocalTime() compares the hour using 12hour Calendar.HOUR instead of 24hour Calendar.HOUR_OF_DAY</action> Modified: commons/proper/lang/branches/LANG_2_X/src/test/java/org/apache/commons/lang/RandomStringUtilsTest.java URL: http://svn.apache.org/viewvc/commons/proper/lang/branches/LANG_2_X/src/test/java/org/apache/commons/lang/RandomStringUtilsTest.java?rev=1348582&r1=1348581&r2=1348582&view=diff ============================================================================== --- commons/proper/lang/branches/LANG_2_X/src/test/java/org/apache/commons/lang/RandomStringUtilsTest.java (original) +++ commons/proper/lang/branches/LANG_2_X/src/test/java/org/apache/commons/lang/RandomStringUtilsTest.java Sun Jun 10 12:40:15 2012 @@ -130,6 +130,17 @@ public class RandomStringUtilsTest exten assertEquals("aaa", RandomStringUtils.random(3,0,0,false,false,new char[]{'a'},new Random(seed))); } + public void testLANG807() { + try { + RandomStringUtils.random(3,5,5,false,false); + fail("Expected IllegalArgumentException"); + } catch (IllegalArgumentException ex) { // distinguish from Random#nextInt message + final String msg = ex.getMessage(); + assertTrue("Message (" + msg + ") must contain 'start'", msg.contains("start")); + assertTrue("Message (" + msg + ") must contain 'end'", msg.contains("end")); + } + } + public void testExceptions() { final char[] DUMMY = new char[]{'a'}; // valid char array try {