You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by gc...@apache.org on 2012/04/25 01:40:26 UTC

svn commit: r1330065 - in /myfaces/trinidad/trunk: trinidad-api/src/main/java/org/apache/myfaces/trinidad/context/ trinidad-api/src/main/java/org/apache/myfaces/trinidad/webapp/ trinidad-api/src/test/java/org/apache/myfaces/trinidad/context/ trinidad-i...

Author: gcrawford
Date: Tue Apr 24 23:40:26 2012
New Revision: 1330065

URL: http://svn.apache.org/viewvc?rev=1330065&view=rev
Log:
TRINIDAD-2258 Add Chunked File Upload support to the Trinidad Upload Framwork

Thanks to Kentaro

Modified:
    myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/context/RequestContext.java
    myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/webapp/UploadedFileProcessor.java
    myfaces/trinidad/trunk/trinidad-api/src/test/java/org/apache/myfaces/trinidad/context/MockRequestContext.java
    myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/upload/CompositeUploadedFileProcessorImpl.java
    myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/upload/FileUploadConfiguratorImpl.java
    myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/upload/UploadedFileProcessorImpl.java
    myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/RequestContextBean.java
    myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/RequestContextImpl.java
    myfaces/trinidad/trunk/trinidad-impl/src/test/java/org/apache/myfaces/trinidadinternal/renderkit/MRequestContext.java

Modified: myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/context/RequestContext.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/context/RequestContext.java?rev=1330065&r1=1330064&r2=1330065&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/context/RequestContext.java (original)
+++ myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/context/RequestContext.java Tue Apr 24 23:40:26 2012
@@ -698,6 +698,10 @@ abstract public class RequestContext
   public abstract Long getUploadedFileMaxMemory();
 
   public abstract Long getUploadedFileMaxDiskSpace();
+  
+  public abstract Long getUploadedFileMaxFileSize();
+  
+  public abstract Long getUploadedFileMaxChunkSize();
 
   public abstract String getUploadedFileTempDir();
 

Modified: myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/webapp/UploadedFileProcessor.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/webapp/UploadedFileProcessor.java?rev=1330065&r1=1330064&r2=1330065&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/webapp/UploadedFileProcessor.java (original)
+++ myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/webapp/UploadedFileProcessor.java Tue Apr 24 23:40:26 2012
@@ -41,8 +41,12 @@ import org.apache.myfaces.trinidad.model
  * <li>org.apache.myfaces.trinidad.UPLOAD_MAX_DISK_SPACE: the maximum amount of
  *  disk space that can be used in a single request to store
  *  uploaded files.  (Default of 2000K)
