Author: markt Date: Fri Jun 19 12:10:05 2009 New Revision: 786471 URL: http://svn.apache.org/viewvc?rev=786471&view=rev Log: The servletapi gives us a perfectly good constant for 'javax.servlet.context.tempdir'. Use it.
Modified: tomcat/trunk/java/org/apache/catalina/Globals.java tomcat/trunk/java/org/apache/catalina/core/StandardContext.java tomcat/trunk/java/org/apache/catalina/loader/WebappLoader.java tomcat/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java tomcat/trunk/java/org/apache/catalina/manager/ManagerServlet.java tomcat/trunk/java/org/apache/catalina/servlets/CGIServlet.java tomcat/trunk/java/org/apache/catalina/servlets/DefaultServlet.java tomcat/trunk/java/org/apache/catalina/session/FileStore.java tomcat/trunk/java/org/apache/catalina/session/StandardManager.java tomcat/trunk/java/org/apache/catalina/valves/AccessLogValve.java tomcat/trunk/java/org/apache/jasper/Constants.java tomcat/trunk/java/org/apache/jasper/EmbeddedServletOptions.java tomcat/trunk/java/org/apache/jasper/compiler/JspRuntimeContext.java tomcat/trunk/test/org/apache/catalina/connector/TestRequest.java Modified: tomcat/trunk/java/org/apache/catalina/Globals.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/Globals.java?rev=786471&r1=786470&r2=786471&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/Globals.java (original) +++ tomcat/trunk/java/org/apache/catalina/Globals.java Fri Jun 19 12:10:05 2009 @@ -317,15 +317,6 @@ /** - * The servlet context attribute under which we store a temporary - * working directory (as an object of type File) for use by servlets - * within this web application. - */ - public static final String WORK_DIR_ATTR = - "javax.servlet.context.tempdir"; - - - /** * The master flag which controls strict servlet specification * compliance. */ Modified: tomcat/trunk/java/org/apache/catalina/core/StandardContext.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/StandardContext.java?rev=786471&r1=786470&r2=786471&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/core/StandardContext.java (original) +++ tomcat/trunk/java/org/apache/catalina/core/StandardContext.java Fri Jun 19 12:10:05 2009 @@ -5122,10 +5122,10 @@ dir.mkdirs(); // Set the appropriate servlet context attribute - getServletContext().setAttribute(Globals.WORK_DIR_ATTR, dir); + getServletContext().setAttribute(ServletContext.TEMPDIR, dir); if (getServletContext() instanceof ApplicationContext) ((ApplicationContext) getServletContext()).setAttributeReadOnly - (Globals.WORK_DIR_ATTR); + (ServletContext.TEMPDIR); } Modified: tomcat/trunk/java/org/apache/catalina/loader/WebappLoader.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/loader/WebappLoader.java?rev=786471&r1=786470&r2=786471&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/loader/WebappLoader.java (original) +++ tomcat/trunk/java/org/apache/catalina/loader/WebappLoader.java Fri Jun 19 12:10:05 2009 @@ -792,7 +792,7 @@ // Assigning permissions for the work directory File workDir = - (File) servletContext.getAttribute(Globals.WORK_DIR_ATTR); + (File) servletContext.getAttribute(ServletContext.TEMPDIR); if (workDir != null) { try { String workDirPath = workDir.getCanonicalPath(); @@ -883,7 +883,7 @@ loaderRepositories=new ArrayList<String>(); // Loading the work directory File workDir = - (File) servletContext.getAttribute(Globals.WORK_DIR_ATTR); + (File) servletContext.getAttribute(ServletContext.TEMPDIR); if (workDir == null) { log.info("No work dir for " + servletContext); } Modified: tomcat/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java?rev=786471&r1=786470&r2=786471&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java (original) +++ tomcat/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java Fri Jun 19 12:10:05 2009 @@ -31,6 +31,8 @@ import java.util.List; import java.util.Map; import java.util.TreeMap; + +import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -175,7 +177,7 @@ // Get the tempdir File tempdir = (File) getServletContext().getAttribute - ("javax.servlet.context.tempdir"); + (ServletContext.TEMPDIR); // Set upload parameters upload.setSizeMax(-1); upload.setRepositoryPath(tempdir.getCanonicalPath()); Modified: tomcat/trunk/java/org/apache/catalina/manager/ManagerServlet.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/manager/ManagerServlet.java?rev=786471&r1=786470&r2=786471&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/manager/ManagerServlet.java (original) +++ tomcat/trunk/java/org/apache/catalina/manager/ManagerServlet.java Fri Jun 19 12:10:05 2009 @@ -33,6 +33,7 @@ import javax.naming.InitialContext; import javax.naming.NamingEnumeration; import javax.naming.NamingException; +import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletInputStream; import javax.servlet.UnavailableException; @@ -452,7 +453,7 @@ // Calculate the directory into which we will be deploying applications versioned = (File) getServletContext().getAttribute - ("javax.servlet.context.tempdir"); + (ServletContext.TEMPDIR); // Identify the appBase of the owning Host of this Context // (if any) Modified: tomcat/trunk/java/org/apache/catalina/servlets/CGIServlet.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/servlets/CGIServlet.java?rev=786471&r1=786470&r2=786471&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/servlets/CGIServlet.java (original) +++ tomcat/trunk/java/org/apache/catalina/servlets/CGIServlet.java Fri Jun 19 12:10:05 2009 @@ -694,7 +694,7 @@ protected void setupFromContext(ServletContext context) { this.context = context; this.webAppRootDir = context.getRealPath("/"); - this.tmpDir = (File) context.getAttribute(Globals.WORK_DIR_ATTR); + this.tmpDir = (File) context.getAttribute(ServletContext.TEMPDIR); } Modified: tomcat/trunk/java/org/apache/catalina/servlets/DefaultServlet.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/servlets/DefaultServlet.java?rev=786471&r1=786470&r2=786471&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/servlets/DefaultServlet.java (original) +++ tomcat/trunk/java/org/apache/catalina/servlets/DefaultServlet.java Fri Jun 19 12:10:05 2009 @@ -42,6 +42,7 @@ import javax.naming.NamingEnumeration; import javax.naming.NamingException; import javax.naming.directory.DirContext; +import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.UnavailableException; @@ -497,7 +498,7 @@ // resource - create a temp. file on the local filesystem to // perform this operation File tempDir = (File) getServletContext().getAttribute - ("javax.servlet.context.tempdir"); + (ServletContext.TEMPDIR); // Convert all '/' characters to '.' in resourcePath String convertedResourcePath = path.replace('/', '.'); File contentFile = new File(tempDir, convertedResourcePath); Modified: tomcat/trunk/java/org/apache/catalina/session/FileStore.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/session/FileStore.java?rev=786471&r1=786470&r2=786471&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/session/FileStore.java (original) +++ tomcat/trunk/java/org/apache/catalina/session/FileStore.java Fri Jun 19 12:10:05 2009 @@ -399,7 +399,7 @@ ServletContext servletContext = ((Context) container).getServletContext(); File work = (File) - servletContext.getAttribute(Globals.WORK_DIR_ATTR); + servletContext.getAttribute(ServletContext.TEMPDIR); file = new File(work, this.directory); } else { throw new IllegalArgumentException Modified: tomcat/trunk/java/org/apache/catalina/session/StandardManager.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/session/StandardManager.java?rev=786471&r1=786470&r2=786471&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/session/StandardManager.java (original) +++ tomcat/trunk/java/org/apache/catalina/session/StandardManager.java Fri Jun 19 12:10:05 2009 @@ -742,7 +742,7 @@ ServletContext servletContext = ((Context) container).getServletContext(); File tempdir = (File) - servletContext.getAttribute(Globals.WORK_DIR_ATTR); + servletContext.getAttribute(ServletContext.TEMPDIR); if (tempdir != null) file = new File(tempdir, pathname); } Modified: tomcat/trunk/java/org/apache/catalina/valves/AccessLogValve.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/valves/AccessLogValve.java?rev=786471&r1=786470&r2=786471&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/valves/AccessLogValve.java (original) +++ tomcat/trunk/java/org/apache/catalina/valves/AccessLogValve.java Fri Jun 19 12:10:05 2009 @@ -690,10 +690,12 @@ } // Log this message - if (writer != null) { - writer.println(message); - if (!buffered) { - writer.flush(); + synchronized(this) { + if (writer != null) { + writer.println(message); + if (!buffered) { + writer.flush(); + } } } Modified: tomcat/trunk/java/org/apache/jasper/Constants.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/Constants.java?rev=786471&r1=786470&r2=786471&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/jasper/Constants.java (original) +++ tomcat/trunk/java/org/apache/jasper/Constants.java Fri Jun 19 12:10:05 2009 @@ -120,7 +120,6 @@ * uses. */ public static final String INC_SERVLET_PATH = "javax.servlet.include.servlet_path"; - public static final String TMP_DIR = "javax.servlet.context.tempdir"; // Must be kept in sync with org/apache/catalina/Globals.java public static final String ALT_DD_ATTR = Modified: tomcat/trunk/java/org/apache/jasper/EmbeddedServletOptions.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/EmbeddedServletOptions.java?rev=786471&r1=786470&r2=786471&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/jasper/EmbeddedServletOptions.java (original) +++ tomcat/trunk/java/org/apache/jasper/EmbeddedServletOptions.java Fri Jun 19 12:10:05 2009 @@ -571,7 +571,7 @@ scratchDir = new File(dir); } else { // First try the Servlet 2.2 javax.servlet.context.tempdir property - scratchDir = (File) context.getAttribute(Constants.TMP_DIR); + scratchDir = (File) context.getAttribute(ServletContext.TEMPDIR); if (scratchDir == null) { // Not running in a Servlet 2.2 container. // Try to get the JDK 1.2 java.io.tmpdir property Modified: tomcat/trunk/java/org/apache/jasper/compiler/JspRuntimeContext.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/compiler/JspRuntimeContext.java?rev=786471&r1=786470&r2=786471&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/jasper/compiler/JspRuntimeContext.java (original) +++ tomcat/trunk/java/org/apache/jasper/compiler/JspRuntimeContext.java Fri Jun 19 12:10:05 2009 @@ -394,16 +394,19 @@ docBase = docBase + "-"; permissionCollection.add(new FilePermission(docBase,"read")); - // Create a file read permission for web app tempdir (work) - // directory + // Spec says apps should have read/write for their temp + // directory. This is fine, as no security sensitive files, at + // least any that the app doesn't have full control of anyway, + // will be written here. String workDir = options.getScratchDir().toString(); if (!workDir.endsWith(File.separator)){ permissionCollection.add - (new FilePermission(workDir,"read")); + (new FilePermission(workDir,"read,write")); workDir = workDir + File.separator; } workDir = workDir + "-"; - permissionCollection.add(new FilePermission(workDir,"read")); + permissionCollection.add(new FilePermission( + workDir,"read,write,delete")); // Allow the JSP to access org.apache.jasper.runtime.HttpJspBase permissionCollection.add( new RuntimePermission( Modified: tomcat/trunk/test/org/apache/catalina/connector/TestRequest.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/connector/TestRequest.java?rev=786471&r1=786470&r2=786471&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/catalina/connector/TestRequest.java (original) +++ tomcat/trunk/test/org/apache/catalina/connector/TestRequest.java Fri Jun 19 12:10:05 2009 @@ -56,35 +56,41 @@ Bug37794Client client = new Bug37794Client(); // Edge cases around zero - client.doRequest(-1); // Unlimited + client.doRequest(-1, false); // Unlimited assertTrue(client.isResponse200()); assertTrue(client.isResponseBodyOK()); client.reset(); - client.doRequest(0); // Unlimited + client.doRequest(0, false); // Unlimited assertTrue(client.isResponse200()); assertTrue(client.isResponseBodyOK()); client.reset(); - client.doRequest(1); // 1 byte - too small should fail + client.doRequest(1, false); // 1 byte - too small should fail assertTrue(client.isResponse500()); client.reset(); // Edge cases around actual content length client.reset(); - client.doRequest(6); // Too small should fail + client.doRequest(6, false); // Too small should fail assertTrue(client.isResponse500()); client.reset(); - client.doRequest(7); // Just enough should pass + client.doRequest(7, false); // Just enough should pass assertTrue(client.isResponse200()); assertTrue(client.isResponseBodyOK()); client.reset(); - client.doRequest(8); // 1 extra - should pass + client.doRequest(8, false); // 1 extra - should pass assertTrue(client.isResponse200()); assertTrue(client.isResponseBodyOK()); // Much larger client.reset(); - client.doRequest(8096); // Plenty of space - should pass + client.doRequest(8096, false); // Plenty of space - should pass + assertTrue(client.isResponse200()); + assertTrue(client.isResponseBodyOK()); + + // Check for case insensitivity + client.reset(); + client.doRequest(8096, true); // Plenty of space - should pass assertTrue(client.isResponse200()); assertTrue(client.isResponseBodyOK()); } @@ -115,7 +121,7 @@ * Bug 37794 test client. */ private static class Bug37794Client extends SimpleHttpClient { - private Exception doRequest(int postLimit) { + private Exception doRequest(int postLimit, boolean ucChunkedHead) { Tomcat tomcat = new Tomcat(); try { StandardContext root = tomcat.addContext("", TEMP_DIR); @@ -129,14 +135,25 @@ // Send request in two parts String[] request = new String[2]; - request[0] = - "POST http://localhost:8080/test HTTP/1.1" + CRLF + - "content-type: application/x-www-form-urlencoded" + CRLF + - "Transfer-Encoding: chunked" + CRLF + - "Connection: close" + CRLF + - CRLF + - "3" + CRLF + - "a=1" + CRLF; + if (ucChunkedHead) { + request[0] = + "POST http://localhost:8080/test HTTP/1.1" + CRLF + + "content-type: application/x-www-form-urlencoded" + CRLF + + "Transfer-Encoding: CHUNKED" + CRLF + + "Connection: close" + CRLF + + CRLF + + "3" + CRLF + + "a=1" + CRLF; + } else { + request[0] = + "POST http://localhost:8080/test HTTP/1.1" + CRLF + + "content-type: application/x-www-form-urlencoded" + CRLF + + "Transfer-Encoding: chunked" + CRLF + + "Connection: close" + CRLF + + CRLF + + "3" + CRLF + + "a=1" + CRLF; + } request[1] = "4" + CRLF + "&b=2" + CRLF + --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org