luehe 2004/01/30 17:56:28 Modified: jasper2/src/share/org/apache/jasper/compiler Generator.java Log: Fixed Bugtraq 4984188 ("pageContext used in *.tag files") Implicit "pageContext" object no longer exposed in tag files, to comply with JSP spec. Revision Changes Path 1.216 +55 -46 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Generator.java Index: Generator.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Generator.java,v retrieving revision 1.215 retrieving revision 1.216 diff -u -r1.215 -r1.216 --- Generator.java 5 Nov 2003 18:31:34 -0000 1.215 +++ Generator.java 31 Jan 2004 01:56:28 -0000 1.216 @@ -609,6 +609,7 @@ // XXX TODO: use a better criteria maxTagNesting = pageInfo.getMaxTagNesting(); out.printil("JspWriter _jspx_out = null;"); + out.printil("PageContext _jspx_page_context = null;"); out.println(); declareTemporaryScriptingVars(page); @@ -635,6 +636,7 @@ out.print(", " + pageInfo.getBuffer()); out.print(", " + pageInfo.isAutoFlush()); out.println(");"); + out.printil("_jspx_page_context = pageContext;"); out.printil("application = pageContext.getServletContext();"); out.printil("config = pageContext.getServletConfig();"); @@ -1024,7 +1026,7 @@ prepareParams(n); } - out.printin("pageContext.forward("); + out.printin("_jspx_page_context.forward("); out.print(pageParam); printParams(n, pageParam, page.isLiteral()); out.println(");"); @@ -1057,7 +1059,7 @@ "out.write(org.apache.jasper.runtime.JspRuntimeLibrary.toString(" + "(((" + beanName - + ")pageContext.findAttribute(" + + ")_jspx_page_context.findAttribute(" + "\"" + name + "\"))." @@ -1070,7 +1072,7 @@ out.printil( "out.write(org.apache.jasper.runtime.JspRuntimeLibrary.toString" + "(org.apache.jasper.runtime.JspRuntimeLibrary.handleGetProperty" - + "(pageContext.findAttribute(\"" + + "(_jspx_page_context.findAttribute(\"" + name + "\"), \"" + property @@ -1091,7 +1093,7 @@ if ("*".equals(property)) { out.printil( "org.apache.jasper.runtime.JspRuntimeLibrary.introspect(" - + "pageContext.findAttribute(" + + "_jspx_page_context.findAttribute(" + "\"" + name + "\"), request);"); @@ -1100,7 +1102,7 @@ param = property; // default to same as property out.printil( "org.apache.jasper.runtime.JspRuntimeLibrary.introspecthelper(" - + "pageContext.findAttribute(\"" + + "_jspx_page_context.findAttribute(\"" + name + "\"), \"" + property @@ -1113,7 +1115,7 @@ } else if (value.isExpression()) { out.printil( "org.apache.jasper.runtime.JspRuntimeLibrary.handleSetProperty(" - + "pageContext.findAttribute(\"" + + "_jspx_page_context.findAttribute(\"" + name + "\"), \"" + property @@ -1136,14 +1138,14 @@ // handler for Tag files) is a FunctionMapper. out.printil( "org.apache.jasper.runtime.JspRuntimeLibrary.handleSetPropertyExpression(" - + "pageContext.findAttribute(\"" + + "_jspx_page_context.findAttribute(\"" + name + "\"), \"" + property + "\", " + quote(value.getValue()) + ", " - + "pageContext, " + + "_jspx_page_context, " + value.getEL().getMapName() + ");"); } else if (value.isNamedAttribute()) { @@ -1154,7 +1156,7 @@ generateNamedAttributeValue(value.getNamedAttributeNode()); out.printil( "org.apache.jasper.runtime.JspRuntimeLibrary.introspecthelper(" - + "pageContext.findAttribute(\"" + + "_jspx_page_context.findAttribute(\"" + name + "\"), \"" + property @@ -1164,7 +1166,7 @@ } else { out.printin( "org.apache.jasper.runtime.JspRuntimeLibrary.introspecthelper(" - + "pageContext.findAttribute(\"" + + "_jspx_page_context.findAttribute(\"" + name + "\"), \"" + property @@ -1188,7 +1190,7 @@ type = klass; String scopename = "PageContext.PAGE_SCOPE"; // Default to page - String lock = "pageContext"; + String lock = "_jspx_page_context"; if ("request".equals(scope)) { scopename = "PageContext.REQUEST_SCOPE"; @@ -1219,7 +1221,7 @@ out.printin(name); out.print(" = ("); out.print(type); - out.print(") pageContext.getAttribute("); + out.print(") _jspx_page_context.getAttribute("); out.print(quote(name)); out.print(", "); out.print(scopename); @@ -1297,7 +1299,7 @@ /* * Set attribute for bean in the specified scope */ - out.printin("pageContext.setAttribute("); + out.printin("_jspx_page_context.setAttribute("); out.print(quote(name)); out.print(", "); out.print(name); @@ -1621,7 +1623,7 @@ out.print(parent); out.print(", "); } - out.print("pageContext"); + out.print("_jspx_page_context"); if (pushBodyCountVar != null) { out.print(", "); out.print(pushBodyCountVar); @@ -1655,7 +1657,7 @@ out.print(parent); out.print(", "); } - out.print("PageContext pageContext"); + out.print("PageContext _jspx_page_context"); if (pushBodyCountVar != null) { out.print(", int[] "); out.print(pushBodyCountVar); @@ -1665,7 +1667,7 @@ out.pushIndent(); // Initilaize local variables used in this method. - out.printil("JspWriter out = pageContext.getOut();"); + out.printil("JspWriter out = _jspx_page_context.getOut();"); generateLocalVariables(out, n); } @@ -2003,7 +2005,7 @@ // Store varReader in appropriate scope if (varReaderAttr != null || varAttr != null) { String scopeName = n.getTextAttribute("scope"); - out.printin("pageContext.setAttribute("); + out.printin("_jspx_page_context.setAttribute("); if (varReaderAttr != null) { out.print(quote(varReaderAttr)); out.print( @@ -2043,7 +2045,7 @@ // Store varReader in appropriate scope if (varReaderAttr != null || varAttr != null) { String scopeName = n.getTextAttribute("scope"); - out.printin("pageContext.setAttribute("); + out.printin("_jspx_page_context.setAttribute("); if (varReaderAttr != null) { out.print(quote(varReaderAttr)); out.print( @@ -2180,7 +2182,7 @@ " != javax.servlet.jsp.tagext.Tag.EVAL_BODY_INCLUDE) {"); // Assume EVAL_BODY_BUFFERED out.pushIndent(); - out.printil("out = pageContext.pushBody();"); + out.printil("out = _jspx_page_context.pushBody();"); if (n.implementsTryCatchFinally()) { out.printin(tagPushBodyCountVar); out.println("[0]++;"); @@ -2247,7 +2249,7 @@ out.println( " != javax.servlet.jsp.tagext.Tag.EVAL_BODY_INCLUDE)"); out.pushIndent(); - out.printil("out = pageContext.popBody();"); + out.printil("out = _jspx_page_context.popBody();"); if (n.implementsTryCatchFinally()) { out.printin(tagPushBodyCountVar); out.println("[0]--;"); @@ -2287,7 +2289,7 @@ out.print(tagPushBodyCountVar); out.println("[0]-- > 0)"); out.pushIndent(); - out.printil("out = pageContext.popBody();"); + out.printil("out = _jspx_page_context.popBody();"); out.popIndent(); out.printin(tagHandlerVar); @@ -2556,7 +2558,7 @@ out.printin(varInfos[i].getVarName()); out.print(" = ("); out.print(varInfos[i].getClassName()); - out.print(") pageContext.findAttribute("); + out.print(") _jspx_page_context.findAttribute("); out.print(quote(varInfos[i].getVarName())); out.println(");"); } @@ -2577,7 +2579,7 @@ out.printin(name); out.print(" = ("); out.print(tagVarInfos[i].getClassName()); - out.print(") pageContext.findAttribute("); + out.print(") _jspx_page_context.findAttribute("); out.print(quote(name)); out.println(");"); } @@ -2761,15 +2763,15 @@ } out.printin(tagHandlerVar); if (aliasMapVar == null) { - out.println(".setJspContext(pageContext);"); + out.println(".setJspContext(_jspx_page_context);"); } else { - out.print(".setJspContext(pageContext, "); + out.print(".setJspContext(_jspx_page_context, "); out.print(aliasMapVar); out.println(");"); } } else { out.printin(tagHandlerVar); - out.println(".setPageContext(pageContext);"); + out.println(".setPageContext(_jspx_page_context);"); } // Set parent @@ -2985,7 +2987,7 @@ + fragmentHelperClass.getClassName() + "( " + fragment.getId() - + ", pageContext, " + + ", _jspx_page_context, " + tagHandlerVar + ", " + pushBodyCountVar @@ -3031,7 +3033,7 @@ // lone EL expressions (no need to pushBody here either). if (!templateTextOptimization) { - out.printil("out = pageContext.pushBody();"); + out.printil("out = _jspx_page_context.pushBody();"); visitBody(n); out.printil( "String " @@ -3039,7 +3041,7 @@ + " = " + "((javax.servlet.jsp.tagext.BodyContent)" + "out).getString();"); - out.printil("out = pageContext.popBody();"); + out.printil("out = _jspx_page_context.popBody();"); } } else { // Empty body must be treated as "" @@ -3092,20 +3094,20 @@ } if (ci.hasUseBean()) { - out.printil("HttpSession session = pageContext.getSession();"); + out.printil("HttpSession session = _jspx_page_context.getSession();"); out.printil( - "ServletContext application = pageContext.getServletContext();"); + "ServletContext application = _jspx_page_context.getServletContext();"); } if (ci.hasUseBean() || ci.hasIncludeAction() || ci.hasSetProperty() || ci.hasParamAction()) { out.printil( - "HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();"); + "HttpServletRequest request = (HttpServletRequest)_jspx_page_context.getRequest();"); } if (ci.hasIncludeAction()) { out.printil( - "HttpServletResponse response = (HttpServletResponse)pageContext.getResponse();"); + "HttpServletResponse response = (HttpServletResponse)_jspx_page_context.getResponse();"); } } @@ -3154,7 +3156,7 @@ out.popIndent(); out.printil( - "if (pageContext != null) pageContext.handlePageException(t);"); + "if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);"); out.popIndent(); out.printil("}"); out.popIndent(); @@ -3162,7 +3164,7 @@ out.pushIndent(); out.printil( - "if (_jspxFactory != null) _jspxFactory.releasePageContext(pageContext);"); + "if (_jspxFactory != null) _jspxFactory.releasePageContext(_jspx_page_context);"); out.popIndent(); out.printil("}"); @@ -3337,19 +3339,26 @@ } out.pushIndent(); - out.printil("PageContext pageContext = (PageContext)jspContext;"); + + /* + * According to the spec, 'pageContext' must not be made available as + * an implicit object in tag files. + * Declare _jspx_page_context, so we can share the code generator with + * JSPs. + */ + out.printil("PageContext _jspx_page_context = (PageContext)jspContext;"); // Declare implicit objects. out.printil( "HttpServletRequest request = " - + "(HttpServletRequest) pageContext.getRequest();"); + + "(HttpServletRequest) _jspx_page_context.getRequest();"); out.printil( "HttpServletResponse response = " - + "(HttpServletResponse) pageContext.getResponse();"); - out.printil("HttpSession session = pageContext.getSession();"); + + "(HttpServletResponse) _jspx_page_context.getResponse();"); + out.printil("HttpSession session = _jspx_page_context.getSession();"); out.printil( - "ServletContext application = pageContext.getServletContext();"); - out.printil("ServletConfig config = pageContext.getServletConfig();"); + "ServletContext application = _jspx_page_context.getServletContext();"); + out.printil("ServletConfig config = _jspx_page_context.getServletConfig();"); out.printil("JspWriter out = jspContext.getOut();"); if (isPoolingEnabled && !tagHandlerPoolNames.isEmpty()) { out.printil("_jspInit(config);"); @@ -3597,7 +3606,7 @@ String attrName = attrInfos[i].getName(); out.printil("if( " + toGetterMethod(attrName) + " != null ) "); out.pushIndent(); - out.printin("pageContext.setAttribute("); + out.printin("_jspx_page_context.setAttribute("); out.print(quote(attrName)); out.print(", "); out.print(toGetterMethod(attrName)); @@ -3607,7 +3616,7 @@ // Expose the Map containing dynamic attributes as a page-scoped var if (tagInfo.hasDynamicAttributes()) { - out.printin("pageContext.setAttribute(\""); + out.printin("_jspx_page_context.setAttribute(\""); out.print(tagInfo.getDynamicAttributesMapName()); out.print("\", _jspx_dynamic_attrs);"); }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]