marcsaeg    2003/07/01 14:07:43

  Modified:    src/share/org/apache/tomcat/util Tag: tomcat_32
                        RequestUtil.java
  Log:
  Several performance improvements.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.14.2.9  +38 -35    
jakarta-tomcat/src/share/org/apache/tomcat/util/Attic/RequestUtil.java
  
  Index: RequestUtil.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/util/Attic/RequestUtil.java,v
  retrieving revision 1.14.2.8
  retrieving revision 1.14.2.9
  diff -u -r1.14.2.8 -r1.14.2.9
  --- RequestUtil.java  5 Oct 2001 21:03:54 -0000       1.14.2.8
  +++ RequestUtil.java  1 Jul 2003 21:07:43 -0000       1.14.2.9
  @@ -303,9 +303,10 @@
           while (strPos < strLen) {
               int laPos;        // lookahead position
   
  +            char[] ca = str.toCharArray();
               // look ahead to next URLencoded metacharacter, if any
               for (laPos = strPos; laPos < strLen; laPos++) {
  -                char laChar = str.charAt(laPos);
  +                char laChar = ca[laPos];
                   if ((laChar == '+') || (laChar == '%')) {
                       break;
                   }
  @@ -313,7 +314,7 @@
   
               // if there were non-metacharacters, copy them all as a block
               if (laPos > strPos) {
  -                dec.append(str.substring(strPos,laPos));
  +                dec.append(ca, strPos, laPos);
                   strPos = laPos;
               }
   
  @@ -331,7 +332,7 @@
               } else if (metaChar == '%') {
                   char c = (char) Integer.parseInt(str.substring(strPos + 1, strPos + 
3), 16);
                   if(c == '/' || c == '%' || c=='.' || c == '\\' || c == '\0')
  -                    dec.append(str.substring(strPos, strPos+3));
  +                    dec.append(ca, strPos, strPos+3);
                   else
                       dec.append(c);
                   strPos += 3;
  @@ -341,40 +342,42 @@
           return dec.toString();
       }
   
  -    public static String unUrlDecode(String data) {
  -     StringBuffer buf = new StringBuffer();
  -     for (int i = 0; i < data.length(); i++) {
  -         char c = data.charAt(i);
  -         switch (c) {
  -         case '+':
  -             buf.append(' ');
  -             break;
  -         case '%':
  -             // XXX XXX 
  -             try {
  -                 buf.append((char) Integer.parseInt(data.substring(i+1,
  -                        i+3), 16));
  -                 i += 2;
  -             } catch (NumberFormatException e) {
  +    public static String unUrlDecode(String data)
  +    {
  +        StringBuffer buf = new StringBuffer(data.length());
  +        char ca[] = data.toCharArray();
  +        for (int i = 0; i < data.length(); i++) {
  +            char c = ca[i];
  +            switch (c) {
  +            case '+':
  +                buf.append(' ');
  +                break;
  +            case '%':
  +                // XXX XXX 
  +                try {
  +                    buf.append((char) Integer.parseInt(data.substring(i+1,
  +                                                                      i+3), 16));
  +                    i += 2;
  +                } catch (NumberFormatException e) {
                       String msg = "Decode error ";
  -                 // XXX no need to add sm just for that
  -                 // sm.getString("serverRequest.urlDecode.nfe", data);
  +                    // XXX no need to add sm just for that
  +                    // sm.getString("serverRequest.urlDecode.nfe", data);
  +
  +                    throw new IllegalArgumentException(msg);
  +                } catch (StringIndexOutOfBoundsException e) {
  +                    String rest  = data.substring(i);
  +                    buf.append(rest);
  +                    if (rest.length()==2)
  +                        i++;
  +                }
   
  -                 throw new IllegalArgumentException(msg);
  -             } catch (StringIndexOutOfBoundsException e) {
  -                 String rest  = data.substring(i);
  -                 buf.append(rest);
  -                 if (rest.length()==2)
  -                     i++;
  -             }
  -             
  -             break;
  -         default:
  -             buf.append(c);
  -             break;
  -         }
  -     }
  -     return buf.toString();
  +                break;
  +            default:
  +                buf.append(c);
  +                break;
  +            }
  +        }
  +        return buf.toString();
       }           
        
   
  
  
  

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

Reply via email to