Author: markt
Date: Fri Nov 20 13:46:21 2009
New Revision: 882550
URL: http://svn.apache.org/viewvc?rev=882550&view=rev
Log:
Start to hook-up the commons-file upload port to the Servlet3 file upload API
- Make sure the upload config is available when required
- Start to migrate the HTML manager to the upload API
Modified:
tomcat/trunk/java/org/apache/catalina/Wrapper.java
tomcat/trunk/java/org/apache/catalina/connector/Request.java
tomcat/trunk/java/org/apache/catalina/core/StandardWrapper.java
tomcat/trunk/java/org/apache/catalina/deploy/MultipartDef.java
tomcat/trunk/java/org/apache/catalina/deploy/ServletDef.java
tomcat/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java
tomcat/trunk/java/org/apache/catalina/startup/WebRuleSet.java
tomcat/trunk/java/org/apache/catalina/startup/WebXml.java
tomcat/trunk/webapps/manager/WEB-INF/web.xml
Modified: tomcat/trunk/java/org/apache/catalina/Wrapper.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/Wrapper.java?rev=882550&r1=882549&r2=882550&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/Wrapper.java (original)
+++ tomcat/trunk/java/org/apache/catalina/Wrapper.java Fri Nov 20 13:46:21 2009
@@ -19,6 +19,7 @@
package org.apache.catalina;
+import javax.servlet.MultipartConfigElement;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.UnavailableException;
@@ -334,4 +335,17 @@
public void unload() throws ServletException;
+ /**
+ * Get the multi-part configuration for the associated servlet. If no
+ * multi-part configuration has been defined, then <code>null</code> will
be
+ * returned.
+ */
+ public MultipartConfigElement getMultipartConfig();
+
+
+ /**
+ * Set the multi-part configuration for the associated servlet. To clear
the
+ * multi-part configuration specify <code>null</code> as the new value.
+ */
+ public void setMultipartConfig(MultipartConfigElement multipartConfig);
}
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=882550&r1=882549&r2=882550&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/connector/Request.java (original)
+++ tomcat/trunk/java/org/apache/catalina/connector/Request.java Fri Nov 20
13:46:21 2009
@@ -27,6 +27,7 @@
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
@@ -39,6 +40,7 @@
import javax.servlet.AsyncContext;
import javax.servlet.DispatcherType;
import javax.servlet.FilterChain;
+import javax.servlet.MultipartConfigElement;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
@@ -77,8 +79,10 @@
import org.apache.tomcat.util.http.FastHttpDateFormat;
import org.apache.tomcat.util.http.Parameters;
import org.apache.tomcat.util.http.ServerCookie;
+import org.apache.tomcat.util.http.fileupload.FileUploadBase;
import org.apache.tomcat.util.http.mapper.MappingData;
import org.apache.tomcat.util.res.StringManager;
+import org.apache.tools.ant.util.CollectionUtils;
/**
@@ -2382,8 +2386,20 @@
public Collection<Part> getParts() throws IOException,
IllegalStateException,
ServletException {
+
+ String contentType = getContentType();
+ if (contentType == null ||
+ !contentType.startsWith(FileUploadBase.MULTIPART_FORM_DATA)) {
+ return Collections.emptyList();
+ }
+
+ MultipartConfigElement mce = getWrapper().getMultipartConfig();
+ if (mce == null) {
+ return Collections.emptyList();
+ }
+
// TODO SERVLET3 - file upload
- return null;
+ return Collections.emptyList();
}
public Part getPart(String name) throws IOException, IllegalStateException,
Modified: tomcat/trunk/java/org/apache/catalina/core/StandardWrapper.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/StandardWrapper.java?rev=882550&r1=882549&r2=882550&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/StandardWrapper.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/StandardWrapper.java Fri Nov 20
13:46:21 2009
@@ -35,6 +35,7 @@
import javax.management.NotificationFilter;
import javax.management.NotificationListener;
import javax.management.ObjectName;
+import javax.servlet.MultipartConfigElement;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
@@ -255,6 +256,11 @@
protected int classLoadTime=0;
/**
+ * Multipart config
+ */
+ protected MultipartConfigElement multipartConfig = null;
+
+ /**
* Static class array used when the SecurityManager is turned on and
* <code>Servlet.init</code> is invoked.
*/
@@ -1477,6 +1483,14 @@
return classLoadTime;
}
+ public MultipartConfigElement getMultipartConfig() {
+ return multipartConfig;
+ }
+
+ public void setMultipartConfig(MultipartConfigElement multipartConfig) {
+ this.multipartConfig = multipartConfig;
+ }
+
// -------------------------------------------------------- Package Methods
Modified: tomcat/trunk/java/org/apache/catalina/deploy/MultipartDef.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/deploy/MultipartDef.java?rev=882550&r1=882549&r2=882550&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/deploy/MultipartDef.java (original)
+++ tomcat/trunk/java/org/apache/catalina/deploy/MultipartDef.java Fri Nov 20
13:46:21 2009
@@ -36,39 +36,39 @@
}
- private Long maxFileSize;
+ private String maxFileSize;
- public Long getMaxFileSize() {
+ public String getMaxFileSize() {
return maxFileSize;
}
- public void setMaxFileSize(Long maxFileSize) {
+ public void setMaxFileSize(String maxFileSize) {
this.maxFileSize = maxFileSize;
}
- private Long maxRequestSize;
+ private String maxRequestSize;
- public Long getMaxRequestSize() {
+ public String getMaxRequestSize() {
return maxRequestSize;
}
- public void setMaxRequestSize(Long maxRequestSize) {
+ public void setMaxRequestSize(String maxRequestSize) {
this.maxRequestSize = maxRequestSize;
}
- private Integer fileSizeThreshold;
+ private String fileSizeThreshold;
- public Integer getFileSizeThreshold() {
+ public String getFileSizeThreshold() {
return fileSizeThreshold;
}
- public void setFileSizeThreshold(Integer fileSizeThreshold) {
+ public void setFileSizeThreshold(String fileSizeThreshold) {
this.fileSizeThreshold = fileSizeThreshold;
}
-
+
// ---------------------------------------------------------- Object
methods
@Override
Modified: tomcat/trunk/java/org/apache/catalina/deploy/ServletDef.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/deploy/ServletDef.java?rev=882550&r1=882549&r2=882550&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/deploy/ServletDef.java (original)
+++ tomcat/trunk/java/org/apache/catalina/deploy/ServletDef.java Fri Nov 20
13:46:21 2009
@@ -211,7 +211,7 @@
/**
* The multipart configuration, if any, for this servlet
*/
- private MultipartDef multipartDef = new MultipartDef();
+ private MultipartDef multipartDef = null;
public MultipartDef getMultipartDef() {
return this.multipartDef;
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=882550&r1=882549&r2=882550&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java Fri
Nov 20 13:46:21 2009
@@ -38,6 +38,7 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
+import javax.servlet.http.Part;
import org.apache.catalina.Container;
import org.apache.catalina.Context;
@@ -258,9 +259,13 @@
return buffer.toString();
}
- protected String upload(HttpServletRequest request) throws IOException {
+ protected String upload(HttpServletRequest request)
+ throws IOException, ServletException {
String message = "";
+ // TODO - Rewrite this to use the Servlet 3 file upload API
+ Part part = request.getPart("deployWar");
+
// Get the tempdir
File tempdir = (File) getServletContext().getAttribute
(ServletContext.TEMPDIR);
Modified: tomcat/trunk/java/org/apache/catalina/startup/WebRuleSet.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/WebRuleSet.java?rev=882550&r1=882549&r2=882550&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/startup/WebRuleSet.java (original)
+++ tomcat/trunk/java/org/apache/catalina/startup/WebRuleSet.java Fri Nov 20
13:46:21 2009
@@ -372,7 +372,8 @@
digester.addObjectCreate(fullPrefix + "/servlet/multipart-config",
"org.apache.catalina.deploy.MultipartDef");
digester.addSetNext(fullPrefix + "/servlet/multipart-config",
- "setMultipartConfig");
+ "setMultipartDef",
+ "org.apache.catalina.deploy.MultipartDef");
digester.addCallMethod(fullPrefix +
"/servlet/multipart-config/location",
"setLocation", 0);
digester.addCallMethod(fullPrefix +
"/servlet/multipart-config/max-file-size",
Modified: tomcat/trunk/java/org/apache/catalina/startup/WebXml.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/WebXml.java?rev=882550&r1=882549&r2=882550&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/startup/WebXml.java (original)
+++ tomcat/trunk/java/org/apache/catalina/startup/WebXml.java Fri Nov 20
13:46:21 2009
@@ -28,6 +28,8 @@
import java.util.Map;
import java.util.Set;
+import javax.servlet.MultipartConfigElement;
+
import org.apache.catalina.Context;
import org.apache.catalina.Wrapper;
import org.apache.catalina.deploy.ContextEjb;
@@ -562,7 +564,22 @@
roleRef.getName(), roleRef.getLink());
}
wrapper.setServletClass(servlet.getServletClass());
- // TODO SERVLET3 - Multipart config
+ MultipartDef multipartdef = servlet.getMultipartDef();
+ if (multipartdef != null) {
+ if (multipartdef.getMaxFileSize() != null &&
+ multipartdef.getMaxRequestSize()!= null &&
+ multipartdef.getFileSizeThreshold() != null) {
+ wrapper.setMultipartConfig(new MultipartConfigElement(
+ multipartdef.getLocation(),
+ Long.parseLong(multipartdef.getMaxFileSize()),
+ Long.parseLong(multipartdef.getMaxRequestSize()),
+ Integer.parseInt(
+ multipartdef.getFileSizeThreshold())));
+ } else {
+ wrapper.setMultipartConfig(new MultipartConfigElement(
+ multipartdef.getLocation()));
+ }
+ }
context.addChild(wrapper);
}
for (String pattern : servletMappings.keySet()) {
Modified: tomcat/trunk/webapps/manager/WEB-INF/web.xml
URL:
http://svn.apache.org/viewvc/tomcat/trunk/webapps/manager/WEB-INF/web.xml?rev=882550&r1=882549&r2=882550&view=diff
==============================================================================
--- tomcat/trunk/webapps/manager/WEB-INF/web.xml (original)
+++ tomcat/trunk/webapps/manager/WEB-INF/web.xml Fri Nov 20 13:46:21 2009
@@ -17,9 +17,9 @@
-->
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
- version="2.5">
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
+ version="3.0">
<display-name>Tomcat Manager Application</display-name>
<description>
@@ -42,6 +42,12 @@
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
+ <multipart-config>
+ <!-- 50MB max -->
+ <max-file-size>52428800</max-file-size>
+ <max-request-size>52428800</max-request-size>
+ <file-size-threshold>0</file-size-threshold>
+ </multipart-config>
</servlet>
<servlet>
<servlet-name>Status</servlet-name>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]