<?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.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>