+ * <li>org.apache.myfaces.trinidad.UPLOAD_MAX_FILE_SIZE: the maximum
+ *  file size that can be uploaded.  (Default of 2000K)
  * <li>org.apache.myfaces.trinidad.UPLOAD_TEMP_DIR: the name of a directory
  *   to store temporary files.  (Defaults to the user's temporary directory)
+ * <li>org.apache.myfaces.trinidad.UPLOAD_MAX_CHUNK_SIZE: the maximum
+ *  chunk size that large files will be split into during upload.  (Default of 2000M)
  * </ul>
  * 
  * @see org.apache.myfaces.trinidad.model.UploadedFile
@@ -89,6 +93,38 @@ public interface UploadedFileProcessor
   public static final String MAX_FILE_SIZE_PARAM_NAME = "org.apache.myfaces.trinidad.UPLOAD_MAX_FILE_SIZE";
   
   /**
+   * Initialization parameter for the default
+   * <code>UploadedFileProcessor</code> that configures the maximum
+   * chunk size that large files will be split into during upload. 
+   * The default is 2000M and is also the maximum allowed value.
+   */
+  public static final String MAX_CHUNK_SIZE_PARAM_NAME = "org.apache.myfaces.trinidad.UPLOAD_MAX_CHUNK_SIZE";
+  
+  /**
+   * Initialization parameter default value of 100 kilobytes for the default
+   * <code>UploadedFileProcessor</code> parameter MAX_MEMORY_PARAM_NAME.
+   */
+  public static final long DEFAULT_MAX_MEMORY = 102400L;
+  
+  /**
+   * Initialization parameter default value of 2000 kilobytes for the default
+   * <code>UploadedFileProcessor</code> parameter MAX_DISK_SPACE_PARAM_NAME.
+   */
+  public static final long DEFAULT_MAX_DISK_SPACE = 2048000L;
+  
+  /**
+   * Initialization parameter default value of 2000 kilobytes for the default
+   * <code>UploadedFileProcessor</code> parameter MAX_FILE_SIZE_PARAM_NAME.
+   */
+  public static final long DEFAULT_MAX_FILE_SIZE = 2048000L;
+  
+  /**
+   * Initialization parameter default value of 2000 megabytes for the default
+   * <code>UploadedFileProcessor</code> parameter MAX_CHUNK_PARAM_NAME.
+   */
+  public static final long DEFAULT_MAX_CHUNK_SIZE = 2000000000L;
+  
+  /**
    * Initialize the UploadedFileProcessor with access to the current
    * web application context. 
    * 

Modified: myfaces/trinidad/trunk/trinidad-api/src/test/java/org/apache/myfaces/trinidad/context/MockRequestContext.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-api/src/test/java/org/apache/myfaces/trinidad/context/MockRequestContext.java?rev=1330065&r1=1330064&r2=1330065&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-api/src/test/java/org/apache/myfaces/trinidad/context/MockRequestContext.java (original)
+++ myfaces/trinidad/trunk/trinidad-api/src/test/java/org/apache/myfaces/trinidad/context/MockRequestContext.java Tue Apr 24 23:40:26 2012
@@ -295,6 +295,28 @@ public class MockRequestContext extends 
     return _maxDiskSpace;
   }
 
+  public void setUploadedFileMaxFileSize(Long maxFileSize)
+  {
+    _maxFileSize = maxFileSize;
+  }
+
+  @Override
+  public Long getUploadedFileMaxFileSize()
+  {
+    return _maxFileSize;
+  }
+
+  public void setUploadedFileMaxChunkSize(Long maxChunkSize)
+  {
+    _maxChunkSize = maxChunkSize;
+  }
+
+  @Override
+  public Long getUploadedFileMaxChunkSize()
+  {
+    return _maxChunkSize;
+  }
+
   public void setUploadedFileTempDir(String tempDir)
   {
     _tempDir= tempDir;
@@ -445,5 +467,7 @@ public class MockRequestContext extends 
   private Locale _formattingLocale;
   private Long _maxMemory;
   private Long _maxDiskSpace;
+  private Long _maxFileSize;
+  private Long _maxChunkSize;
   private String _tempDir;
 }

Modified: myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/upload/CompositeUploadedFileProcessorImpl.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/upload/CompositeUploadedFileProcessorImpl.java?rev=1330065&r1=1330064&r2=1330065&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/upload/CompositeUploadedFileProcessorImpl.java (original)
+++ myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/upload/CompositeUploadedFileProcessorImpl.java Tue Apr 24 23:40:26 2012
@@ -229,12 +229,12 @@ public class CompositeUploadedFileProces
         }
         catch (NumberFormatException nfe)
         {
-          _maxMemory = _DEFAULT_MAX_MEMORY;
+          _maxMemory = DEFAULT_MAX_MEMORY;
         }
       }
       else
       {
-        _maxMemory = _DEFAULT_MAX_MEMORY;
+        _maxMemory = DEFAULT_MAX_MEMORY;
       }
     }
 
@@ -249,12 +249,12 @@ public class CompositeUploadedFileProces
         }
         catch (NumberFormatException nfe)
         {
-          _maxDiskSpace = _DEFAULT_MAX_DISK_SPACE;
+          _maxDiskSpace = DEFAULT_MAX_DISK_SPACE;
         }
       }
       else
       {
-        _maxDiskSpace = _DEFAULT_MAX_DISK_SPACE;
+        _maxDiskSpace = DEFAULT_MAX_DISK_SPACE;
       }
     }
 
@@ -283,12 +283,12 @@ public class CompositeUploadedFileProces
         }
         catch (NumberFormatException nfe)
         {
-          _maxFileSize = _DEFAULT_MAX_FILE_SIZE;
+          _maxFileSize = DEFAULT_MAX_FILE_SIZE;
         }
       }
       else
       {
-        _maxFileSize = _DEFAULT_MAX_FILE_SIZE;
+        _maxFileSize = DEFAULT_MAX_FILE_SIZE;
       }
     }
   }
@@ -483,10 +483,6 @@ public class CompositeUploadedFileProces
   private long   _maxFileSize = -1;
   private String _tempDir = null;
 
-  private static final long _DEFAULT_MAX_MEMORY = 102400;
-  private static final long _DEFAULT_MAX_DISK_SPACE = 2048000;
-  private static final long _DEFAULT_MAX_FILE_SIZE = 2048000;
-
   private static final String _REQUEST_INFO_KEY = CompositeUploadedFileProcessorImpl.class.getName()+
     ".UploadedFilesInfo";
 

Modified: myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/upload/FileUploadConfiguratorImpl.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/upload/FileUploadConfiguratorImpl.java?rev=1330065&r1=1330064&r2=1330065&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/upload/FileUploadConfiguratorImpl.java (original)
+++ myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/upload/FileUploadConfiguratorImpl.java Tue Apr 24 23:40:26 2012
@@ -18,11 +18,18 @@
  */
 package org.apache.myfaces.trinidadinternal.config.upload;
 
+import java.io.File;
+import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 
+import java.io.SequenceInputStream;
+
 import java.lang.reflect.Proxy;
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -34,8 +41,6 @@ import javax.portlet.faces.annotation.Ex
 
 import javax.servlet.http.HttpServletRequest;
 
-import javax.servlet.http.HttpServletResponse;
-
 import org.apache.myfaces.trinidad.config.Configurator;
 import org.apache.myfaces.trinidad.context.RequestContext;
 import org.apache.myfaces.trinidad.logging.TrinidadLogger;
@@ -191,6 +196,28 @@ public class FileUploadConfiguratorImpl 
                 }
               }
             }
