You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by jk...@apache.org on 2006/03/21 19:49:37 UTC

svn commit: r387601 - in /jakarta/tapestry/branches/4.0: ./ framework/src/documentation/content/xdocs/tapestry/ComponentReference/ framework/src/java/org/apache/tapestry/form/ framework/src/java/org/apache/tapestry/multipart/ framework/src/java/org/apa...

Author: jkuhnert
Date: Tue Mar 21 10:49:35 2006
New Revision: 387601

URL: http://svn.apache.org/viewcvs?rev=387601&view=rev
Log:
Applied patches, refactored MultipartDecoder to allow specifying the max file upload size

Modified:
    jakarta/tapestry/branches/4.0/framework/src/documentation/content/xdocs/tapestry/ComponentReference/Upload.xml
    jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/form/Upload.java
    jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/form/Upload.jwc
    jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/multipart/AbstractMultipartDecoder.java
    jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/multipart/MultipartDecoder.java
    jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/multipart/MultipartDecoderImpl.java
    jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/multipart/ServletMultipartDecoder.java
    jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/valid/ValidationStrings_de.properties
    jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/valid/ValidationStrings_pt_BR.properties
    jakarta/tapestry/branches/4.0/portlet/src/java/org/apache/tapestry/portlet/multipart/PortletMultipartDecoderImpl.java
    jakarta/tapestry/branches/4.0/status.xml

Modified: jakarta/tapestry/branches/4.0/framework/src/documentation/content/xdocs/tapestry/ComponentReference/Upload.xml
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/branches/4.0/framework/src/documentation/content/xdocs/tapestry/ComponentReference/Upload.xml?rev=387601&r1=387600&r2=387601&view=diff
==============================================================================
--- jakarta/tapestry/branches/4.0/framework/src/documentation/content/xdocs/tapestry/ComponentReference/Upload.xml (original)
+++ jakarta/tapestry/branches/4.0/framework/src/documentation/content/xdocs/tapestry/ComponentReference/Upload.xml Tue Mar 21 10:49:35 2006
@@ -110,7 +110,18 @@
     </td>
 
   </tr>
+  <tr>
 
+    <td>maxSize</td>
+    <td>long</td>
+    <td>in</td>
+    <td>no</td>
+    <td>10000000</td>
+    <td>
+      The default maximum file upload size, in bytes. Default is 10kb.
+    </td>
+
+  </tr>
 </table>
 
 <p>

Modified: jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/form/Upload.java
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/form/Upload.java?rev=387601&r1=387600&r2=387601&view=diff
==============================================================================
--- jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/form/Upload.java (original)
+++ jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/form/Upload.java Tue Mar 21 10:49:35 2006
@@ -46,11 +46,11 @@
     {
         // Force the form to use the correct encoding type for file uploads.
         IForm form = getForm();
-
+        
         form.setEncodingType("multipart/form-data");
-
+        
         renderDelegatePrefix(writer, cycle);
-
+        
         writer.beginEmpty("input");
         writer.attribute("type", "file");
         writer.attribute("name", getName());
@@ -79,6 +79,9 @@
      */
     protected void rewindFormComponent(IMarkupWriter writer, IRequestCycle cycle)
     {
+    	// set the max file upload size first
+    	getDecoder().setSizeMax(getMaxSize());
+    	
         IUploadFile file = getDecoder().getFileUpload(getName());
         
         if (HiveMind.isBlank(file.getFileName()))
@@ -97,6 +100,12 @@
             getForm().getDelegate().record(e);
         }
     }
+    
+    /**
+     * Max size parameter, in bytes. 
+     * @return The maximum file size that may be uploaded.
+     */
+    public abstract long getMaxSize();
     
     /**
      * Injected.

Modified: jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/form/Upload.jwc
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/form/Upload.jwc?rev=387601&r1=387600&r2=387601&view=diff
==============================================================================
--- jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/form/Upload.jwc (original)
+++ jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/form/Upload.jwc Tue Mar 21 10:49:35 2006
@@ -38,7 +38,9 @@
   <parameter name="displayName"/>
   <parameter name="validators"/>
   <parameter name="id" property="idParameter" default-value="id"/>
-
+  
+  <parameter name="maxSize" default-value="10000000" />
+  
   <reserved-parameter name="type"/>
   <reserved-parameter name="name"/>
   

Modified: jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/multipart/AbstractMultipartDecoder.java
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/multipart/AbstractMultipartDecoder.java?rev=387601&r1=387600&r2=387601&view=diff
==============================================================================
--- jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/multipart/AbstractMultipartDecoder.java (original)
+++ jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/multipart/AbstractMultipartDecoder.java Tue Mar 21 10:49:35 2006
@@ -40,8 +40,6 @@
 	 */
 	private Map _valueParts = new HashMap();
 
