Author: jkuhnert
Date: Sat Dec 16 13:53:28 2006
New Revision: 487902

URL: http://svn.apache.org/viewvc?view=rev&rev=487902
Log:
Resolves TAPESTRY-957 (sort of). 

Made dojo client side required check not skip file upload fields so that we can 
at least check that much on 
the client side. Rest of the issue lies solely with the jakarta commons 
fileupload devs.

Modified:
    tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/Upload.html
    
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/multipart/AbstractMultipartDecoder.java
    
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/multipart/MultipartDecoderImpl.java
    
tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/validate/check.js

Modified: 
tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/Upload.html
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/Upload.html?view=diff&rev=487902&r1=487901&r2=487902
==============================================================================
--- 
tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/Upload.html 
(original)
+++ 
tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/Upload.html 
Sat Dec 16 13:53:28 2006
@@ -18,7 +18,8 @@
 <table class="form">
        <tr>
                <th><span jwcid="@FieldLabel" 
field="component:inputFile"/>:</th>
-               <td><input jwcid="[EMAIL PROTECTED]" file="ognl:file" size="30" 
displayName="File" validators="validators:required"/></td>
+               <td><input jwcid="[EMAIL PROTECTED]" file="ognl:file" size="30"
+                                       displayName="File" 
validators="validators:required"/></td>
        </tr>
        <tr>
                <th>Options:</th>

Modified: 
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/multipart/AbstractMultipartDecoder.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/multipart/AbstractMultipartDecoder.java?view=diff&rev=487902&r1=487901&r2=487902
==============================================================================
--- 
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/multipart/AbstractMultipartDecoder.java
 (original)
+++ 
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/multipart/AbstractMultipartDecoder.java
 Sat Dec 16 13:53:28 2006
@@ -127,7 +127,8 @@
 
         if (part == null)
             _valueParts.put(name, new ValuePart(value));
-        else part.add(value);
+        else 
+            part.add(value);
     }
 
     private String extractFileItemValue(FileItem item)

Modified: 
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/multipart/MultipartDecoderImpl.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/multipart/MultipartDecoderImpl.java?view=diff&rev=487902&r1=487901&r2=487902
==============================================================================
--- 
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/multipart/MultipartDecoderImpl.java
 (original)
+++ 
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/multipart/MultipartDecoderImpl.java
 Sat Dec 16 13:53:28 2006
@@ -35,8 +35,7 @@
  * @author Joe Panico
  * @since 4.0
  */
-public class MultipartDecoderImpl extends AbstractMultipartDecoder implements
-        ServletMultipartDecoder
+public class MultipartDecoderImpl extends AbstractMultipartDecoder implements 
ServletMultipartDecoder
 {
 
     /* maximum size of file allowed to be uploaded */
@@ -45,36 +44,35 @@
     public HttpServletRequest decode(HttpServletRequest request)
     {
         _encoding = request.getCharacterEncoding();
-
+        
         ServletFileUpload upload = createFileUpload();
-
+        
         try
         {
             List fileItems = upload.parseRequest(request);
-
+            
             processFileItems(fileItems);
         }
         catch (FileUploadException ex)
         {
-            throw new ApplicationRuntimeException(MultipartMessages
-                    .unableToDecode(ex), ex);
+            throw new 
ApplicationRuntimeException(MultipartMessages.unableToDecode(ex), ex);
         }
-
+        
         Map parameterMap = buildParameterMap();
-
+        
         return new UploadFormParametersWrapper(request, parameterMap);
     }
 
     private ServletFileUpload createFileUpload()
     {
-        FileItemFactory factory = new DiskFileItemFactory(_thresholdSize,
-                new File(_repositoryPath));
+        FileItemFactory factory = new DiskFileItemFactory(_thresholdSize, new 
File(_repositoryPath));
         ServletFileUpload upload = new ServletFileUpload(factory);
-
+        
         // set maximum file upload size
         upload.setSizeMax(_maxSize);
-
-        if (_encoding != null) upload.setHeaderEncoding(_encoding);
+        
+        if (_encoding != null) 
+            upload.setHeaderEncoding(_encoding);
 
         return upload;
     }

Modified: 
tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/validate/check.js
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/validate/check.js?view=diff&rev=487902&r1=487901&r2=487902
==============================================================================
--- 
tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/validate/check.js 
(original)
+++ 
tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/validate/check.js 
Sat Dec 16 13:53:28 2006
@@ -12,7 +12,9 @@
 if(profile.digit instanceof Array){for(var i = 0; i < profile.digit.length; 
i++){var elem = form[profile.digit[i]];if(dj_undef("type", elem) || elem.type 
!= "text" && elem.type != "textarea" && elem.type != "password"){ continue; }
 elem.value = elem.value.replace(/\D/g, "");}}
 if(profile.required instanceof Array){for(var i = 0; i < 
profile.required.length; i++){if(!dojo.lang.isString(profile.required[i])){ 
continue; }
-var elem = form[profile.required[i]];if(!dj_undef("type", elem) && (elem.type 
== "text" || elem.type == "textarea" || elem.type == "password") && 
/^\s*$/.test(elem.value)){missing[missing.length] = elem.name;}
+var elem = form[profile.required[i]];if(!dj_undef("type", elem)
+&& (elem.type == "text" || elem.type == "textarea" || elem.type == "password" 
|| elem.type == "file")
+&& /^\s*$/.test(elem.value)){missing[missing.length] = elem.name;}
 else if(!dj_undef("type", elem) && (elem.type == "select-one" || elem.type == 
"select-multiple")
 && (elem.selectedIndex == -1
 || 
/^\s*$/.test(elem.options[elem.selectedIndex].value))){missing[missing.length] 
= elem.name;}


Reply via email to