+            else if (uploadType.equals("multipleAddChunk"))
+            {
+              String itemName = parameters.get("itemName")[0];
+              String fileName = externalContext.getRequestHeaderMap().get(_MULTIPLE_UPLOAD_CHUNK_FILENAME_PARAM);
+              Long chunkNum = Long.parseLong(externalContext.getRequestHeaderMap().get(_MULTIPLE_UPLOAD_CHUNK_NUM_PARAM));
+              Long chunkCount = Long.parseLong(externalContext.getRequestHeaderMap().get(_MULTIPLE_UPLOAD_CHUNK_COUNT_PARAM));
+              UploadedFile file = files.getUploadedFile(itemName);
+              List<UploadedFile> chunkList = (List<UploadedFile>) externalContext.getSessionMap().get(_UPLOADED_CHUNK_FILES_LIST_KEY);
+              if (chunkList == null)
+              {
+                chunkList = new ArrayList<UploadedFile>();
+                externalContext.getSessionMap().put(_UPLOADED_CHUNK_FILES_LIST_KEY, chunkList);
+              }
+              chunkList.add(file);
+              if (chunkNum == chunkCount - 1)
+              {
+                UploadedFile combinedFile = new ChunkedUploadedFile(fileName, file.getContentType(), chunkList);
+                sessionFiles.__put(itemName, combinedFile);
+                externalContext.getSessionMap().remove(_UPLOADED_CHUNK_FILES_LIST_KEY);
+              }
+              files.getUploadedFileMap().clear();
+            }
           }
         }
         externalContext.getRequestMap().put(_PARAMS, parameters);
