You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ki...@apache.org on 2003/04/18 19:26:16 UTC

cvs commit: jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper JspCompilationContext.java

kinman      2003/04/18 10:26:15

  Modified:    jasper2/src/share/org/apache/jasper
                        JspCompilationContext.java
  Log:
  - Fix 12381: Mangling file names not unique
  
  Revision  Changes    Path
  1.38      +14 -24    jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/JspCompilationContext.java
  
  Index: JspCompilationContext.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/JspCompilationContext.java,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- JspCompilationContext.java	11 Apr 2003 22:41:57 -0000	1.37
  +++ JspCompilationContext.java	18 Apr 2003 17:26:15 -0000	1.38
  @@ -346,15 +346,12 @@
               int iEnd = jspUri.length();
               StringBuffer modifiedClassName = 
                   new StringBuffer(jspUri.length() - iSep);
  -            if (!Character.isJavaIdentifierStart(jspUri.charAt(iSep)) ||
  -                jspUri.charAt(iSep) == '_' ) {
  -                // If the first char is not a start of Java identifier or is _
  -                // prepend a '_'.
  +            if (!Character.isJavaIdentifierStart(jspUri.charAt(iSep))) {
                   modifiedClassName.append('_');
               }
               for (int i = iSep; i < iEnd; i++) {
                   char ch = jspUri.charAt(i);
  -                if (Character.isJavaIdentifierPart(ch)) {
  +                if (Character.isJavaIdentifierPart(ch) && ch != '_') {
                       modifiedClassName.append(ch);
                   } else if (ch == '.') {
                       modifiedClassName.append('_');
  @@ -433,12 +430,10 @@
               int nameStart = 1;
               for (int i = 1; i < iSep; i++) {
                   char ch = jspUri.charAt(i);
  -                if (i == nameStart) {
  -		    if (! Character.isJavaIdentifierStart(ch) || ch == '_') {
  -                        modifiedPackageName.append('_');
  -                    }
  -                    modifiedPackageName.append(ch);
  -                } else if (Character.isJavaIdentifierPart(ch)) {
  +                if (i == nameStart && !Character.isJavaIdentifierStart(ch)) {
  +                    modifiedPackageName.append('_');
  +                }
  +                if (Character.isJavaIdentifierPart(ch) && ch != '_') {
                       modifiedPackageName.append(ch);
                   } else if (ch == '/') {
                       if (isJavaKeyword(jspUri.substring(nameStart, i))) {
  @@ -671,17 +666,12 @@
        * Mangle the specified character to create a legal Java class name.
        */
       private static final String mangleChar(char ch) {
  -
  -        String s = Integer.toHexString(ch);
  -        int nzeros = 5 - s.length();
  -        char[] result = new char[6];
  +        char[] result = new char[5];
           result[0] = '_';
  -        for (int i = 1; i <= nzeros; i++) {
  -            result[i] = '0';
  -        }
  -        for (int i = nzeros+1, j = 0; i < 6; i++, j++) {
  -            result[i] = s.charAt(j);
  -        }
  +        result[1] = Character.forDigit((ch >> 12) & 0xf, 16);
  +        result[2] = Character.forDigit((ch >> 8) & 0xf, 16);
  +        result[3] = Character.forDigit((ch >> 4) & 0xf, 16);
  +        result[4] = Character.forDigit(ch & 0xf, 16);
           return new String(result);
       }
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org