<?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 JIRA search for tickets closed since the previous release.

  3. Use the report generated by the maven-changelog-plugin to see all
  SVN 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>
  <properties>
    <title>Release Notes</title>
  </properties>
  <body>
    <release version="1.2" date="2015-MM-DD" description="Feature and bug fix release">
      <action issue="CSV-145" type="fix" dev="ggregory" due-to="Frank Ulbricht">CSVFormat.with* methods clear the header comments</action>
      <action issue="CSV-156" type="fix" dev="ggregory" due-to="Jason Steenstra-Pickens">Incorrect Javadoc on QuoteMode.NONE</action>
      <action issue="CSV-157" type="add" dev="ggregory">Add enum CSVFormat.Predefined that contains the default CSVFormat values.</action>
    </release>
    <release version="1.1" date="2014-11-16" description="Feature and bug fix release">
      <action issue="CSV-140" type="fix" dev="ggregory" due-to="Damjan Jovanovic">QuoteMode.NON_NUMERIC doesn't work with CSVPrinter.printRecords(ResultSet)</action>
      <action issue="CSV-130" type="fix" dev="ggregory" due-to="Sergei Lebedev">CSVFormat#withHeader doesn't work well with #printComment, add withHeaderComments(String...)</action>
      <action issue="CSV-128" type="fix" dev="ggregory">CSVFormat.EXCEL should ignore empty header names</action>
      <action issue="CSV-132" type="fix" dev="ggregory" due-to="Sascha Szott">Incorrect Javadoc referencing org.apache.commons.csv.CSVFormat withQuote()</action>
      <action issue="CSV-124" type="update" dev="brentworden" due-to="Kalyan">Improve toString() implementation of CSVRecord</action>
      <action issue="CSV-134" type="update" dev="ggregory" due-to="wu wen">Unified parameter validation</action>
      <action issue="CSV-129" type="add" dev="ggregory">Add CSVFormat#with 0-arg methods matching boolean arg methods</action>
      <action issue="CSV-131" type="add" dev="ggregory" due-to="Holger Stratmann">Save positions of records to enable random access</action>
      <action issue="CSV-139" type="add" dev="ggregory">CSVPrinter.printRecord(ResultSet) with metadata</action>
    </release>
    <release version="1.0" date="2014-08-14" description="First release">
      <action issue="CSV-125" type="fix" dev="britter">No longer works with Java 6</action>
      <action issue="CSV-122" type="fix" dev="britter" due-to="Mike Lewis">NullPointerException when empty header string and and null string of ""</action>
      <action issue="CSV-117" type="update" dev="sebb">Validate format parameters in constructor</action>
      <action issue="CSV-121" type="add" dev="ggregory" due-to="Sebastian Hardt">IllegalArgumentException thrown when the header contains duplicate names when the column names are empty.</action>
      <action issue="CSV-120" type="add" dev="ggregory" due-to="Sergei Lebedev">CSVFormat#withHeader doesn't work with CSVPrinter</action>
      <action issue="CSV-119" type="add" dev="ggregory" due-to="Sergei Lebedev">CSVFormat is missing a print(...) method</action>
      <action issue="CSV-118" type="fix" dev="ggregory" due-to="Enrique Lara">CSVRecord.toMap() throws NPE on formats with no
        headers.</action>
      <action issue="CSV-113" type="fix" dev="sebb">Check whether ISE/IAE are being used appropriately</action>
      <action issue="CSV-114" type="fix" dev="sebb">CSVFormat constructor should reject a header array with duplicate
        entries
      </action>
      <action issue="CSV-112" type="fix" dev="britter">HeaderMap is inconsistent when it is parsed from an input with
        duplicate columns names
      </action>
      <action issue="CSV-111" type="fix" dev="ggregory">CSVRecord.toMap() fails if row length shorter than header length
      </action>
      <action issue="CSV-106" type="fix" dev="ggregory">CSVFormat.format allways append null</action>
      <action issue="CSV-105" type="add" dev="ggregory">Add Map conversion API to CSVRecord</action>
      <action issue="CSV-100" type="fix" dev="ggregory">CSVParser: getHeaderMap throws NPE</action>
      <action issue="CSV-42" type="update" dev="ebourg" due-to="Bob Smith">Lots of possible changes</action>
      <action issue="CSV-78" type="update" dev="sebb">Use Character instead of char for char fields except delimiter
      </action>
      <action issue="CSV-99" type="update" dev="britter">Revert Builder implementation in CSVFormat</action>
      <action issue="CSV-53" type="fix" dev="britter">CSVRecord does not verify that the length of the header mapping
        matches the number of values
      </action>
      <action issue="CSV-93" type="update" dev="ggregory">Allow the handling of NULL values</action>
      <action issue="CSV-68" type="update" dev="ggregory">Use the Builder pattern for CSVFormat</action>
      <action issue="CSV-84" type="update" dev="sebb">Clarify comment handling</action>
      <action issue="CSV-25" type="update" dev="ebourg">CSVParser.nextValue() seems pointless</action>
      <action issue="CSV-97" type="update" dev="ggregory">Allow the String value for null to be customized for the CSV
        printer
      </action>
      <action issue="CSV-88" type="update" dev="ggregory">Not possible to create a CSVFormat from scratch</action>
      <action issue="CSV-52" type="add" dev="ggregory">Keep track of record number</action>
      <action issue="CSV-94" type="update" dev="sebb">Lexer should only use char fields</action>
      <action issue="CSV-92" type="add" dev="ggregory">Need a way to extract parsed headers, e.g. for use in formatting
        output
      </action>
      <action issue="CSV-65" type="add" dev="ebourg">Header support</action>
      <action issue="CSV-54" type="fix" dev="sebb">Confusing semantic of the ignore leading/trailing spaces parameters
      </action>
      <action issue="CSV-71" type="update" dev="sebb">Add convenience methods to CSVLexer</action>
      <action issue="CSV-59" type="update" dev="ebourg">Is CharBuffer really needed, now that StringBuilder is available?
      </action>
      <action issue="CSV-55" type="update" dev="britter">Replace while(true)-loop in CSVParser.getRecord with do-while-loop
      </action>
      <action issue="CSV-34" type="fix" dev="sebb">CSVFormat describes itself as immutable, but it is not - in
        particular it is not thread-safe
      </action>
      <action issue="CSV-36" type="fix" dev="yonik">Endless loops in CSV parser</action>
      <action issue="CSV-13" type="fix" dev="ebourg">NullPointerException in CSVPrinter.print()/println()</action>
      <action issue="CSV-45" type="update" dev="yonik">CSVPrinter overhaul</action>
      <action issue="CSV-23" type="fix" dev="ebourg">Excel strategy uses wrong separator</action>
      <action issue="CSV-49" type="update" dev="ebourg" due-to="Bob Smith">CSVStrategy has modifiable public static variables
      </action>
      <action issue="CSV-48" type="add" dev="ebourg">Predefined format for MYSQL</action>
      <action issue="CSV-46" type="update" dev="ebourg">Reduce visibility of methods in internal classes</action>
      <action issue="CSV-26" type="update" dev="jacopoc">ExtendedBufferedReader does too much</action>
      <action issue="CSV-27" type="update" dev="ebourg">Decide whether to keep the csv.writer subpackage</action>
    </release>

  </body>
</document>
