[jboss-cvs] jboss-seam/src/main/org/jboss/seam/servlet ...
Shane Bryzak
Shane_Bryzak at symantec.com
Tue Feb 6 11:25:23 EST 2007
User: sbryzak2
Date: 07/02/06 11:25:23
Modified: src/main/org/jboss/seam/servlet MultipartRequest.java
SeamMultipartFilter.java
Added: src/main/org/jboss/seam/servlet MultipartConfig.java
Log:
JBSEAM-774
Revision Changes Path
1.6 +11 -5 jboss-seam/src/main/org/jboss/seam/servlet/MultipartRequest.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: MultipartRequest.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/servlet/MultipartRequest.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- MultipartRequest.java 5 Feb 2007 21:49:04 -0000 1.5
+++ MultipartRequest.java 6 Feb 2007 16:25:23 -0000 1.6
@@ -38,7 +38,7 @@
private static final int BUFFER_SIZE = 2048;
private static final int CHUNK_SIZE = 512;
- private boolean createTempFiles = false;
+ private MultipartConfig config;
private String encoding = null;
private Map<String,Param> parameters = null;
@@ -49,7 +49,6 @@
private static final byte LF = 0x0a;
private static final byte[] CR_LF = {CR,LF};
-
private abstract class Param
{
private String name;
@@ -229,11 +228,18 @@
private HttpServletRequest request;
- public MultipartRequest(HttpServletRequest request, boolean createTempFiles)
+ public MultipartRequest(HttpServletRequest request, MultipartConfig config)
{
super(request);
this.request = request;
- this.createTempFiles = createTempFiles;
+ this.config = config;
+
+ String contentLength = request.getHeader("Content-Length");
+ if (contentLength != null && config.getMaxRequestSize() > 0 &&
+ Integer.parseInt(contentLength) > config.getMaxRequestSize())
+ {
+ throw new RuntimeException("Multipart request is larger than allowed size");
+ }
}
private void parseRequest()
@@ -295,7 +301,7 @@
if (headers.containsKey(PARAM_FILENAME))
{
FileParam fp = new FileParam(paramName);
- if (createTempFiles) fp.createTempFile();
+ if (config.getCreateTempFiles()) fp.createTempFile();
fp.setContentType(headers.get(PARAM_CONTENT_TYPE));
fp.setFilename(headers.get(PARAM_FILENAME));
p = fp;
1.4 +9 -8 jboss-seam/src/main/org/jboss/seam/servlet/SeamMultipartFilter.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: SeamMultipartFilter.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/servlet/SeamMultipartFilter.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- SeamMultipartFilter.java 4 Feb 2007 08:11:34 -0000 1.3
+++ SeamMultipartFilter.java 6 Feb 2007 16:25:23 -0000 1.4
@@ -10,22 +10,23 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import org.jboss.seam.contexts.Context;
+import org.jboss.seam.contexts.WebApplicationContext;
+
public class SeamMultipartFilter extends SeamFilter
{
public static final String MULTIPART = "multipart/";
- private boolean createTempFiles = false;
+ private MultipartConfig config;
@Override
public void init(FilterConfig filterConfig)
throws ServletException
{
super.init(filterConfig);
- String param = filterConfig.getInitParameter("createTempFiles");
- if (param != null)
- {
- createTempFiles = "true".equals(param);
- }
+
+ Context appContext = new WebApplicationContext(getServletContext());
+ config = (MultipartConfig) appContext.get(MultipartConfig.class);
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
@@ -41,7 +42,7 @@
if (isMultipartRequest(httpRequest))
{
- chain.doFilter(new MultipartRequest(httpRequest, createTempFiles), response);
+ chain.doFilter(new MultipartRequest(httpRequest, config), response);
}
else
{
1.1 date: 2007/02/06 16:25:23; author: sbryzak2; state: Exp;jboss-seam/src/main/org/jboss/seam/servlet/MultipartConfig.java
Index: MultipartConfig.java
===================================================================
package org.jboss.seam.servlet;
import static org.jboss.seam.InterceptionType.NEVER;
import static org.jboss.seam.ScopeType.APPLICATION;
import static org.jboss.seam.annotations.Install.BUILT_IN;
import org.jboss.seam.Component;
import org.jboss.seam.annotations.Install;
import org.jboss.seam.annotations.Intercept;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.annotations.Startup;
import org.jboss.seam.contexts.Contexts;
/**
* Contains configuration options for processing multipart requests
*
* @author Shane Bryzak
*/
@Startup
@Scope(APPLICATION)
@Name("org.jboss.seam.multipartConfig")
@Install(precedence=BUILT_IN)
@Intercept(NEVER)
public class MultipartConfig
{
private boolean createTempFiles = false;
private int maxRequestSize = 0; // no limit
public static MultipartConfig instance()
{
if ( !Contexts.isApplicationContextActive() )
{
throw new IllegalStateException("No active application scope");
}
return (MultipartConfig) Component.getInstance(MultipartConfig.class);
}
public boolean getCreateTempFiles()
{
return createTempFiles;
}
public void setCreateTempFiles(boolean createTempFiles)
{
this.createTempFiles = createTempFiles;
}
public int getMaxRequestSize()
{
return maxRequestSize;
}
public void setMaxRequestSize(int maxFileSize)
{
this.maxRequestSize = maxFileSize;
}
}
More information about the jboss-cvs-commits
mailing list