Apache ODF Toolkit Change Log
=============================

======= 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 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.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)

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.
