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 <[email protected]>
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="[email protected]">
+ 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="[email protected]">
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);
+ }
+ }
+ }
}