You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by co...@apache.org on 2001/08/03 04:51:44 UTC

cvs commit: jakarta-tomcat/src/share/org/apache/tomcat/util JavaGeneratorTool.java

costin      01/08/02 19:51:44

  Modified:    src/share/org/apache/tomcat/util JavaGeneratorTool.java
  Log:
  Fix for the reported jsp bugs ( digits in the first position ), also a small
  improvement for names that contain keywords ( don't mess them if not needed )
  
  Revision  Changes    Path
  1.2       +49 -4     jakarta-tomcat/src/share/org/apache/tomcat/util/JavaGeneratorTool.java
  
  Index: JavaGeneratorTool.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/util/JavaGeneratorTool.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- JavaGeneratorTool.java	2000/12/14 07:10:58	1.1
  +++ JavaGeneratorTool.java	2001/08/03 02:51:44	1.2
  @@ -65,19 +65,64 @@
       /** Mangle Package names to avoid reserver words
        **/
       public static final String manglePackage( String s ) {
  -	    for (int i = 0; i < keywords.length; i++) {
  +	for (int i = 0; i < keywords.length; i++) {
               char fs = File.separatorChar;
               int index = s.indexOf(keywords[i]);
               if(index == -1 ) continue;
               while (index != -1) {
  -                String tmpathName = s.substring (0,index) + "__";
  +		int endIdx=index+keywords[i].length();
  +		//		System.out.println("XXX " + s + " " + index + " " + endIdx );
  +		// Is it a full word ?
  +		if( index>0 && s.charAt( index-1 ) != '/' ) {
  +		    index = s.indexOf(keywords[i],index+3);
  +		    continue;
  +		}
  +		    
  +		if( (s.length()>endIdx+1) && s.charAt( endIdx+1 ) != '/' ) {
  +		    index = s.indexOf(keywords[i],index+3);
  +		    continue;
  +		}
  +                String tmpathName = s.substring (0,index) + "_";
                   s = tmpathName + s.substring (index);
  -                index = s.indexOf(keywords[i],index+3);
  -            }
  +                index = s.indexOf(keywords[i],index+2);
  +	    }
           }
  +	s=fixDigits( s );
  +	//	System.out.println("XXX " + s );
           return(s);
       }
   
  +    public static boolean isKeyword( String s ) {
  +	for (int i = 0; i < keywords.length; i++) {
  +	    if( s.equals( keywords[i] ) )
  +		return true;
  +	}
  +	return false;
  +    }
  +
  +    /** Make sure package components or class name doesn't start with a digit
  +     */
  +    public static  String fixDigits( String s ) {
  +	int i=0;
  +	if(s.length() == 0 ) return s;
  +	if( Character.isDigit( s.charAt( 0 )  )) {
  +	    s="_" +s;
  +	}
  +	do {
  +	    i= s.indexOf( "/", i+1 );
  +	    if( i<0 || i==s.length() )
  +		break;
  +	    if( Character.isDigit( s.charAt( i + 1 )  ) ) {
  +		s=s.substring( 0, i+1 ) + "_" + s.substring( i+1 );
  +		i++;
  +	    }
  +	} while( i> 0 );
  +	
  +	return s;
  +    }
  +
  +
  +    
       /** 
        * 	Generated java files may be versioned, to avoid full reloading
        *  when the source changes.