Title: [waffle-scm] [486] trunk/examples/simple-example/src/main/webapp: Enhanced FileUploader to return form fields as FileItems.

Diff

Modified: trunk/examples/simple-example/src/main/java/org/codehaus/waffle/example/simple/UploadController.java (485 => 486)

--- trunk/examples/simple-example/src/main/java/org/codehaus/waffle/example/simple/UploadController.java	2007-12-15 11:32:26 UTC (rev 485)
+++ trunk/examples/simple-example/src/main/java/org/codehaus/waffle/example/simple/UploadController.java	2007-12-15 12:00:18 UTC (rev 486)
@@ -13,7 +13,7 @@
     private FileUploader uploader;
     private Collection<String> errors;
     private List<FileItem> files;
-    private String comment;
+    private List<FileItem> formFields;
     
     public UploadController(FileUploader uploader) {
         this.uploader = uploader;
@@ -23,6 +23,7 @@
     @PRG(false) // PRG needs to be disabled to allow request-scope content to be accessible in referring view
     public void upload(){ 
         files = uploader.getFiles();
+        formFields = uploader.getFormFields();
         errors = uploader.getErrors();        
     }
 
@@ -33,13 +34,9 @@
     public List<FileItem> getFiles() {
         return files;
     }
-    
-    public String getComment(){
-        return comment;
-    }
 
-    public void setComment(String comment) {
-        this.comment = comment;
+    public List<FileItem> getFormFields() {
+        return formFields;
     }
-    
+
 }

Modified: trunk/examples/simple-example/src/main/webapp/upload.jspx (485 => 486)

--- trunk/examples/simple-example/src/main/webapp/upload.jspx	2007-12-15 11:32:26 UTC (rev 485)
+++ trunk/examples/simple-example/src/main/webapp/upload.jspx	2007-12-15 12:00:18 UTC (rev 486)
@@ -24,6 +24,9 @@
 
     <h3>Waffle file upload</h3>
 
+    <input type="text" name="comment" value=""/> - enter a comment
+    <br/>
+
     <input type="file" name="importFile"/>
     <br/>
     
@@ -31,13 +34,24 @@
     <br/>
 
      <table>
+        <th colspan="2">Files uploaded</th>
         <c:forEach var="file" items="${files}" varStatus="status">
             <tr class="${status.index % 2 eq 0 ? 'even' : 'odd'}">
-                <td>${file.name}</td>
+                <td>${file.fieldName}(${file.name})</td>
                 <td>${file.string}</td>
             </tr>
         </c:forEach>
      </table>
+
+     <table>
+        <th colspan="2">Form fields</th>
+        <c:forEach var="field" items="${formFields}" varStatus="status">
+            <tr class="${status.index % 2 eq 0 ? 'even' : 'odd'}">
+                <td>${field.fieldName}</td>
+                <td>${field.string}</td>
+            </tr>
+        </c:forEach>
+     </table>
      
 </form>
 </body>

Modified: trunk/waffle-core/src/main/java/org/codehaus/waffle/io/FileUploader.java (485 => 486)

--- trunk/waffle-core/src/main/java/org/codehaus/waffle/io/FileUploader.java	2007-12-15 11:32:26 UTC (rev 485)
+++ trunk/waffle-core/src/main/java/org/codehaus/waffle/io/FileUploader.java	2007-12-15 12:00:18 UTC (rev 486)
@@ -27,6 +27,13 @@
      * @return A List of FileItems, one for each uploaded file
      */
     List<FileItem> getFiles();
+    
+    /**
+     * Returns the form fields
+     * 
+     * @return A List of FileItems, one for each form field
+     */
+    List<FileItem> getFormFields();
 
     /**
      * Returns errors generated when parsing the multipart request.

Modified: trunk/waffle-core/src/main/java/org/codehaus/waffle/io/RequestFileUploader.java (485 => 486)

--- trunk/waffle-core/src/main/java/org/codehaus/waffle/io/RequestFileUploader.java	2007-12-15 11:32:26 UTC (rev 485)
+++ trunk/waffle-core/src/main/java/org/codehaus/waffle/io/RequestFileUploader.java	2007-12-15 12:00:18 UTC (rev 486)
@@ -14,6 +14,7 @@
 import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
 
 import org.apache.commons.fileupload.FileItem;
 import org.apache.commons.fileupload.FileItemFactory;
@@ -38,10 +39,10 @@
  * @author Mauro Talevi
  */
 public class RequestFileUploader implements Startable, FileUploader {
-    private final HttpServletRequest request;
+    private final HttpServletRequestWrapper request;
     private final FileItemFactory itemFactory;
-    private Collection<String> errors = new ArrayList<String>();
-    private List<FileItem> fileItems = new ArrayList<FileItem>();
+    protected Collection<String> errors = new ArrayList<String>();
+    protected List<FileItem> fileItems = new ArrayList<FileItem>();
 
     /**
      * Creates RequestFileUploader
@@ -50,7 +51,7 @@
      * @param itemFactory the FileItemFactory
      */
     public RequestFileUploader(HttpServletRequest request, FileItemFactory itemFactory) {
-        this.request = request;
+        this.request = new HttpServletRequestWrapper(request);
         this.itemFactory = itemFactory;
     }
 
@@ -65,6 +66,17 @@
         return files;
     }
 
+    public List<FileItem> getFormFields() {
+        List<FileItem> fields = new ArrayList<FileItem>();
+        // only return form fields
+        for (FileItem file : fileItems) {
+            if ( file.isFormField() ){
+                fields.add(file);
+            }
+        }
+        return fields;
+    }
+    
     public Collection<String> getErrors() {
         return errors;
     }
@@ -77,7 +89,7 @@
      * Upload files on request start
      */
     public void start() {
-        uploadFiles(request, itemFactory);
+        uploadFileItems(request, itemFactory);
     }
 
     /**
@@ -88,13 +100,14 @@
     }
 
     /**
-     * Processes request to retrieve file uploads and records any errors.
+     * Parses a multipart request to upload file items and records any errors.
+     * Non-multipart requests are ignored.
      * 
      * @param request the HttpServletRequest
      * @param itemFactory the FileItemFactory
      */
     @SuppressWarnings("unchecked")
-    private void uploadFiles(HttpServletRequest request, FileItemFactory itemFactory) {
+    protected void uploadFileItems(HttpServletRequest request, FileItemFactory itemFactory) {
         if (ServletFileUpload.isMultipartContent(request)) {
             try {
                 ServletFileUpload fileUpload = new ServletFileUpload(itemFactory);
@@ -102,10 +115,9 @@
                 fileItems.clear();
                 fileItems.addAll(fileUpload.parseRequest(request));
             } catch (FileUploadException e) {
-                errors.add("Failed to upload files: " + e.getMessage());
+                errors.add("Failed to upload file items: " + e.getMessage());
             }
         }
     }
 
-
 }


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to