Author: jochen
Date: Wed Mar 16 07:47:26 2011
New Revision: 1082083

URL: http://svn.apache.org/viewvc?rev=1082083&view=rev
Log:
PR: FILEUPLOAD-130
Submitted-By: Guillaume Cottenceau <cott...@gmail.com>
The FileItemHeader stuff hasn't been actually working.

Added:
    commons/proper/fileupload/trunk/.settings/
    commons/proper/fileupload/trunk/.settings/org.eclipse.jdt.core.prefs
    commons/proper/fileupload/trunk/.settings/org.maven.ide.eclipse.prefs
Modified:
    commons/proper/fileupload/trunk/src/changes/changes.xml
    
commons/proper/fileupload/trunk/src/java/org/apache/commons/fileupload/FileItem.java
    
commons/proper/fileupload/trunk/src/java/org/apache/commons/fileupload/FileUploadBase.java
    
commons/proper/fileupload/trunk/src/java/org/apache/commons/fileupload/disk/DiskFileItem.java
    
commons/proper/fileupload/trunk/src/test/org/apache/commons/fileupload/ServletFileUploadTest.java

Added: commons/proper/fileupload/trunk/.settings/org.eclipse.jdt.core.prefs
URL: 
http://svn.apache.org/viewvc/commons/proper/fileupload/trunk/.settings/org.eclipse.jdt.core.prefs?rev=1082083&view=auto
==============================================================================
--- commons/proper/fileupload/trunk/.settings/org.eclipse.jdt.core.prefs (added)
+++ commons/proper/fileupload/trunk/.settings/org.eclipse.jdt.core.prefs Wed 
Mar 16 07:47:26 2011
@@ -0,0 +1,6 @@
+#Wed Mar 16 08:05:11 CET 2011
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.3
+org.eclipse.jdt.core.compiler.compliance=1.3
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.3

Added: commons/proper/fileupload/trunk/.settings/org.maven.ide.eclipse.prefs
URL: 
http://svn.apache.org/viewvc/commons/proper/fileupload/trunk/.settings/org.maven.ide.eclipse.prefs?rev=1082083&view=auto
==============================================================================
--- commons/proper/fileupload/trunk/.settings/org.maven.ide.eclipse.prefs 
(added)
+++ commons/proper/fileupload/trunk/.settings/org.maven.ide.eclipse.prefs Wed 
Mar 16 07:47:26 2011
@@ -0,0 +1,8 @@
+#Wed Mar 16 08:05:04 CET 2011
+activeProfiles=
+eclipse.preferences.version=1
+fullBuildGoals=process-test-resources
+resolveWorkspaceProjects=true
+resourceFilterGoals=process-resources resources\:testResources
+skipCompilerPlugin=true
+version=1

Modified: commons/proper/fileupload/trunk/src/changes/changes.xml
URL: 
http://svn.apache.org/viewvc/commons/proper/fileupload/trunk/src/changes/changes.xml?rev=1082083&r1=1082082&r2=1082083&view=diff
==============================================================================
--- commons/proper/fileupload/trunk/src/changes/changes.xml (original)
+++ commons/proper/fileupload/trunk/src/changes/changes.xml Wed Mar 16 07:47:26 
2011
@@ -41,6 +41,12 @@ The <action> type attribute can be add,u
   </properties>
 
   <body>
+    <release version="1.2.3-SNAPSHOT">
+      <action dev="jochen" type="fix" issue="FILEUPLOAD-130"
+          due-to="Guillaume Cottenceau" due-to-email="cott...@gmail.com">
+        The FileItemHeader stuff hasn't been actually working.
+      </action>
+    </release>
     <release version="1.2.2" date="2010-07-29">
       <action dev="jochen" type="fix"
           due-to="Daniel Fabian" due-to-email="dfab...@google.com">

Modified: 
commons/proper/fileupload/trunk/src/java/org/apache/commons/fileupload/FileItem.java
URL: 
http://svn.apache.org/viewvc/commons/proper/fileupload/trunk/src/java/org/apache/commons/fileupload/FileItem.java?rev=1082083&r1=1082082&r2=1082083&view=diff
==============================================================================
--- 
commons/proper/fileupload/trunk/src/java/org/apache/commons/fileupload/FileItem.java
 (original)
+++ 
commons/proper/fileupload/trunk/src/java/org/apache/commons/fileupload/FileItem.java
 Wed Mar 16 07:47:26 2011
@@ -50,7 +50,7 @@ import java.io.UnsupportedEncodingExcept
  *
  * @version $Id$
  */
