Apache ODF Toolkit Change Log
=============================

======= Release 0.6.2 =======

The most notable changes in ODF Toolkit 0.6.2 incubating over previous release:

Release wiki page: https://cwiki.apache.org/confluence/display/ODFTOOLKIT/0.6.2-incubating

Versions of major components
----------------------------

* Xerces 2.9.1 (http://xerces.apache.org/mirrors.cgi)
* Apache Jena 2.9.4 (http://jena.apache.org/download/index.html)
* Apache Commons Validator 1.4.0 (http://commons.apache.org/proper/commons-validator//download_validator.cgi)

For a full dependecy list run mvn dependency:tree from the top level in the source module or see the release wiki page.

Upgrading from 0.6.1-incubating
-----------------------------


Detailed Change List
--------------------

New Features
------------

Optimizations
-------------

Bug Fixes
---------

* ODFTOOLKIT-398 prevent NullPointerException in getCellBackgroundColor() (Florian Hopf, Patch by David Reepmeyer)

Other
-----

======= Release 0.6.1 =======

The most notable changes in ODF Toolkit 0.6.1 incubating over previous release:
* Make release 0.6 available in Maven repositories

Release wiki page: https://cwiki.apache.org/confluence/display/ODFTOOLKIT/0.6.1-incubating

Versions of major components
----------------------------

* Xerces 2.9.1 (http://xerces.apache.org/mirrors.cgi)
* Apache Jena 2.9.4 (http://jena.apache.org/download/index.html)
* Apache Commons Validator 1.4.0 (http://commons.apache.org/proper/commons-validator//download_validator.cgi)

For a full dependecy list run mvn dependency:tree from the top level in the source module or see the release wiki page.

Upgrading from 0.6-incubating
-----------------------------

The behaviour of CellSelection#replaceWith(String) has changed. If you are relying on the old behaviour use CellSelection#advancedReplaceWith(String) instead (see ODFTOOLKIT-362).

Detailed Change List
--------------------

New Features
------------

* ODFTOOLKIT-358 Add method to set date time value on Cell (Florian Hopf)

Optimizations
-------------

Bug Fixes
---------

* ODFTOOLKIT-355 NullPointerException when removing rows from a new Spreadsheet table (Florian Hopf)
* ODFTOOLKIT-362 TextSelection.replaceWith() ends in an infinite loop (Florian Hopf)
* ODFTOOLKIT-363 Table#appendRow() method creates a row without any cell (Florian Hopf)
* ODFTOOLKIT-379 NullPointerException in Paragraph.getTextContent() (Florian Hopf, Patch by Marc Schreiber)

Other
-----

* ODFTOOLKIT-365 Improve Release Process to easily publish releases with maven (Florian Hopf)

The following people have contributed to ODF Toolkit 0.6.1 incubating by submitting or commenting on the issues resolved in this release, 
or contributed via reported bugs/comments on the mailing list:

Nick Burch (mentor)
Yegor Kozlov (mentor)
Dali Liu (committer)
Devin Han (committer)
Donald Harbison (committer)
Florian Hopf (committer)
Oliver Rau (committer)
Rob Weir (committer)
Svante Schubert (committer)
Alain Fagot Béarez 
Alexandr Klimov
Andy Jefferson
Anders Sjostrom
Ashok Hariharan
Charitha Madusanka
Dani Prieto 
Dave Fisher
Dennis E. Hamilton 
Gavin McDonald
Graham Weatherup
Ian Cunningham
Jeremias Maerki
Johnny Haugen Sorgard
Jörg Büsse
Kejia Ye
Lars Moller 
Pavel Jisl
Philip Helger
Peter Junge
Marc Schreiber
Mathias Silbermann 
Michael Stahl
Michan Jaskurzyński
Nick de Graeve
Noah Tilton
Romain Benefice
Steele, Raymond
Stefan Renz
Steffen Börsig
Sherzod Muratov
Svante Schubert
Tao Lin
Torsten Krah 
Vicente Villegas Larios

======= Release 0.6 incubating =======

The most notable changes in ODF Toolkit 0.6 incubating over previous release:
* Added document encryption support
* Added metadata support
* Support for OpenDocument-v1.2
* Additional APIs for Simple API

Release wiki page: https://cwiki.apache.org/confluence/display/ODFTOOLKIT/0.6-incubating

Versions of major components
----------------------------

* Xerces 2.9.1 (http://xerces.apache.org/mirrors.cgi)
* Apache Jena 2.9.4 (http://jena.apache.org/download/index.html)
* Apache Clerezza 0.1-incubating (http://incubator.apache.org/clerezza/downloads/)
* Apache Commons Validator 1.4.0 (http://commons.apache.org/proper/commons-validator//download_validator.cgi)

For a full dependecy list run mvn dependency:tree from the top level in the source module or see the release wiki page.

Upgrading from 0.5-incubating
-----------------------------

There are no known API changes.

Detailed Change List
--------------------

New Features
------------

* ODFTOOLKIT-319 Document encryption support (Devin Han, Rob Weir, DaLi Liu)
* ODFTOOLKIT-50 Add ODF 1.2 RDF metadata support (Tao Lin, Svante Schubert, DaLi Liu)
* ODFTOOLKIT-346 New API to create protected section in TextDocument to protect contents (DaLi Liu, Patch by Kejia Ye)
* ODFTOOLKIT-340 New API to insert form controls into document (DaLi Liu, Patch by Kejia Ye)
* ODFTOOLKIT-339 new methods in TextDocument to suport insert a document into an open document (DaLi Liu)
* ODFTOOLKIT-330 Improve the method TextSelection.replaceWith(String). new param types support (DaLi Liu)
* ODFTOOLKIT-334 New API to support table autoformat (DaLi Liu, Patch by Kejia Ye)
* ODFTOOLKIT-336 New APIs to set page style when inserting page break in TextDocument (DaLi Liu, Patch by Kejia Ye)
* ODFTOOLKIT-329 New Simple API to generate a table of content in text document (Rob Weir, Patch by DaLi Liu)
* ODFTOOLKIT-305 Update ODF 1.2 schema to OpenDocument-v1.2 final version (Devin Han)
* ODFTOOLKIT-307 Update ODF Validator to support ODF 1.2 final version (Devin Han)
* ODFTOOLKIT-306 Update Taglets to support ODF 1.2 final version. (Devin Han)
* ODFTOOLKIT-199 Supply signature and manifest features to code generator plugin (Devin Han)

Optimizations
-------------

Bug Fixes
---------

* ODFTOOLKIT-324 Simple ODF is throwing an exception on alien elements (Florian Hopf)
* ODFTOOLKIT-325 Spreadsheet : Call to cell.getTimeValue on cell marked as valueType TIME but no value set gives NPE (Florian Hopf)
* ODFTOOLKIT-338 The Value of VariableField always is "" when try to get a VariableField instance by TextDocument.getVariableFieldByName(String) (DaLi Liu)
* ODFTOOLKIT-326 NPE when setting default background in TextCellProperties (Rob Weir, Patch by Florian Hopf)
* ODFTOOLKIT-341 newImage() generates java.lang.NullPointerException when using an svg image (Rob Weir, Patch by Anders Sjöström)
* ODFTOOLKIT-327 java.lang.NullPointerException at org.odftoolkit.odfdom.pkg.OdfPackage.logValidationError(OdfPackage.java:2028) (Rob Weir, Patch by Florian Hopf)
* ODFTOOLKIT-331 AbstractListContainer.getListIterator() doesn't include all lists (Rob Weir, Patch by Nick de Graeve)
* ODFTOOLKIT-302 getNamespaceURI() implementation in ODFDOM is not aware of duplicate namespace prefixes (Svante Schubert, Patch by Ashok Hariharan)
* ODFTOOLKIT-311 TextExtractor uses wrong new line character (Oliver Rau)

Other
-----

* ODFTOOLKIT-342 MetaDocumentStatisticTest sometimes fails (Florian Hopf)
* ODFTOOLKIT-318 Build of validator with Maven 3.0.4 (Svante Schubert)
* Correct the link for Simple API Cookbook (Rob Weir, patch by noahktilton)
* ODFTOOLKIT-190 Improvement of XPath Tests (Svante Schubert)
* ODFTOOLKIT-299 Build with JDK 7 as well as Earlier versions (Svante Schubert, Patch by Dennis E. Hamilton)
* ODFTOOLKIT-312 Better exception handling for OdfPackage (Svante Schubert, Patch by Jeremias Maerki)


The following people have contributed to ODF Toolkit 0.6 incubating by submitting or commenting on the issues resolved in this release, 
or contributed via reported bugs/comments on the mailing list:

Nick Burch (mentor)
Yegor Kozlov (mentor)
Dali Liu (committer)
Devin Han (committer)
Donald Harbison (committer)
Florian Hopf (committer)
Oliver Rau (committer)
Rob Weir (committer)
Svante Schubert (committer)
Andy Jefferson
Anders Sjostrom
Ashok Hariharan
Charitha Madusanka
Dani Prieto 
Dave Fisher
Dennis E. Hamilton 
Gavin McDonald
Graham Weatherup
Ian Cunningham
Jeremias Maerki
Johnny Haugen Sorgard
Kejia Ye
Lars Moller 
Pavel Jisl
Philip Helger
Peter Junge
Marc Schreiber
Mathias Silbermann 
Michael Stahl
Michan Jaskurzyński
Nick de Graeve
Noah Tilton
Romain Benefice
Steele, Raymond
Stefan Renz
Sherzod Muratov
Svante Schubert
Tao Lin
Torsten Krah 
Vicente Villegas Larios

======= Release 0.5 incubating =======

The most notable changes in ODF Toolkit 0.5 incubating over previous releases in ODF Toolkit Union are:
 * All of the sub-projects release with an all in one package.
 * Mark ODFDOM DOC API's as "deprecated", will be replaced by Simple API in future.
 * Some bugs fixed.

New Features
------------

* ODFTOOLKIT-287 PraragraphProperties should contain methods for margins and text indention.[Developer:Oliver Rau,Devin;Reviewer:Devin]

Optimizations
-------------

* ODFTOOLKIT-289 Clean up unnecessary log messages.[Developer:Devin]

Bug Fixes
---------

* ODFTOOLKIT-104 Create new spreadsheet, save it, load it, add a sheet, save it, then load it causes failure. (Devin Han)
* ODFTOOLKIT-133 NullPointerException sometimes happened when parsing a centain kind of XML under IBM JDK. (Devin Han, Patch by kelvin)
* ODFTOOLKIT-288 No null check for lastNode in setTextContent of Span class.[Developer:Oliver Rau,Devin;Reviewer:Devin]
* ODFTOOLKIT-295 Exit condition of Length.parseUnit in ODFDOM is wrong.[Developer:Oliver Rau;Reviewer:Devin]

Other
-----

* ODFTOOLKIT-290 Consolidate build of ODFToolkit sub-projects.[Developer:Yegor Kozlov,Devin;Reviewer:Devin]
* ODFTOOLKIT-291 Adapt Simple API to the newest ODFDOM trunk.[Developer:Devin]
* ODFTOOLKIT-292 Mark ODFDOM DOC API's as "deprecated".[Developer:Devin]
* ODFTOOLKIT-293 Submit Apache Licence info automatically added code to SVN.[Developer:Devin]
* ODFTOOLKIT-297 Test: testGetLanguage(org.odftoolkit.simple.meta.OfficeMetaTest) failed when the platform language is not 'Chinese'. [Developer:Devin]
* ODFTOOLKIT-298 XLST-Runner and Validator aren't compatible with Java 5. [Developer:Robert Weir,Devin]
 

ODF Toolkit relies on the current set of major dependencies (generated using mvn dependency:tree from the top-level odf toolkit src dir):

org.apache.odftoolkit:taglets:jar:0.8.8-incubating
org.apache.odftoolkit:schema2template:jar:0.8.8-incubating
+- org.apache.velocity:velocity:jar:1.6.4:compile
|  +- commons-collections:commons-collections:jar:3.2.1:compile
|  +- commons-lang:commons-lang:jar:2.4:compile
|  \- oro:oro:jar:2.0.8:compile
+- net.java.dev.msv:msv-core:jar:2009.1:compile
|  +- com.sun.msv.datatype.xsd:xsdlib:jar:2009.1:compile
|  +- net.java.dev.msv:msv-testharness:jar:2009.1:compile
|  |  \- org.apache.ant:ant:jar:1.7.1:compile
|  |     \- org.apache.ant:ant-launcher:jar:1.7.1:compile
|  +- xml-resolver:xml-resolver:jar:1.2:compile
|  +- xerces:xercesImpl:jar:2.9.1:compile
|  |  \- xml-apis:xml-apis:jar:1.3.04:compile
|  +- isorelax:isorelax:jar:20030108:compile
|  \- relaxngDatatype:relaxngDatatype:jar:20020414:compile
\- junit:junit:jar:4.5:test
org.apache.odftoolkit:schema2template-maven-plugin:maven-plugin:0.8.8-incubating
+- org.apache.odftoolkit:schema2template:jar:0.8.8-incubating:compile
|  +- org.apache.velocity:velocity:jar:1.6.4:compile
|  |  +- commons-collections:commons-collections:jar:3.2.1:compile
|  |  +- commons-lang:commons-lang:jar:2.4:compile
|  |  \- oro:oro:jar:2.0.8:compile
|  \- net.java.dev.msv:msv-core:jar:2009.1:compile
|     +- com.sun.msv.datatype.xsd:xsdlib:jar:2009.1:compile
|     +- net.java.dev.msv:msv-testharness:jar:2009.1:compile
|     |  \- org.apache.ant:ant:jar:1.7.1:compile
|     |     \- org.apache.ant:ant-launcher:jar:1.7.1:compile
|     +- xml-resolver:xml-resolver:jar:1.2:compile
|     +- xerces:xercesImpl:jar:2.9.1:compile
|     |  \- xml-apis:xml-apis:jar:1.3.04:compile
|     +- isorelax:isorelax:jar:20030108:compile
|     \- relaxngDatatype:relaxngDatatype:jar:20020414:compile
+- junit:junit:jar:4.5:test
+- org.apache.maven:maven-plugin-api:jar:2.0.7:provided
+- org.apache.maven:maven-project:jar:2.0.7:provided
|  +- org.apache.maven:maven-settings:jar:2.0.7:provided
|  +- org.apache.maven:maven-profile:jar:2.0.7:provided
|  +- org.apache.maven:maven-model:jar:2.0.7:provided
|  +- org.apache.maven:maven-artifact-manager:jar:2.0.7:provided
|  |  +- org.apache.maven:maven-repository-metadata:jar:2.0.7:provided
|  |  \- org.apache.maven.wagon:wagon-provider-api:jar:1.0-beta-2:provided
|  +- org.apache.maven:maven-plugin-registry:jar:2.0.7:provided
|  +- org.codehaus.plexus:plexus-utils:jar:1.4.1:provided
|  \- org.codehaus.plexus:plexus-container-default:jar:1.0-alpha-9-stable-1:provided
|     \- classworlds:classworlds:jar:1.1-alpha-2:provided
\- org.apache.maven:maven-artifact:jar:2.0.7:provided
org.apache.odftoolkit:odfdom-java:jar:0.8.8-incubating
+- org.apache.odftoolkit:taglets:jar:0.8.8-incubating:compile
+- xerces:xercesImpl:jar:2.9.1:compile
|  \- xml-apis:xml-apis:jar:1.3.04:compile
\- junit:junit:jar:4.8.1:test
org.apache.odftoolkit:xslt-runner:jar:1.2.1-incubating
\- org.apache.odftoolkit:odfdom-java:jar:0.8.8-incubating:compile
   +- org.apache.odftoolkit:taglets:jar:0.8.8-incubating:compile
   \- xerces:xercesImpl:jar:2.9.1:compile
      \- xml-apis:xml-apis:jar:1.3.04:compile
org.apache.odftoolkit:xslt-runner-task:jar:1.2.1-incubating
+- org.apache.odftoolkit:xslt-runner:jar:1.2.1-incubating:compile
|  \- org.apache.odftoolkit:odfdom-java:jar:0.8.8-incubating:compile
|     +- org.apache.odftoolkit:taglets:jar:0.8.8-incubating:compile
|     \- xerces:xercesImpl:jar:2.9.1:compile
|        \- xml-apis:xml-apis:jar:1.3.04:compile
\- org.apache.ant:ant:jar:1.8.2:compile
   \- org.apache.ant:ant-launcher:jar:1.8.2:compile
org.apache.odftoolkit:odfvalidator:war:1.1.5-incubating
+- org.apache.odftoolkit:odfdom-java:jar:0.8.8-incubating:compile
|  \- org.apache.odftoolkit:taglets:jar:0.8.8-incubating:compile
+- commons-fileupload:commons-fileupload:jar:1.2.2:compile
+- net.java.dev.msv:msv-core:jar:2011.1:compile
|  +- com.sun.msv.datatype.xsd:xsdlib:jar:2010.1:compile
|  +- isorelax:isorelax:jar:20030108:compile
|  \- relaxngDatatype:relaxngDatatype:jar:20020414:compile
+- org.iso_relax.verifier.jaxp.validation:isorelax-jaxp-bridge:jar:1.0:compile
+- xerces:xercesImpl:jar:2.9.1:compile
|  \- xml-apis:xml-apis:jar:1.3.04:compile
\- junit:junit:jar:4.8.1:test
org.apache.odftoolkit:simple-odf:jar:0.7-incubating
+- org.apache.odftoolkit:odfdom-java:jar:0.8.8-incubating:compile
|  \- org.apache.odftoolkit:taglets:jar:0.8.8-incubating:compile
+- xerces:xercesImpl:jar:2.9.1:compile
|  \- xml-apis:xml-apis:jar:1.3.04:compile
\- junit:junit:jar:4.8.1:test
org.apache.odftoolkit:odftoolkit:pom:0.5-incubating

The following people have contributed to ODF Toolkit 0.5 incubating by submitting or commenting on the issues resolved in this release, 
or contributed via reported bugs/comments on the mailing list:

Sam Ruby (mentor)
Nick Burch (mentor)
Yegor Kozlov (mentor)
Rob Weir (committer)
Devin Han (committer)
Svante Schubert (committer)
Daisy Guo (committer)
Donald Harbison (committer)
Andy Brown (committer)
Dave Fisher (committer)
Juergen Schmidt (committer)
Oliver Rau (committer)
Dennis E. Hamilton
Jeremias Maerki
Wilson Barbosa
Ansgar Konermann
Grzegorz Kaczor
Watte Babbu
Ashok Hariharan
Henrique Lobo Weissmann
Ian Lynch
Michael McCandless
Michael Stahl
Patrick Durusau
Pedro F. Giffuni
Drew Jensen
Kevin Skelton
Neelima
Ram Kane

See http://s.apache.org/odfC for more details on these contributions.
