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); + } + } + } }