<?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="martinc@apache.org">Martin Cooper</author>
  </properties>

  <body>
    <release version="1.4" date="TBA" description="TBA">
      <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>
    </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>
