<?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-02-12">
      <!-- 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.2.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>
