Author: markt Date: Thu Jan 16 14:21:17 2014 New Revision: 1558811 URL: http://svn.apache.org/r1558811 Log: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=56010 Don't throw an IllegalArgumentException when JspFactory.getPageContext is used with JspWriter.DEFAULT_BUFFER Based on a patch by Eugene Chung. (markt)
Modified: tomcat/trunk/java/org/apache/jasper/runtime/PageContextImpl.java tomcat/trunk/test/org/apache/jasper/runtime/TestPageContextImpl.java Modified: tomcat/trunk/java/org/apache/jasper/runtime/PageContextImpl.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/runtime/PageContextImpl.java?rev=1558811&r1=1558810&r2=1558811&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/jasper/runtime/PageContextImpl.java (original) +++ tomcat/trunk/java/org/apache/jasper/runtime/PageContextImpl.java Thu Jan 16 14:21:17 2014 @@ -47,6 +47,7 @@ import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.PageContext; import javax.servlet.jsp.tagext.BodyContent; +import org.apache.jasper.Constants; import org.apache.jasper.compiler.Localizer; import org.apache.jasper.el.ELContextImpl; import org.apache.jasper.security.SecurityUtil; @@ -137,6 +138,9 @@ public class PageContextImpl extends Pag // initialize the initial out ... depth = -1; + if (bufferSize == JspWriter.DEFAULT_BUFFER) { + bufferSize = Constants.DEFAULT_BUFFER_SIZE; + } if (this.baseOut == null) { this.baseOut = new JspWriterImpl(response, bufferSize, autoFlush); } else { Modified: tomcat/trunk/test/org/apache/jasper/runtime/TestPageContextImpl.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/jasper/runtime/TestPageContextImpl.java?rev=1558811&r1=1558810&r2=1558811&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/jasper/runtime/TestPageContextImpl.java (original) +++ tomcat/trunk/test/org/apache/jasper/runtime/TestPageContextImpl.java Thu Jan 16 14:21:17 2014 @@ -17,15 +17,24 @@ package org.apache.jasper.runtime; import java.io.File; +import java.io.IOException; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.servlet.jsp.JspFactory; +import javax.servlet.jsp.JspWriter; +import javax.servlet.jsp.PageContext; import org.junit.Assert; import org.junit.Test; +import org.apache.catalina.Context; import org.apache.catalina.startup.Tomcat; import org.apache.catalina.startup.TomcatBaseTest; +import org.apache.jasper.Constants; import org.apache.tomcat.util.buf.ByteChunk; public class TestPageContextImpl extends TomcatBaseTest { @@ -50,4 +59,44 @@ public class TestPageContextImpl extends Assert.assertTrue(body.contains("OK")); Assert.assertFalse(body.contains("FAIL")); } + + @Test + public void testDefaultBufferSize() throws Exception { + Tomcat tomcat = getTomcatInstance(); + + File appDir = new File("test/webapp"); + // app dir is relative to server home + Context ctx = tomcat.addWebapp(null, "/test", appDir.getAbsolutePath()); + + // Add the Servlet + Tomcat.addServlet(ctx, "bug56010", new Bug56010()); + ctx.addServletMapping("/bug56010", "bug56010"); + + tomcat.start(); + + ByteChunk res = getUrl("http://localhost:" + getPort() + "/test/bug56010"); + + String result = res.toString(); + Assert.assertTrue(result.contains("OK")); + } + + public static class Bug56010 extends HttpServlet { + + private static final long serialVersionUID = 1L; + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + + PageContext pageContext = JspFactory.getDefaultFactory().getPageContext( + this, req, resp, null, false, JspWriter.DEFAULT_BUFFER, true); + JspWriter out = pageContext.getOut(); + if (Constants.DEFAULT_BUFFER_SIZE == out.getBufferSize()) { + resp.getWriter().println("OK"); + } else { + resp.getWriter().println("FAIL"); + } + } + + } } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org