<?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 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="TBD">
      <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>
