You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by na...@locus.apache.org on 2000/11/02 01:41:23 UTC

cvs commit: jakarta-tomcat/src/facade22/org/apache/tomcat/modules/facade22 JspInterceptor.java

nacho       00/11/01 16:41:23

  Modified:    src/facade22/org/apache/tomcat/modules/facade22
                        JspInterceptor.java
  Log:
  Adding some (little mangling) to packagename, bugs in the handling
  of pages in the root of the context.
  
  Revision  Changes    Path
  1.8       +64 -20    jakarta-tomcat/src/facade22/org/apache/tomcat/modules/facade22/JspInterceptor.java
  
  Index: JspInterceptor.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/src/facade22/org/apache/tomcat/modules/facade22/JspInterceptor.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- JspInterceptor.java	2000/09/30 04:03:35	1.7
  +++ JspInterceptor.java	2000/11/02 00:41:23	1.8
  @@ -218,9 +218,12 @@
   	if( debug > 0 ) log( "Compiling " + jspInfo.realClassPath);
   	try {
   	    // make sure we have the directories
  -	    File dir=new File( jspInfo.outputDir + "/" + jspInfo.pkgDir);
  +        File dir;
  +        if (jspInfo.pkgDir!=null)
  +    	    dir=new File( jspInfo.outputDir + "/" + jspInfo.pkgDir);
  +        else
  +    	    dir=new File( jspInfo.outputDir);
   	    dir.mkdirs();
  -	    
   	    JspMangler mangler= new JspMangler(jspInfo);
   	    TomcatOptions options=new TomcatOptions();
   	    JspEngineContext1 ctxt = new JspEngineContext1(req, mangler);
  @@ -346,7 +349,7 @@
   class JspInfo {
       Request request;
       
  -    String uri; // path 
  +    String uri; // path
   
       int version; // version
   
  @@ -371,7 +374,7 @@
   
       public String toString() {
   	return uri +" " + version;
  -    }  
  +    }
   
       /** Update compile time
        */
  @@ -389,26 +392,62 @@
       /** Update all paths that contain version number
        */
       void updateVersionedPaths() {
  -	classN = baseClassN + "_" + version;
  -	realClassPath = outputDir + "/" + pkgDir + "/" +
  -	    classN + ".class";
  -	javaFilePath = outputDir + "/" + pkgDir + "/" +
  -	    classN + ".java";
  -	fullClassN = pkg +"." + classN;
  -	
  +    if( pkgDir!=null ) {
  +        classN = baseClassN + "_" + version;
  +        realClassPath = outputDir + "/" + pkgDir + "/" + classN + ".class";
  +        javaFilePath = outputDir + "/" + pkgDir + "/" + classN + ".java";
  +        fullClassN = pkg  + "." + classN;
  +    } else {
  +        classN = baseClassN + "_" + version;
  +        realClassPath = outputDir + "/" +  classN + ".class";
  +        javaFilePath = outputDir + "/" + classN + ".java";
  +        fullClassN = classN;
  +    }
  +
   // 	log("ClassN=" + classN +
   // 			   " realClassPath=" + realClassPath +
   // 			   " javaFilePath=" + javaFilePath +
   // 			   " fullClassN =" + fullClassN);
   	writeVersion();
  -	// save to mapFile 
  +	// save to mapFile
       }
   
  +    private static String [] keywords = {
  +        "abstract", "boolean", "break", "byte",
  +        "case", "catch", "char", "class",
  +        "const", "continue", "default", "do",
  +        "double", "else", "extends", "final",
  +        "finally", "float", "for", "goto",
  +        "if", "implements", "import",
  +        "instanceof", "int", "interface",
  +        "long", "native", "new", "package",
  +        "private", "protected", "public",
  +        "return", "short", "static", "super",
  +        "switch", "synchronized", "this",
  +        "throw", "throws", "transient",
  +        "try", "void", "volatile", "while"
  +    };
  +
  +    /** Mangle Package names to avoid reserver words **/
  +    private String manglePackage(String s){
  +	    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) + "__";
  +                s = tmpathName + s.substring (index);
  +                index = s.indexOf(keywords[i],index+3);
  +            }
  +        }
  +        return(s);
  +    }
  +
       /** Compute various names used
        */
       void init(Request req ) {
   	this.request = req;
  -	// 	String includeUri 
  +	// 	String includeUri
   	// 	    = (String) req.getAttribute(Constants.INC_SERVLET_PATH);
   	uri=req.getServletPath();
   	Context ctx=req.getContext();
  @@ -429,11 +468,13 @@
   	}
   
   	if( pkgDir!=null ) {
  +        pkgDir=manglePackage(pkgDir);
   	    pkgDir=pkgDir.replace('.', '_');
   	    pkg=pkgDir.replace('/', '.');
   	    //	    pkgDir=pkgDir.replace('/', File.separator );
  +
   	}
  -	
  +
   	int extIdx=endUnproc.lastIndexOf( "." );
   
   	if( extIdx>=0 ) {
  @@ -443,8 +484,11 @@
   	    baseClassN=endUnproc;
   	}
   	// XXX insert "mangle" to make names safer
  +    if (pkgDir!=null)
  +    	mapPath = outputDir + "/" + pkgDir + "/" + baseClassN + ".ver";
  +    else
  +    	mapPath = outputDir + "/" + baseClassN + ".ver";
   
  -	mapPath = outputDir + "/" + pkgDir + "/" + baseClassN + ".ver";
   	File mapFile=new File(mapPath);
   	if( mapFile.exists() ) {
   	    // read version from file
  @@ -456,7 +500,7 @@
   	    updateVersionedPaths();
   	}
   
  -	if( false )
  +	if( true  )
   	    log("uri=" + uri +
   		//" outputDir=" + outputDir +
   		//" jspSource=" + jspSource +
  @@ -465,10 +509,10 @@
   		" ext=" + ext +
   		" mapPath=" + mapPath +
   		" version=" + version);
  -	
  -	
  +
  +
       }
  -    
  +
       /** After startup we try to find if the file was precompiled
   	before
       */
  @@ -870,7 +914,7 @@
   
   class JspMangler implements Mangler{
       JspInfo jspInfo;
  -    
  +
       public JspMangler(JspInfo info)  {
   	this.jspInfo=info;
       }