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 -------------------- --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, email: [EMAIL PROTECTED]