@@ -253,7 +280,18 @@ public class FileUploadConfiguratorImpl 
       final UploadedFiles     files,
       final MultipartFormItem item) throws IOException
   {
-    final UploadedFile temp = new TempUploadedFile(item);
+    String filename = item.getFilename();              
+    String chunkFilename = externalContext.getRequestHeaderMap().get(_MULTIPLE_UPLOAD_CHUNK_FILENAME_PARAM);
+    if (chunkFilename != null)
+    {
+      // We store the filename in a special header when sending chunked data. The reason is that
+      // browsers do not have an API for setting the filename on Blob objects. Also, append the chunk num
+      // so it's easier to keep track of.
+      String chunkNum = externalContext.getRequestHeaderMap().get(_MULTIPLE_UPLOAD_CHUNK_NUM_PARAM);
+      chunkFilename = chunkFilename + ".part" + chunkNum;
+      filename = chunkFilename;
+    }
+    final UploadedFile temp = new TempUploadedFile(filename, item);
     Map<String, Object> sessionMap = externalContext.getSessionMap();
     Map<String, Object> requestMap = externalContext.getRequestMap();
     
@@ -261,7 +299,8 @@ public class FileUploadConfiguratorImpl 
       UploadedFileProcessor.MAX_MEMORY_PARAM_NAME,
       UploadedFileProcessor.MAX_DISK_SPACE_PARAM_NAME,
       UploadedFileProcessor.TEMP_DIR_PARAM_NAME,
-      UploadedFileProcessor.MAX_FILE_SIZE_PARAM_NAME);
+      UploadedFileProcessor.MAX_FILE_SIZE_PARAM_NAME,
+      UploadedFileProcessor.MAX_CHUNK_SIZE_PARAM_NAME);
     
     final UploadedFile file =
       context.getUploadedFileProcessor().processFile(externalContext.getRequest(), temp);
@@ -364,15 +403,16 @@ public class FileUploadConfiguratorImpl 
 
   static private class TempUploadedFile implements UploadedFile
   {
-    public TempUploadedFile(MultipartFormItem item)
+    public TempUploadedFile(String filename, MultipartFormItem item)
     {
+      _filename = filename;
       _item = item;
       assert(item.getValue() == null);
     }
 
     public String getFilename()
     {
-      return _item.getFilename();
+      return _filename != null ? _filename : _item.getFilename();
     }
 
     public String getContentType()
@@ -402,12 +442,92 @@ public class FileUploadConfiguratorImpl 
     }
 
     private MultipartFormItem _item;
+    private String _filename = null;
+  }
+  static private class ChunkedUploadedFile implements UploadedFile
+  {
+    private List<UploadedFile> _uploadedFileChunkList = null;
+    private String _filename = null;
+    private String _contentType = null;
+    
+    public ChunkedUploadedFile(String filename, String contentType, List<UploadedFile> uploadedFileChunkList)
+    {
+      _filename = filename;
+      _contentType = contentType;
+      _uploadedFileChunkList = uploadedFileChunkList;
+    }
+    
+    public String getFilename()
+    {
+      return _filename;
+    }
+
+    public String getContentType()
+    {
+      return _contentType;
+    }
+    
+    public long getLength()
+    {
+      Long totalLength = 0L;
+      for (UploadedFile file : _uploadedFileChunkList)
+      {
+        if (file.getLength() == -1L)
+        {
+          // there was an error so return -1
+          return -1L;
+        }
+        totalLength = totalLength + file.getLength();
+      }
+      return totalLength;
+    }
+
+    public Object getOpaqueData()
+    {
+      for (UploadedFile file : _uploadedFileChunkList)
+      {
+        if (file.getLength() == -1L)
+        {
+          // there was an error so return the data
+          return file.getOpaqueData();
+        }
+      }
+      return null;
+    }
+
+    public InputStream getInputStream() throws IOException
+    {
+      List<InputStream> inputSteamList = new ArrayList<InputStream>(_uploadedFileChunkList.size());
+      for (UploadedFile uploadedFileChunk : _uploadedFileChunkList)
+        inputSteamList.add(uploadedFileChunk.getInputStream());
+      
+      return new SequenceInputStream(Collections.enumeration(inputSteamList));
+    }
+
+    public void dispose()
+    {
+      for (UploadedFile uploadedFileChunk : _uploadedFileChunkList)
+      {
+        try
+        {
+          uploadedFileChunk.dispose();
+        }
+        catch (Exception e)
+        {
+          // Just keep trying to dispose of the rest of the chunks
+        }
+      }
+    }
   }
   static private final String _APPLIED = FileUploadConfiguratorImpl.class.getName()+".APPLIED";
   static private final TrinidadLogger _LOG = TrinidadLogger.createTrinidadLogger(FileUploadConfiguratorImpl.class);
   static private final String _PARAMS = FileUploadConfiguratorImpl.class.getName()+".PARAMS";
   static private final boolean _ENHANCED_PORTLET_SUPPORTED = ExternalContextUtils.isRequestTypeSupported(RequestType.RESOURCE);
   static private final String _MULTIPLE_UPLOAD_PARAM = "org.apache.myfaces.trinidad.UploadedFiles";
