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/02/06 07:33:35 UTC

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

costin      01/02/05 22:33:35

  Modified:    src/facade22/org/apache/tomcat/facade
                        HttpServletRequestFacade.java JspInterceptor.java
  Log:
  ServletRequestFacade will now use Parameters. It'll also implement the
  API requirements about when and how the POST parameters are read.
  
  JspInterceptor will now deal with jsp_precompile.
  
  Revision  Changes    Path
  1.17      +27 -3     jakarta-tomcat/src/facade22/org/apache/tomcat/facade/HttpServletRequestFacade.java
  
  Index: HttpServletRequestFacade.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/src/facade22/org/apache/tomcat/facade/HttpServletRequestFacade.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- HttpServletRequestFacade.java	2001/01/01 00:17:22	1.16
  +++ HttpServletRequestFacade.java	2001/02/06 06:33:35	1.17
  @@ -94,6 +94,8 @@
       private boolean usingStream = false;
       private boolean usingReader = false;
   
  +    private boolean parametersProcessed=false;
  +    
       /** Not public 
        */
       HttpServletRequestFacade(Request request) {
  @@ -106,6 +108,7 @@
       void recycle() {
   	usingReader=false;
   	usingStream=false;
  +	parametersProcessed=false;
   	if( sessionFacade!=null) sessionFacade.recycle();
   	if( isFacade != null ) isFacade.recycle();
   	isFacadeInitialized=false;
  @@ -230,15 +233,36 @@
       /** Adapter: Request doesn't deal with this servlet convention
        */
       public String getParameter(String name) {
  -        return request.getParameter( name );
  +	if( ! parametersProcessed ) {
  +	    request.parameters().handleQueryParameters();
  +	    if( request.method().equals("POST")) {
  +		request.handlePostParameters();
  +	    }
  +	    parametersProcessed=true;
  +	}
  +        return request.parameters().getParameter( name );
       }
   
       public String[] getParameterValues(String name) {
  -        return request.getParameterValues(name);
  +	if( ! parametersProcessed ) {
  +	    request.parameters().handleQueryParameters();
  +	    if( request.method().equals("POST")) {
  +		request.handlePostParameters();
  +	    }
  +	    parametersProcessed=true;
  +	}
  +        return request.parameters().getParameterValues(name);
       }
   
       public Enumeration getParameterNames() {
  -        return request.getParameterNames();
  +	if( ! parametersProcessed ) {
  +	    request.parameters().handleQueryParameters();
  +	    if( request.method().equals("POST")) {
  +		request.handlePostParameters();
  +	    }
  +	    parametersProcessed=true;
  +	}
  +        return request.parameters().getParameterNames();
       }
       
       public String getPathInfo() {
  
  
  
  1.13      +62 -0     jakarta-tomcat/src/facade22/org/apache/tomcat/facade/JspInterceptor.java
  
  Index: JspInterceptor.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/src/facade22/org/apache/tomcat/facade/JspInterceptor.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- JspInterceptor.java	2001/02/06 02:46:25	1.12
  +++ JspInterceptor.java	2001/02/06 06:33:35	1.13
  @@ -279,6 +279,8 @@
   	    }
   
   	    jspServlet.setServletClassName(jspServletCN);
  +	} else {
  +	    ctx.addServlet( new JspPrecompileH());
   	}
       }
   
  @@ -373,6 +375,26 @@
   		return 0; // not a jsp
   	}
   
  +	// if it's a jsp_precompile request, don't execute - just
  +	// compile ( if needed ). Since we'll compile the jsp on
  +	// the first request the only special thing is to not
  +	// execute the jsp if jsp_precompile param is in parameters.
  +	String qString=req.queryString().toString();
  +	// look for ?jsp_precompile or &jsp_precompile
  +
  +	// quick test to see if we need to worry about params
  +	// ( preserve lazy eval for parameters )
  +	boolean pre_compile=false;
  +	int i=(qString==null) ? -1: qString.indexOf( "jsp_precompile" );
  +	if( i>= 0 ) {
  +	    // Probably we are in the problem case. 
  +	    req.parameters().handleQueryParameters();
  +	    String p=req.parameters().getParameter( "jsp_precompile");
  +	    if( p==null || p.equalsIgnoreCase("true")) {
  +		pre_compile=true;
  +	    }
  +	}
  +	
   	// Each .jsp file is compiled to a servlet, and will
   	// have a dependency to check if it's expired
   	Dependency dep= handler.getServletInfo().getDependency();
  @@ -386,6 +408,18 @@
   	// we need to compile... ( or find previous .class )
   	JasperLiaison liasion=new JasperLiaison(getLog(), debug);
   	liasion.processJspFile(req, jspFile, handler, args);
  +
  +	if( pre_compile ) {
  +	    // we may have compiled the page ( if needed ), but
  +	    // we can't execute it. The handler will just
  +	    // report that we detected the trick.
  +
  +	    // Future: detail information about compile results
  +	    // and if indeed we had to do something or not
  +	    req.setHandler(  ctx.
  +			     getServletByName( "tomcat.jspPrecompileHandler"));
  +	}
  +	
   	return 0;
       }
   
  @@ -438,6 +472,34 @@
       }
   
   }
  +
  +// -------------------- Jsp_precompile handler --------------------
  +
  +/** What to do for jsp precompile
  + */
  +class JspPrecompileH extends Handler {
  +    static StringManager sm=StringManager.
  +	getManager("org.apache.tomcat.resources");
  +    
  +    JspPrecompileH() {
  +	name="tomcat.jspPrecompileHandler";
  +    }
  +
  +    public void doService(Request req, Response res)
  +	throws Exception
  +    {
  +	res.setContentType("text/html");	
  +
  +	String msg="<h1>Jsp Precompile Done</h1>";
  +
  +	res.setContentLength(msg.length());
  +
  +	res.getBuffer().write( msg );
  +    }
  +}
  +
  +
  +
   
   // -------------------- The main Jasper Liaison --------------------