Author: markt Date: Thu Mar 14 20:34:32 2013 New Revision: 1456657 URL: http://svn.apache.org/r1456657 Log: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=54658 Servlet 3.1: Implement getSubmittedFileName() Patch provided by Nick Williams
Modified: tomcat/trunk/java/javax/servlet/http/Part.java tomcat/trunk/java/org/apache/catalina/connector/Request.java tomcat/trunk/java/org/apache/catalina/core/ApplicationPart.java tomcat/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java Modified: tomcat/trunk/java/javax/servlet/http/Part.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/servlet/http/Part.java?rev=1456657&r1=1456656&r2=1456657&view=diff ============================================================================== --- tomcat/trunk/java/javax/servlet/http/Part.java (original) +++ tomcat/trunk/java/javax/servlet/http/Part.java Thu Mar 14 20:34:32 2013 @@ -48,6 +48,15 @@ public interface Part { public String getName(); /** + * If this part represents an uploaded file, gets the file name submitted + * in the upload. Returns {@code null} if no file name is available or if + * this part is not a file upload. + * + * @return the submitted file name or {@code null}. + */ + public String getSubmittedFileName(); + + /** * Obtain the size of this part. */ public long getSize(); Modified: tomcat/trunk/java/org/apache/catalina/connector/Request.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/Request.java?rev=1456657&r1=1456656&r2=1456657&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/connector/Request.java (original) +++ tomcat/trunk/java/org/apache/catalina/connector/Request.java Thu Mar 14 20:34:32 2013 @@ -2606,7 +2606,7 @@ public class Request for (FileItem item : items) { ApplicationPart part = new ApplicationPart(item, mce); parts.add(part); - if (part.getFilename() == null) { + if (part.getSubmittedFileName() == null) { String name = part.getName(); String value = null; try { Modified: tomcat/trunk/java/org/apache/catalina/core/ApplicationPart.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/ApplicationPart.java?rev=1456657&r1=1456656&r2=1456657&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/core/ApplicationPart.java (original) +++ tomcat/trunk/java/org/apache/catalina/core/ApplicationPart.java Thu Mar 14 20:34:32 2013 @@ -128,10 +128,21 @@ public class ApplicationPart implements return fileItem.getString(encoding); } + /** + * Calls {@link #getSubmittedFileName()}. + * + * @deprecated Use {@link #getSubmittedFileName()} from Servlet 3.1 instead. + */ + @Deprecated + public String getFilename() { + return getSubmittedFileName(); + } + /* * Adapted from FileUploadBase.getFileName() */ - public String getFilename() { + @Override + public String getSubmittedFileName() { String fileName = null; String cd = getHeader("Content-Disposition"); if (cd != null) { 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=1456657&r1=1456656&r2=1456657&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java (original) +++ tomcat/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java Thu Mar 14 20:34:32 2013 @@ -34,7 +34,6 @@ import java.util.Date; import java.util.Iterator; import java.util.List; import java.util.Locale; -import java.util.Map; import java.util.Set; import javax.servlet.ServletException; @@ -55,7 +54,6 @@ import org.apache.catalina.util.ContextN import org.apache.catalina.util.RequestUtil; import org.apache.catalina.util.ServerInfo; import org.apache.catalina.util.URLEncoder; -import org.apache.tomcat.util.http.fileupload.ParameterParser; import org.apache.tomcat.util.res.StringManager; /** @@ -262,8 +260,7 @@ public final class HTMLManagerServlet ex "htmlManagerServlet.deployUploadNoFile"); break; } - filename = - extractFilename(warPart.getHeader("Content-Disposition")); + filename = warPart.getSubmittedFileName(); if (!filename.toLowerCase(Locale.ENGLISH).endsWith(".war")) { message = smClient.getString( "htmlManagerServlet.deployUploadNotWar", filename); @@ -324,35 +321,6 @@ public final class HTMLManagerServlet ex return message; } - /* - * Adapted from FileUploadBase.getFileName() - */ - private String extractFilename(String cd) { - String fileName = null; - if (cd != null) { - String cdl = cd.toLowerCase(Locale.ENGLISH); - if (cdl.startsWith("form-data") || cdl.startsWith("attachment")) { - ParameterParser parser = new ParameterParser(); - parser.setLowerCaseNames(true); - // Parameter parser can handle null input - Map<String,String> params = - parser.parse(cd, ';'); - if (params.containsKey("filename")) { - fileName = params.get("filename"); - if (fileName != null) { - fileName = fileName.trim(); - } else { - // Even if there is no value, the parameter is present, - // so we return an empty file name rather than no file - // name. - fileName = ""; - } - } - } - } - return fileName; - } - /** * Deploy an application for the specified path from the specified * web application archive. --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org