-public interface FileItem extends Serializable {
+public interface FileItem extends Serializable, FileItemHeadersSupport {
 
 
     // ------------------------------- Methods from javax.activation.DataSource

Modified: 
commons/proper/fileupload/trunk/src/java/org/apache/commons/fileupload/FileUploadBase.java
URL: 
http://svn.apache.org/viewvc/commons/proper/fileupload/trunk/src/java/org/apache/commons/fileupload/FileUploadBase.java?rev=1082083&r1=1082082&r2=1082083&view=diff
==============================================================================
--- 
commons/proper/fileupload/trunk/src/java/org/apache/commons/fileupload/FileUploadBase.java
 (original)
+++ 
commons/proper/fileupload/trunk/src/java/org/apache/commons/fileupload/FileUploadBase.java
 Wed Mar 16 07:47:26 2011
@@ -374,7 +374,7 @@ public abstract class FileUploadBase {
                 }
                 if (fileItem instanceof FileItemHeadersSupport) {
                     final FileItemHeaders fih = item.getHeaders();
-                    ((FileItemHeadersSupport) fileItem).setHeaders(fih);
+                    fileItem.setHeaders(fih);
                 }
             }
             successful = true;
@@ -1016,6 +1016,7 @@ public abstract class FileUploadBase {
                         currentItem = new FileItemStreamImpl(fileName,
                                 fieldName, headers.getHeader(CONTENT_TYPE),
                                 fileName == null, getContentLength(headers));
+                        currentItem.setHeaders(headers);
                         notifier.noteItem();
                         itemValid = true;
                         return true;
@@ -1027,6 +1028,7 @@ public abstract class FileUploadBase {
                                 currentFieldName,
                                 headers.getHeader(CONTENT_TYPE),
                                 false, getContentLength(headers));
+                        currentItem.setHeaders(headers);
                         notifier.noteItem();
                         itemValid = true;
                         return true;

Modified: 
commons/proper/fileupload/trunk/src/java/org/apache/commons/fileupload/disk/DiskFileItem.java
URL: 
http://svn.apache.org/viewvc/commons/proper/fileupload/trunk/src/java/org/apache/commons/fileupload/disk/DiskFileItem.java?rev=1082083&r1=1082082&r2=1082083&view=diff
==============================================================================
--- 
commons/proper/fileupload/trunk/src/java/org/apache/commons/fileupload/disk/DiskFileItem.java
 (original)
+++ 
commons/proper/fileupload/trunk/src/java/org/apache/commons/fileupload/disk/DiskFileItem.java
 Wed Mar 16 07:47:26 2011
@@ -81,7 +81,7 @@ import org.apache.commons.io.output.Defe
  * @version $Id$
  */
 public class DiskFileItem
-    implements FileItem, FileItemHeadersSupport {
+    implements FileItem {
 
     // ----------------------------------------------------- Manifest constants
 

Modified: 
commons/proper/fileupload/trunk/src/test/org/apache/commons/fileupload/ServletFileUploadTest.java
URL: 
http://svn.apache.org/viewvc/commons/proper/fileupload/trunk/src/test/org/apache/commons/fileupload/ServletFileUploadTest.java?rev=1082083&r1=1082082&r2=1082083&view=diff
==============================================================================
--- 
commons/proper/fileupload/trunk/src/test/org/apache/commons/fileupload/ServletFileUploadTest.java
 (original)
+++ 
commons/proper/fileupload/trunk/src/test/org/apache/commons/fileupload/ServletFileUploadTest.java
 Wed Mar 16 07:47:26 2011
@@ -301,4 +301,76 @@ public class ServletFileUploadTest exten
        assertTrue(multi1.isFormField());
        assertEquals("value2", multi1.getString());
     }
+
+
+    /**
+     * Test case for <a 
href="http://issues.apache.org/jira/browse/FILEUPLOAD-130";>
+     */
+    public void testFileUpload130()
+            throws Exception
+    {
+        final String[] headerNames = new String[]
+        {
+            "SomeHeader", "OtherHeader", "YetAnotherHeader", "WhatAHeader"
+        };
+        final String[] headerValues = new String[]
+        {
+            "present", "Is there", "Here", "Is That"
+        };
+        List fileItems = parseUpload("-----1234\r\n" +
+                "Content-Disposition: form-data; name=\"file\"; 
filename=\"foo.tab\"\r\n" +
+                "Content-Type: text/whatever\r\n" +
+                headerNames[0] + ": " + headerValues[0] + "\r\n" +
+                "\r\n" +
+                "This is the content of the file\n" +
+                "\r\n" +
+                "-----1234\r\n" +
+                "Content-Disposition: form-data; \r\n" +
+                "\tname=\"field\"\r\n" +
+                headerNames[1] + ": " + headerValues[1] + "\r\n" +
+                "\r\n" +
+                "fieldValue\r\n" +
+                "-----1234\r\n" +
+                "Content-Disposition: form-data;\r\n" +
+                "     name=\"multi\"\r\n" +
+                headerNames[2] + ": " + headerValues[2] + "\r\n" +
+                "\r\n" +
+                "value1\r\n" +
+                "-----1234\r\n" +
+                "Content-Disposition: form-data; name=\"multi\"\r\n" +
+                headerNames[3] + ": " + headerValues[3] + "\r\n" +
+                "\r\n" +
+                "value2\r\n" +
+                "-----1234--\r\n");
+        assertEquals(4, fileItems.size());
+
+        FileItem file = (FileItem) fileItems.get(0);
+        assertHeaders(headerNames, headerValues, file, 0);
+
+        FileItem field = (FileItem) fileItems.get(1);
+        assertHeaders(headerNames, headerValues, field, 1);
+
+        FileItem multi0 = (FileItem) fileItems.get(2);
+        assertHeaders(headerNames, headerValues, multi0, 2);
+
+        FileItem multi1 = (FileItem) fileItems.get(3);
+        assertHeaders(headerNames, headerValues, multi1, 3);
+    }
+
+    private void assertHeaders(String[] pHeaderNames, String[] pHeaderValues,
+                               FileItem pItem, int pIndex)
+    {
+        for (int i = 0;  i < pHeaderNames.length;  i++)
+        {
+            final String value = pItem.getHeaders().getHeader(pHeaderNames[i]);
+            if (i == pIndex)
+            {
+                assertEquals(pHeaderValues[i], value);
+            }
+            else
+            {
+                assertNull(value);
+            }
+        }
+    }
 }


Reply via email to