bayard      02/04/23 06:34:01

  Modified:    lang/src/java/org/apache/commons/lang Strings.java
  Log:
  Bug submitted by: "L. Mohan Arun".
  The random methods return the same value within the same millisecond due
  to the methods creating a new Random object each time. I've pulled out the
  Random object and made it static so it can be reused.
  
  Revision  Changes    Path
  1.3       +11 -4     
jakarta-commons-sandbox/lang/src/java/org/apache/commons/lang/Strings.java
  
  Index: Strings.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons-sandbox/lang/src/java/org/apache/commons/lang/Strings.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Strings.java      15 Apr 2002 21:55:02 -0000      1.2
  +++ Strings.java      23 Apr 2002 13:34:01 -0000      1.3
  @@ -85,7 +85,7 @@
    * @author <a href="mailto:[EMAIL PROTECTED]";>Greg Coladonato</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>Bayard</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>Ed Korthof</a>
  - * @version $Id: Strings.java,v 1.2 2002/04/15 21:55:02 bayard Exp $
  + * @version $Id: Strings.java,v 1.3 2002/04/23 13:34:01 bayard Exp $
    */
   public class Strings
   {
  @@ -96,6 +96,13 @@
       public static int CHAR_BUFFER_SIZE = 4 * 1024;
   
       /**
  +     * Random object used by random method. This has to be not local 
  +     * to the random method so as to not return the same value in the 
  +     * same millisecond. 
  +     */
  +    private static Random RANDOM = new Random();
  +
  +    /**
        * Trims text safely, dealing with <code>null</code> references by
        * converting them to <code>""</code> (the empty string).
        *
  @@ -1703,16 +1710,16 @@
                   end = Integer.MAX_VALUE;
               }
           }
  -        Random rnd = new Random();
  +
           StringBuffer buffer = new StringBuffer();
           int gap = end - start;
   
           while(count-- != 0) {
               char ch;
               if(set == null) {
  -                ch = (char)(rnd.nextInt(gap) + start);
  +                ch = (char)(RANDOM.nextInt(gap) + start);
               } else {
  -                ch = set[rnd.nextInt(gap) + start];
  +                ch = set[RANDOM.nextInt(gap) + start];
               }
               if( (letters && numbers && Character.isLetterOrDigit(ch)) ||
                   (letters && Character.isLetter(ch)) ||
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to