+  static private final String _MULTIPLE_UPLOAD_CHUNK_NUM_PARAM = "X-Trinidad-chunkNum";
+  static private final String _MULTIPLE_UPLOAD_CHUNK_COUNT_PARAM = "X-Trinidad-chunkCount";
+  static private final String _MULTIPLE_UPLOAD_CHUNK_FILENAME_PARAM = "X-Trinidad-chunkFilename";
+  static private final String _UPLOADED_CHUNK_FILES_LIST_KEY = "org.apache.myfaces.trinidadinternal.webapp.UploadedFiles.ChunkList";
   
   private long _maxAllowedBytes = 1L << 27;
 }

Modified: myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/upload/UploadedFileProcessorImpl.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/upload/UploadedFileProcessorImpl.java?rev=1330065&r1=1330064&r2=1330065&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/upload/UploadedFileProcessorImpl.java (original)
+++ myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/upload/UploadedFileProcessorImpl.java Tue Apr 24 23:40:26 2012
@@ -78,12 +78,12 @@ public class UploadedFileProcessorImpl i
         }
         catch (NumberFormatException nfe)
         {
-          _maxMemory = _DEFAULT_MAX_MEMORY;
+          _maxMemory = DEFAULT_MAX_MEMORY;
         }
       }
       else
       {
-        _maxMemory = _DEFAULT_MAX_MEMORY;
+        _maxMemory = DEFAULT_MAX_MEMORY;
       }
     }
 
@@ -98,12 +98,12 @@ public class UploadedFileProcessorImpl i
         }
         catch (NumberFormatException nfe)
         {
-          _maxDiskSpace = _DEFAULT_MAX_DISK_SPACE;
+          _maxDiskSpace = DEFAULT_MAX_DISK_SPACE;
         }
       }
       else
       {
-        _maxDiskSpace = _DEFAULT_MAX_DISK_SPACE;
+        _maxDiskSpace = DEFAULT_MAX_DISK_SPACE;
       }
     }
 
@@ -132,12 +132,12 @@ public class UploadedFileProcessorImpl i
         }
         catch (NumberFormatException nfe)
         {
-          _maxFileSize = _DEFAULT_MAX_FILE_SIZE;
+          _maxFileSize = DEFAULT_MAX_FILE_SIZE;
         }
       }
       else
       {
-        _maxFileSize = _DEFAULT_MAX_FILE_SIZE;
+        _maxFileSize = DEFAULT_MAX_FILE_SIZE;
       }
     }
   }
@@ -326,10 +326,6 @@ public class UploadedFileProcessorImpl i
   private long   _maxFileSize = -1;
   private String _tempDir = null;
 
-  private static final long _DEFAULT_MAX_MEMORY = 102400;
-  private static final long _DEFAULT_MAX_DISK_SPACE = 2048000;
-  private static final long _DEFAULT_MAX_FILE_SIZE = 2048000;
-
   private static final String _REQUEST_INFO_KEY = UploadedFileProcessorImpl.class.getName()+
     ".UploadedFilesInfo";
 

