blob: 8b2391c8003654b3520e534ee679951c817c2743 [file] [log] [blame]
<?xml version="1.0"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!--
This file is used by the maven-changes-plugin to generate the release notes.
Useful ways of finding items to add to this file are:
1. Add items when you fix a bug or add a feature (this makes the
release process easy :-).
2. Do a bugzilla search for tickets closed since the previous release.
3. Use the report generated by the maven-changelog-plugin to see all
CVS commits. Set the project.properties' maven.changelog.range
property to the number of days since the last release.
The <action> type attribute can be add,update,fix,remove.
-->
<document xmlns="http://maven.apache.org/changes/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/changes/1.0.0 http://maven.apache.org/plugins/maven-changes-plugin/xsd/changes-1.0.0.xsd">
<properties>
<title>Release Notes</title>
<author email="dev@commons.apache.org">Apache Commons Developers</author>
</properties>
<body>
<release version="1.4" date="2017-06-03" description="1.4 Release">
<action issue="FILEUPLOAD-282" dev="chtompki" type="update">Upversion complier.source, compiler.target to 1.6</action>
<action issue="FILEUPLOAD-252" dev="tn" type="fix">DiskFileItem#write() could lose original IO exception</action>
<action issue="FILEUPLOAD-258" dev="tn" type="fix">DiskFileItem#getStoreLocation() wrongly returned a File object for items stored in memory</action>
<action issue="FILEUPLOAD-242" dev="tn" type="fix">FileUploadBase - should not silently catch and ignore all Throwables</action>
<action issue="FILEUPLOAD-257" dev="tn" type="fix">Fix Javadoc 1.8.0 errors</action>
<action issue="FILEUPLOAD-234" dev="tn" type="fix">Fix section "Resource cleanup" of the user guide</action>
<action issue="FILEUPLOAD-237" dev="tn" type="fix">Fix streaming example: use FileItem.getInputStream() instead of openStream()</action>
<action issue="FILEUPLOAD-248" dev="ecki" type="fix">DiskFileItem might suppress critical IOExceptions on rename - use FileUtil.move instead</action>
<action issue="FILEUPLOAD-251" dev="sebb" type="fix">DiskFileItem#getTempFile() is broken</action>
<action issue="FILEUPLOAD-250" dev="sebb" type="fix">FileUploadBase - potential resource leak - InputStream not closed on exception</action>
<action issue="FILEUPLOAD-244" dev="sebb" type="fix">DiskFileItem.readObject fails to close FileInputStream</action>
<action issue="FILEUPLOAD-246" dev="sebb" type="update">FileUpload should use IOUtils.closeQuietly where relevant</action>
<action issue="FILEUPLOAD-245" dev="sebb" type="fix">DiskFileItem.get() may not fully read the data</action>
<action issue="FILEUPLOAD-243" dev="sebb" type="update" due-to="Ville Skyttä">Make some MultipartStream private fields final</action>
<action dev="ecki" type="add">Site: added security report</action>
<action dev="markt" due-to="Felix Schumacher">Improve performance for large multi-part boundaries</action>
</release>
<release version="1.3.3" description="Bugfix release for 1.3.3" date="2017-06-13">
<action issue="FILEUPLOAD-279" dev="jochen" type="fix">
DiskDileItem can actually no longer be deserialized, unless a system property is set to true.
</action>
</release>
<release version="1.3.2" description="Bugfix release for 1.3.1" date="2016.05-26">
<action issue="FILEUPLOAD-272" dev="jochen" type="update">
SECURITY - CVE-2016-3092. Performance Improvement in MultipartStream.
</action>
</release>
<release version="1.3.2" description=
"This is a security and maintenance release that includes an important security
fix as well. Compared to 1.3.1, no other changes have been made." date="2014-02-07">
<action dev="jochen" type="fix">
SECURITY - CVE-2016-3092. Specially crafted input can trigger a DoS, if the
size of the MIME boundard is close to the size of the buffer in MultipartStream.
(Similar to CVE-2014-0050.)
</action>
</release>
<release version="1.3.1" description=
"This is a security and maintenance release that includes an important security
fix as well as a small number of bugfixes." date="2014-02-07">
<action dev="markt" type="fix">
SECURITY - CVE-2014-0050. Specially crafted input can trigger a DoS if the
buffer used by the MultipartStream is not big enough. When constructing
MultipartStream enforce the requirements for buffer size by throwing an
IllegalArgumentException if the requested buffer size is too small. This
prevents the DoS.
</action>
<action dev="markt" type="fix" due-to="Arun Babu Neelicattu" due-to-email="abn@redhat.com">
When deserializing DiskFileItems ensure that the repository location, if
any, is a valid one.
</action>
<action dev="markt" type="fix">
Correct example in usage documentation so it compiles.
</action>
</release>
<release version="1.3" description="maintenance release, JDK1.5 update" date="2013-03-27">
<!-- important notes -->
<action dev="markt" type="fix">
SECURITY - CVE-2013-0248. Update the Javadoc and documentation to make
it clear that setting a repository is required for a secure
configuration if there are local, untrusted users.
</action>
<!-- Sub-task -->
<action issue="FILEUPLOAD-216" dev="simonetripodi" type="update">
Update the project tree dirs according to default Maven conventions
</action>
<action issue="FILEUPLOAD-217" dev="simonetripodi" type="update">
drop JDK1.3 support and update to Java5
</action>
<action issue="FILEUPLOAD-218" dev="simonetripodi" type="update">
Update version in POM
</action>
<action issue="FILEUPLOAD-219" dev="simonetripodi" type="update">
upgrade tests to JUnit 4
</action>
<action issue="FILEUPLOAD-220" dev="simonetripodi" type="update">
replace package.html with package-info.java
</action>
<action issue="FILEUPLOAD-221" dev="simonetripodi" type="update">
FileItemHeadersImpl can now use LinkedHashMap
</action>
<action issue="FILEUPLOAD-222" dev="simonetripodi" type="update">
Mark @deprecated classes/methods with @Deprecated annotation
</action>
<action issue="FILEUPLOAD-233" dev="sebb" type="fix" due-to="Simone Tripodi">
Base64Decoder doesn't correctly implement RFC 4648
</action>
<!-- Bug -->
<action issue="FILEUPLOAD-143" dev="jochen" type="fix" due-to="Luke Scott">
"Stream ended unexpectedly" when posting from a Flash client
</action>
<action issue="FILEUPLOAD-173" dev="simonetripodi" type="fix" due-to="Bjorn Harvold">
Manifest for OSGi has invalid syntax
</action>
<action issue="FILEUPLOAD-183" dev="simonetripodi" type="fix" due-to="Roman Arkadijovych Muntyanu">
commons-io dependency does not get loaded by maven if only dependency to commons-fileupload is specified
</action>
<action issue="FILEUPLOAD-185" dev="simonetripodi" type="fix" due-to="Sebb">
http://commons.apache.org/fileupload/index.html is out of date
</action>
<action issue="FILEUPLOAD-186" dev="simonetripodi" type="fix" due-to="Sebb">
http://commons.apache.org/fileupload/index.html should not mention nightly builds
</action>
<action issue="FILEUPLOAD-189" dev="simonetripodi" type="fix" due-to="Gregor K">
DiskFileItemFactory use of FileCleaningTracker is documented or coded wrong - proposal submitted by Jan Novotný
</action>
<action issue="FILEUPLOAD-195" dev="simonetripodi" type="fix" due-to="Juliano Alves">
Error reading the file size larger than 2 gb - pull request from Gergely
</action>
<action issue="FILEUPLOAD-197" dev="simonetripodi" type="fix" due-to="David Wolverton">
ServletFileUpload isMultipartContent method does not support HTTP PUT - thanks Roy T. Fielding and Jochen Wiedmann
</action>
<action issue="FILEUPLOAD-199" dev="simonetripodi" type="fix" due-to="Mark Thomas">
Uploads have unexpected results for files with non-ASCII names - support RFC2047 - thanks Thomas Neidhart
</action>
<action issue="FILEUPLOAD-202" dev="tn" type="fix" due-to="tina">
Exceptions resulting from upload size limitations (fileSizeMax, sizeMax)
are now correctly propagated to the caller (these could be encountered
formerly as MalformedStreamException: "Stream ended unexpectedly").
</action>
<action issue="FILEUPLOAD-204" dev="jochen" type="fix" due-to="Hakju Oh">
FileItem.getHeaders() returns always null.
</action>
<action issue="FILEUPLOAD-212" dev="tn" type="fix" due-to="Damian Kolasa">
The sizeMax parameter within FileUpload is now correctly enforced if
no content length header is provided.
</action>
<action issue="FILEUPLOAD-214" dev="simonetripodi" type="fix" due-to="Matthew Runo">
ServletFileUpload only accepts POST requests
</action>
<action issue="FILEUPLOAD-228" dev="simonetripodi" type="fix" due-to="Thomas Neidhart">
(Servlet|Portlet)RequestContext#contentLength() must return request.getContentLength() if Content-length header is not available
</action>
<action issue="FILEUPLOAD-229" dev="simonetripodi" type="fix" due-to="seb">
toLowerCase() is Locale-dependent; should use toLowerCase(Locale.ENGLISH) instead
</action>
<action issue="FILEUPLOAD-229" dev="sebb,simonetripodi" type="fix" due-to="seb">
There are no unit tests for the new utils.mime classes
</action>
<!-- Improvement -->
<action issue="FILEUPLOAD-182" dev="simonetripodi" type="add" due-to="Chris Lott">
Documentation: add simple HTML form example to fileupload user guide
</action>
<action issue="FILEUPLOAD-207" dev="simonetripodi" type="add" due-to="frank">
enhance file read/write performance - patch provided by frank
</action>
<action issue="FILEUPLOAD-209" dev="simonetripodi" type="add" due-to="Fernando Ribeiro">
Add Support for Generic Types
</action>
<action issue="FILEUPLOAD-210" dev="simonetripodi" type="add" due-to="Fernando Ribeiro">
Process HTTP Requests Into Maps
</action>
<action issue="FILEUPLOAD-223" dev="simonetripodi" type="update" due-to="">
Update commons-io dependency to latest version that supports JDK1.5
</action>
<action issue="FILEUPLOAD-224" dev="simonetripodi" type="update">
Avoid string concatenations while parsing headers, use buffers instead
</action>
<action issue="FILEUPLOAD-225" dev="simonetripodi" type="update">
Replace java.rmi.server.UID() with java.util.UUID
</action>
<action issue="FILEUPLOAD-226" dev="sebb" type="update">
DiskFileItem.counter could be converted to AtomicInteger (or AtomicLong?)
</action>
<action issue="FILEUPLOAD-227" dev="sebb" type="update">
Private immutable fields which could be final
</action>
<!-- Task -->
<action issue="FILEUPLOAD-201" dev="simonetripodi" type="update">
Update to JDK 1.5 and bump IO dependency to 2.0.1
</action>
<action issue="FILEUPLOAD-215" dev="simonetripodi" type="update">
version 1.3 improvement tasks
</action>
</release>
<release version="1.2.2" date="2010-07-29">
<action dev="jochen" type="fix"
due-to="Daniel Fabian" due-to-email="dfabian@google.com">
Added a check for file names containing a NULL characters. Such file
names are now triggering an InvalidFileNameException since the file name
cannot be used as provided to create the file since it will be truncated
at the NUL character on most (all?) operating systems. E.g. a file name
like "test.foo0.bar" would result in "test.foo" being created.
</action>
<action dev="jochen" type="fix" issue="FILEUPLOAD-160"
due-to="Stepan Koltsov" due-to-email="yozh@mx1.ru">
Temporary files have not been deleted, if an error
occurred in FileUploadBase.parseRequest();
</action>
<action dev="jochen" type="fix" issue="FILEUPLOAD-158"
due-to="Stepan Koltsov" due-to-email="yozh@mx1.ru">
Fixed example in MultipartStream Javadocs.
</action>
<action dev="jochen" type="fix" issue="FILEUPLOAD-157"
due-to="Paul Spurr" due-to-email="pspurr@gmail.com">
Ensured, that the ProgressListener is called for all
items.
</action>
<action dev="jochen" type="fix" issue="FILEUPLOAD-156">
Made the ProgressNotifier public.
</action>
<action dev="jochen" type="fix" issue="FILEUPLOAD-155"
due-to="J&#246;rg Heinicke" due-to-email="joerg.heinicke@gmx.de">
Multiple documentation fixes.
</action>
<action dev="jochen" type="fix" issue="FILEUPLOAD-152"
due-to="Duzakropka" due-to-email="duzakropka.@gmail.com">
Fixed the error message for FileSizeLimitExceededException
from "too many characters" to "too many bytes".
</action>
<action dev="jochen" type="add" issue="FILEUPLOAD-154">
A FileSizeLimitExceededException does now contain the
file and field name of the item, which caused the problem.
</action>
<action dev="jochen" type="fix" issue="FILEUPLOAD-130"
due-to="Guillaume Cottenceau" due-to-email="cottenc@gmail.com">
The FileItemHeader stuff hasn't been actually working.
</action>
</release>
<release version="1.2.1" date="2008-01-18">
<action dev="jochen" type="fix">
Upgrade to commons-io-1.4-SNAPSHOT, in order to use the new
FileCleaningTracker and fix issues with FileCleaner.
</action>
<action dev="jochen" type="fix" issue="FILEUPLOAD-129">
Made the MockHttpServletRequest comply to the servlet 2.4 specification
by applying
http://www.sourcelabs.com/dashboards/sash-1.2/patches/commons-fileupload-1.1-1/SUP-520.diff
</action>
<action dev="jochen" type="add" issue="FILEUPLOAD-130"
due-to="Michael Macaluso" due-to-email="michael.public@wavecorp.com">
Added support for accessing the file item headers.
</action>
<action dev="jochen" type="fix" issue="FILEUPLOAD-116"
due-to="Amichai Rothman" due-to-email="amichai2@amichais.net">
A MalformedStreamException is now thrown, if the size of an items
headers exceeds HEADER_PART_SIZE_MAX;
</action>
<action dev="jochen" type="fix" issue="FILEUPLOAD-134"
due-to="Thomas Vandahl" due-to-email="tv@apache.org">
DiskFileItem.toString() could throw an NPE.
</action>
<action dev="jochen" type="fix" issue="FILEUPLOAD-135"
due-to="Alexander Sova" due-to-email="bird@noir.crocodile.org">
Short files could cause an unexpected end of the item stream.
</action>
<action dev="jochen" type="fix" issue="FILEUPLOAD-145">
A FileSizeLimitExceededException was deferred until the complete
file has been uploaded. Additionally, the FileSizeLimitException
is now thrown immediately, if the attachments headers contain
a content-length value, which exceeds the configured limit.
</action>
<action dev="jochen" type="fix" issue="FILEUPLOAD-153"
due-to="Gary Gregory" due-to-email="ggregory@seagullsw.com">
Fixed a classpath problem when building with Sun JDK 1.3.1
and Ant.
</action>
</release>
<release version="1.2" date="2007-02-13">
<action dev="jochen" type="fix" due-to="Aaron Freeman"
due-to-email="aaron@sendthisfile.com">
Made Streams.asString static.
</action>
<action dev="jochen" type="update" issue="FILEUPLOAD-109">
Eliminated duplicate code.
</action>
<action dev="jochen" type="add" issue="FILEUPLOAD-112">
Added a streaming API.
</action>
<action dev="jochen" type="fix" issue="FILEUPLOAD-93">
Eliminated the necessity of a content-length header.
</action>
<action dev="jochen" type="fix" issue="FILEUPLOAD-108"
due-to="Amichai Rothman" due-to-email="amichai2@amichais.net">
Eliminated the limitation of a maximum size for a single
header line. (The total size of all headers is already
limited, so there's no need for another limit.)
</action>
<action dev="jochen" type="add" issue="FILEUPLOAD-87">
Added the ProgressListener, which allows to implement a
progress bar.
</action>
<action dev="jochen" type="add" issue="FILEUPLOAD-111"
due-to="Amichai Rothman" due-to-email="amichai2@amichais.net">
Added support for header continuation lines.
</action>
<action dev="jochen" type="add" issue="FILEUPLOAD-88"
due-to="Andrey Aristarkhov" due-to-email="aristarkhov@bitechnology.ru">
It is now possible to limit the actual file size and not
the request size.
</action>
<action dev="jochen" type="add" issue="FILEUPLOAD-120"
due-to="Henry Yandell" due-to-email="bayard@apache.org">
Added the FileCleanerCleanup as an example for how to close
down the FileCleaner's reaper thread nicely.
</action>
<action dev="jochen" type="fix" issue="FILEUPLOAD-123">
A descriptive NPE is now thrown, if the FileItemFactory
has not been set.
</action>
</release>
<release version="1.1.1" date="2006-06-08" description="Bugfix release">
<action dev="martinc" type="fix" issue="FILEUPLOAD-20">
Cache disk file item size when it is moved to a new location.
</action>
<action dev="martinc" type="fix" issue="FILEUPLOAD-30">
File names were being inadvertently converted to lower case.
</action>
</release>
<release version="1.1" date="2005-12-24" description="Portlet support, substantial refactoring and numerous bug fixes">
<action dev="martinc" type="update">
Updates for FileUpload 1.1-RC1.
</action>
<action dev="martinc" type="add">
Added release notes for FileUpload 1.1.
</action>
<action dev="martinc" type="update">
Update the User Guide to document the "right" way of using FileUpload
1.1, rather than the older, and thus deprecated, ways that are
compatible with FileUpload 1.0.
</action>
<action dev="martinc" type="add">
Add this change log, including all changes since the Commons FileUpload
1.0 release.
</action>
<action dev="martinc" type="update">
Update Commons IO dependency to version 1.1.
</action>
<action dev="martinc" type="add">
Add custom PMD configuration.
</action>
<action dev="martinc" type="update">
Make inner exception classes static, which they should have been all
along.
</action>
<action dev="martinc" type="fix">
Fix Checkstyle warnings.
</action>
<action dev="martinc" type="fix" issue="FILEUPLOAD-29" due-to="Rahul Akolkar">
Remove Javadoc warnings.
</action>
<action dev="martinc" type="update">
Build updates:
<ul>
<li>
Include NOTICE.txt in the jar file and distributions.
</li>
<li>
Include xdocs in source distribution.
</li>
<li>
Create MD5 checksums for distributions.
</li>
</ul>
</action>
<action dev="martinc" type="add">
Add custom Checkstyle configuration.
</action>
<action dev="martinc" type="update">
Update dependencies in POM, and add comments and scope.
</action>
<action dev="martinc" type="update">
Standardise on @throws instead of having a mixture of that and
@exception.
</action>
<action dev="martinc" type="fix" issue="FILEUPLOAD-50" due-to="Niall Pemberton">
Make DiskFileItem serializable. Thanks to Niall Pemberton for the
suggestion and patch.
</action>
<action dev="martinc" type="update">
Make the temporary file names unique across class loaders, not just
within them, by including a UID in the file name.
</action>
<action dev="martinc" type="fix" issue="FILEUPLOAD-77">
Include the actual and permitted sizes in both the exception message
and the exception itself.
</action>
<action dev="martinc" type="fix" issue="FILEUPLOAD-13">
If an explicit header encoding is not specified, use the one from the
appropriate context (i.e. ServletRequest or ActionRequest).
</action>
<action dev="martinc" type="add">
Add getCharacterEncoding to the request context.
</action>
<action dev="martinc" type="fix" issue="FILEUPLOAD-83">
Null check and case insensitivity fixes.
</action>
<action dev="martinc" type="update">
Web site updates:
<ul>
<li>
Add detail pages for Source Repository and Issue Tracking, based on
those for IO and Validator.
</li>
<li>
Improvements to FileUpload home page, based on similar recent
changes to IO and Validator home pages.
</li>
<li>
The Bugzilla component name has a space in it. Fix the URLs.
</li>
<li>
Add an FAQ page, using the Maven plugin to generate it.
</li>
</ul>
</action>
<action dev="dion" type="fix" issue="COMMONSSITE-2">
Fixes to POMs
</action>
<action dev="mrdon" type="update">
Setting source and target for Java 1.3
</action>
<action dev="martinc" type="fix" issue="FILEUPLOAD-37">
Fix typos in Javadoc code examples.
</action>
<action dev="martinc" type="fix">
Fix typos in exception messages.
</action>
<action dev="martinc" type="fix" issue="FILEUPLOAD-5">
Obtain request content type from container instead of headers.
</action>
<action dev="sullis" type="update">
New mock objects from Jetspeed-2, and new FileUpload test cases.
</action>
<action dev="sullis" type="add">
added toString() methods
</action>
<action dev="martinc" type="add">
Fix up the existing package.html file and add new ones for the newly
introduced packages. Fairly minimal, but with a link to the user guide.
</action>
<action dev="martinc" type="update">
Substantial refactoring and additions:
<ul>
<li>
The core package is now independent of servlet / portlet / other
distinctions, as well as persistence schemes, other than deprecated
classes and methods retained for backwards compatibility.
</li>
<li>
Servlet specific functionality has been moved to a new 'servlet'
package. Existing users should migrate to this as soon as possible,
since the servlet specific functionality in the generic package
will be removed in the release after FileUpload 1.1.
</li>
<li>
Support for portlets (JSR 168) has been added, in a new 'portlet'
package. This is not well tested at this point, and feedback would
be very much appreciated. (This also resolves bug #23620.)
</li>
<li>
The disk-based file item implementation has been moved into a 'disk'
package, and renamed from Default* to Disk* to reflect what it
really is. The Default* classes have been retained in the top level
package for backwards compatibility, but are now deprecated, and
will be removed in the release after FileUpload 1.1.
</li>
<li>
The isMultipartRequest method is an unfortunate casualty of this
refactoring. That method should really be moved to ServletFileUpload,
but since the method is static, it can only exist in either
FileUploadBase or ServletFileUpload. Backwards compatibility dictates
the former for now, but the latter is the desired state, which
implies some future breakage. Fair warning...
</li>
</ul>
</action>
<action dev="martinc" type="fix" issue="FILEUPLOAD-4">
Specify the encoding (ISO-8859-1) when converting the boundary to a
byte array.
</action>
<action dev="martinc" type="update">
Convert to Sun coding guidelines.
</action>
<action dev="martinc" type="update">
DeferredFileOutputStream moved to Commons IO.
</action>
<action dev="martinc" type="fix" issue="FILEUPLOAD-16" due-to="Justin Sampson">
Workaround for Mac IE5 bug. Thanks to Justin Sampson for the patch and
tests for this vexing issue.
</action>
<action dev="martinc" type="fix" issue="FILEUPLOAD-104">
Handle unquoted header parameters.
</action>
<action dev="martinc" type="add" issue="FILEUPLOAD-78">
Some documentation on interaction with virus scanners.
</action>
<action dev="martinc" type="add" issue="FILEUPLOAD-31" due-to="Justin Sampson">
More unit tests from Justin Sampson.
</action>
<action dev="martinc" type="update" issue="FILEUPLOAD-95">
Use FileCleaner from Commons IO to clean up temp files, rather than
File.deleteOnExit(), which can cause serious problems in long-running
processes.
</action>
<action dev="martinc" type="fix" issue="FILEUPLOAD-53">
Check that HTTP method is POST as part of multipart check.
</action>
<action dev="martinc" type="add">
Switch to Commons IO version of DeferredFileOutputStream. Adding IO as
a dependency will allow us to take advantage of other classes in that
component to fix additional FileUpload bugs.
</action>
<action dev="martinc" type="add" issue="FILEUPLOAD-40">
handle quoted boundary specification.
</action>
<action dev="martinc" type="add" issue="FILEUPLOAD-18">
use case-independent comparisons for encoding types.
</action>
<action dev="martinc" type="fix">
Fix comments to avoid break iterator complaints.
</action>
<action dev="martinc" type="fix" due-to="Yuji Yamano">
Fix typos in comments.
</action>
<action dev="martinc" type="add" issue="FILEUPLOAD-101" due-to="Oleg Kalnichevski">
Add support for character sets specified for individual parts.
</action>
<action dev="scolebourne" type="update">
Change to Apache License 2.0
</action>
<action dev="martinc" type="fix" issue="FILEUPLOAD-22">
Correct the comment for the no-args constructor to reflect the fact
that a factory needs to be set before parsing uploads.
</action>
<action dev="martinc" type="update">
Collapse some all but duplicated code.
</action>
<action dev="jmcnally" type="fix" issue="FILEUPLOAD-72">
Fix example showing FileItem.write to use a File object.
</action>
<action dev="martinc" type="fix" issue="FILEUPLOAD-21" due-to="Peter Chase">
Check for null before attempting to close streams in write().
</action>
<action dev="martinc" type="fix" issue="FILEUPLOAD-67" due-to="Paul Dalton">
Correction to sample code in the docs.
</action>
</release>
<release version="1.0" date="2003-06-26" description="Initial release">
</release>
</body>
</document>