[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