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

Reply via email to