Modified: myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/RequestContextBean.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/RequestContextBean.java?rev=1330065&r1=1330064&r2=1330065&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/RequestContextBean.java (original)
+++ myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/RequestContextBean.java Tue Apr 24 23:40:26 2012
@@ -78,6 +78,10 @@ public class RequestContextBean extends 
     TYPE.registerKey("uploaded-file-max-memory", Long.class);
   static public final PropertyKey UPLOADED_FILE_MAX_DISK_SPACE_KEY = 
     TYPE.registerKey("uploaded-file-max-disk-space", Long.class);
+  static public final PropertyKey UPLOADED_FILE_MAX_FILE_SIZE_KEY = 
+    TYPE.registerKey("uploaded-file-max-file-size", Long.class);
+  static public final PropertyKey UPLOADED_FILE_MAX_CHUNK_SIZE_KEY = 
+    TYPE.registerKey("uploaded-file-max-chunk-size", Long.class);
   static public final PropertyKey UPLOADED_FILE_TEMP_DIR_KEY = 
     TYPE.registerKey("uploaded-file-temp-dir");
   static public final PropertyKey REMOTE_DEVICE_REPOSITORY_URI =

Modified: myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/RequestContextImpl.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/RequestContextImpl.java?rev=1330065&r1=1330064&r2=1330065&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/RequestContextImpl.java (original)
+++ myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/RequestContextImpl.java Tue Apr 24 23:40:26 2012
@@ -175,6 +175,18 @@ public class RequestContextImpl extends 
   {
     return (Long) _bean.getProperty(RequestContextBean.UPLOADED_FILE_MAX_DISK_SPACE_KEY);
   }
+  
+  @Override
+  public Long getUploadedFileMaxFileSize()
+  {
+    return (Long) _bean.getProperty(RequestContextBean.UPLOADED_FILE_MAX_FILE_SIZE_KEY);
+  }
+  
+  @Override
+  public Long getUploadedFileMaxChunkSize()
+  {
+    return (Long) _bean.getProperty(RequestContextBean.UPLOADED_FILE_MAX_CHUNK_SIZE_KEY);
+  }
 
   @Override
   public String getUploadedFileTempDir()

Modified: myfaces/trinidad/trunk/trinidad-impl/src/test/java/org/apache/myfaces/trinidadinternal/renderkit/MRequestContext.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-impl/src/test/java/org/apache/myfaces/trinidadinternal/renderkit/MRequestContext.java?rev=1330065&r1=1330064&r2=1330065&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-impl/src/test/java/org/apache/myfaces/trinidadinternal/renderkit/MRequestContext.java (original)
+++ myfaces/trinidad/trunk/trinidad-impl/src/test/java/org/apache/myfaces/trinidadinternal/renderkit/MRequestContext.java Tue Apr 24 23:40:26 2012
@@ -280,6 +280,28 @@ public class MRequestContext extends Req
   {
     return _maxDiskSpace;
   }
+  
+  public void setUploadedFileMaxFileSize(Long maxFileSize)
+  {
+    _maxFileSize = maxFileSize;
+  }
+  
+  @Override
+  public Long getUploadedFileMaxFileSize()
+  {
+    return _maxFileSize;
+  }
+  
+  public void setUploadedFileMaxChunkSize(Long maxChunkSize)
+  {
+    _maxChunkSize = maxChunkSize;
+  }
+
+  @Override
+  public Long getUploadedFileMaxChunkSize()
+  {
+    return _maxChunkSize;
+  }
 
   public void setUploadedFileTempDir(String tempDir)
   {
@@ -413,6 +435,8 @@ public class MRequestContext extends Req
   private String _skin;
   private Long _maxMemory;
   private Long _maxDiskSpace;
+  private Long _maxFileSize;
+  private Long _maxChunkSize;
   private String _tempDir;
   private Accessibility _accMode;
   private AccessibilityProfile _accProfile;