-	protected int _maxSize = 10000000;
-
 	protected int _thresholdSize = 1024;
 
 	protected String _repositoryPath = System.getProperty("java.io.tmpdir");

Modified: jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/multipart/MultipartDecoder.java
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/multipart/MultipartDecoder.java?rev=387601&r1=387600&r2=387601&view=diff
==============================================================================
--- jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/multipart/MultipartDecoder.java (original)
+++ jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/multipart/MultipartDecoder.java Tue Mar 21 10:49:35 2006
@@ -33,6 +33,16 @@
 
 	public IUploadFile getFileUpload(String parameterName);
 
+    /**
+     * Sets the maximum upload file size on the resulting {@link FileUpload} 
+     * object.
+     * 
+     * @see <a href="http://jakarta.apache.org/commons/fileupload/apidocs/org/apache/commons/fileupload/FileUploadBase.html#setSizeMax(long)">FileUpload</a>
+     * @param sizeMax The maximum file size allowed for uploads, default is 10kb
+     */
+    
+    public void setSizeMax(long sizeMax);
+    
 	/**
 	 * Cleans up any temporary resources created during the request processing.
 	 * This typically includes temporary files used to contain uploaded file

Modified: jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/multipart/MultipartDecoderImpl.java
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/multipart/MultipartDecoderImpl.java?rev=387601&r1=387600&r2=387601&view=diff
==============================================================================
--- jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/multipart/MultipartDecoderImpl.java (original)
+++ jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/multipart/MultipartDecoderImpl.java Tue Mar 21 10:49:35 2006
@@ -35,7 +35,10 @@
  * @since 4.0
  */
 public class MultipartDecoderImpl extends AbstractMultipartDecoder implements ServletMultipartDecoder
-{
+{	
+	/* maximum size of file allowed to be uploaded */
+	protected long _sizeMax = 10000000;
+	
     public HttpServletRequest decode(HttpServletRequest request)
     {
         _encoding = request.getCharacterEncoding();
@@ -57,15 +60,25 @@
 
         return new UploadFormParametersWrapper(request, parameterMap);
     }
-
+    
 	private ServletFileUpload createFileUpload() {
     	FileItemFactory factory = new DiskFileItemFactory(_thresholdSize, new File(_repositoryPath));
     	ServletFileUpload upload = new ServletFileUpload(factory);
-
+    	
+    	//set maximum file upload size
+    	upload.setSizeMax(_sizeMax);
+    	
         if (_encoding != null)
             upload.setHeaderEncoding(_encoding);
 
         return upload;
 	}
-
+	
+	/**
+	 * {@inheritDoc}
+	 */
+	public void setSizeMax(long sizeMax)
+	{
+		_sizeMax = sizeMax;
+	}
 }

Modified: jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/multipart/ServletMultipartDecoder.java
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/multipart/ServletMultipartDecoder.java?rev=387601&r1=387600&r2=387601&view=diff
==============================================================================
--- jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/multipart/ServletMultipartDecoder.java (original)
+++ jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/multipart/ServletMultipartDecoder.java Tue Mar 21 10:49:35 2006
@@ -28,5 +28,4 @@
      */
 
     public HttpServletRequest decode(HttpServletRequest request);
-
 }

Modified: jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/valid/ValidationStrings_de.properties
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/valid/ValidationStrings_de.properties?rev=387601&r1=387600&r2=387601&view=diff
==============================================================================
--- jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/valid/ValidationStrings_de.properties (original)
+++ jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/valid/ValidationStrings_de.properties Tue Mar 21 10:49:35 2006
@@ -1,28 +1,29 @@
-# Copyright 2005 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
 field-is-required=Eingabefeld {0} ist ein Pflichtfeld.
-field-too-short=Sie m\u00c3\u00bcssen min. {0} Zeichen in das Eingabefeld {1} eingeben.
+field-too-short=Sie müssen min. {0} Zeichen in das Eingabefeld {1} eingeben.
 invalid-date-format=Das Eingabefeld ''{0}'' hat ein falsches Datumsformat (Eingabeformat ist {1}).
 invalid-int-format=Eingabefeld {0} erwartet einen numerischen Wert.
 invalid-format=Das Eingabefeld ''{0}'' hat nicht das gew\u00fcnschte Format.
 invalid-numeric-format=Eingabefeld {0} erwartet einen numerischen Wert.
 
-date-too-early=Das Datum f\u00fcr das Eingabefeld ''{0}'' kann nur der {1} oder sp\u00e4ter sein.
-date-too-late=Das Datum f\u00fcr das Eingabefeld ''{0}'' kann nur der {1} oder fr\u00fcher sein.
+date-too-early=Das Datum für das Eingabefeld ''{0}'' kann nur der {1} oder später sein.
+date-too-late=Das Datum für das Eingabefeld ''{0}'' kann nur der {1} oder früher sein.
 
-number-too-small=Der Wert f\u00fcr das Eingabefeld ''{0}'' darf nicht kleiner als {1} sein.
-number-too-large=Der Wert f\u00fcr das Eingabefeld ''{0}'' darf nicht gr\u00f6\u00dfer als {1} sein.
+number-too-small=Der Wert für das Eingabefeld ''{0}'' darf nicht kleiner als {1} sein.
+number-too-large=Der Wert für das Eingabefeld ''{0}'' darf nicht grösser als {1} sein.
 
 number-range=Der Wert f\u00fcr das Eingabefeld ''{0}'' darf nur zwischen {1} und {2} liegen.
+
+invalid-email-format=Feld {0} enthält keine gültige Email-Adresse.  Das Format ist user@hostname.
+
+pattern-not-matched={0} genügt nicht dem geforderten Pattern {1}.
+
+invalid-url-format = Ungültige URL.
+disallowed-protocol = Unerlaubtes Protokoll - Das Protokoll muss {0} sein.
+
+### 4.0 ###
+
+field-too-long=Sie dürfen höchstens {0} Zeichen für {1} eingeben.
+
+regex-mismatch={0} ist ungültig.
+
+invalid-field-equality={0} muss {1,choice,0#einen anderen|1#den gleichen} Wert wie {2} haben.

Modified: jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/valid/ValidationStrings_pt_BR.properties
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/valid/ValidationStrings_pt_BR.properties?rev=387601&r1=387600&r2=387601&view=diff
==============================================================================
--- jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/valid/ValidationStrings_pt_BR.properties (original)
+++ jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/valid/ValidationStrings_pt_BR.properties Tue Mar 21 10:49:35 2006
@@ -12,33 +12,33 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-field-is-required=Por favor, digite um valor para o campo "{0}".
-field-too-short=O campo "{0}" deve ter pelo menos {1} caracteres.
+field-is-required=Por favor, digite um valor para o campo '{0}'.
+field-too-short=O campo '{0}' deve ter pelo menos {1} caracteres.
 
-invalid-date-format=Formato de data inv\u00e1lido para o campo "{0}". A data deve estar no formato "{1}".
-invalid-int-format=O campo "{0}" deve conter um n\u00famero inteiro.
-invalid-format="{0}" n\u00e3o \u00e9 um formato reconhecido.
-invalid-numeric-format=O campo "{0}" deve conter um valor num\u00e9rico.
+invalid-date-format=Formato de data inv\u00e1lido para o campo '{0}'. A data deve estar no formato '{1}'.
+invalid-int-format=O campo '{0}' deve conter um n\u00famero inteiro.
+invalid-format='{0}' n\u00e3o \u00e9 um formato reconhecido.
+invalid-numeric-format=O campo '{0}' deve conter um valor num\u00e9rico.
 
-date-too-early=O campo "{0}" deve conter uma data posterior ou igual a {1}.
-date-too-late=O campo "{0}" deve conter uma data anterior ou igual a {1}.
+date-too-early=O campo '{0}' deve conter uma data posterior ou igual a {1}.
+date-too-late=O campo '{0}' deve conter uma data anterior ou igual a {1}.
 
-number-too-small=O campo "{0}" n\u00e3o pode ser menor que {1}.
-number-too-large=O campo "{0}" n\u00e3o pode ser maior que {1}.
+number-too-small=O campo '{0}' n\u00e3o pode ser menor que {1}.
+number-too-large=O campo '{0}' n\u00e3o pode ser maior que {1}.
 
-number-range=O campo "{0}" deve conter um valor entre {1} e {2}.
+number-range=O campo '{0}' deve conter um valor entre {1} e {2}.
 
-invalid-email-format=Email inv\u00e1lido para o campo "{0}". O email deve estar no formato usuario@provedor.
+invalid-email-format=Email inv\u00e1lido para o campo '{0}'. O email deve estar no formato usuario@provedor.
 
-pattern-not-matched=O campo "{0}" n\u00e3o satisfaz o padr\u00e3o "{1}".
+pattern-not-matched=O campo '{0}' n\u00e3o satisfaz o padr\u00e3o '{1}'.
 
 invalid-url-format = URL inv\u00e1lida.
 disallowed-protocol = Protocolo n\u00e3o permitido. O protocolo deve ser {0}.
 
 ### 4.0 ###
 
-field-too-long=O campo "{0}" deve ter no m\u00e1ximo {1} caracteres.
+field-too-long=O campo '{0}' deve ter no m\u00e1ximo {1} caracteres.
 
-regex-mismatch=O valor do campo "{0}" \u00e9 inv\u00e1lido.
+regex-mismatch=O valor do campo '{0}' \u00e9 inv\u00e1lido.
 
-invalid-field-equality=O campo "{0}" deve ser {1,choice,0#diferente do|1#igual ao} campo "{2}".
+invalid-field-equality=O campo '{0}' deve ser {1,choice,0#diferente do|1#igual ao} campo '{2}'.

Modified: jakarta/tapestry/branches/4.0/portlet/src/java/org/apache/tapestry/portlet/multipart/PortletMultipartDecoderImpl.java
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/branches/4.0/portlet/src/java/org/apache/tapestry/portlet/multipart/PortletMultipartDecoderImpl.java?rev=387601&r1=387600&r2=387601&view=diff
==============================================================================
--- jakarta/tapestry/branches/4.0/portlet/src/java/org/apache/tapestry/portlet/multipart/PortletMultipartDecoderImpl.java (original)
+++ jakarta/tapestry/branches/4.0/portlet/src/java/org/apache/tapestry/portlet/multipart/PortletMultipartDecoderImpl.java Tue Mar 21 10:49:35 2006
@@ -33,6 +33,9 @@
  */
 public class PortletMultipartDecoderImpl extends AbstractMultipartDecoder implements PortletMultipartDecoder {
 
+	/* maximum size of file allowed to be uploaded */
+	protected long _sizeMax = 10000000;
+	
 	public ActionRequest decode(ActionRequest request) {
         _encoding = request.getCharacterEncoding();
 
@@ -53,15 +56,25 @@
 
         return new UploadFormPortletParametersWrapper(request, parameterMap);
 	}
-
+	
 	private PortletFileUpload createFileUpload() {
     	FileItemFactory factory = new DiskFileItemFactory(_thresholdSize, new File(_repositoryPath));
     	PortletFileUpload upload = new PortletFileUpload(factory);
-
+    	
+    	//set maximum file upload size
+    	upload.setSizeMax(_sizeMax);
+    	
         if (_encoding != null)
             upload.setHeaderEncoding(_encoding);
 
         return upload;
 	}
 
+	/**
+	 * {@inheritDoc}
+	 */
+	public void setSizeMax(long sizeMax)
+	{
+		_sizeMax = sizeMax;
+	}
 }

Modified: jakarta/tapestry/branches/4.0/status.xml
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/branches/4.0/status.xml?rev=387601&r1=387600&r2=387601&view=diff
==============================================================================
--- jakarta/tapestry/branches/4.0/status.xml (original)
+++ jakarta/tapestry/branches/4.0/status.xml Tue Mar 21 10:49:35 2006
@@ -131,6 +131,18 @@
       <action type="fix" dev="PF" fixes-bug="TAPESTRY-830">
         RadioGroup component now rewinds its body appropriately when disabled.
       </action>
+      <action type="fix" dev="JK" fixes-bug="TAPESTRY-368" >
+      	Added maxSize parameter to Upload component, allowing the default maximum
+      	file upload size to be changed.
+      </action>
+      <action type="update" dev="JK" fixes-bug="TAPESTRY-890" due-to="Marcus Shulte">
+      	Updated german validation strings properties.
+      </action>
+      <action type="update" dev="JK" due-to="Pedro Garcia">
+      	The validation strings in ValidationStrings_pt_BR.properties were using double quotes
+      	around characters, which were causing problems for JS parsing. Changed these to use 
+      	single quotes.
+      </action>
     </release>
     <release version="4.0" date="Jan 6 2006">
       <action type="update" dev="HLS">Add link to DeveloperWorks Tapestry article</action>



---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org