apache > cocoon

- Home

# History of Changes

## Introduction and explanation of symbols

Changes are sorted chronologically with the most recent at the top. These symbols denote the various action types:=add, =fix, =remove, =update

## Version 2.1.12 (TBD)

- Fix javadoc in PropertySettings. RunningMode is not supported in 2.1.x Committed by RG. See Issue COCOON-2064.
- Core: XMLByteStreamCompiler hard-coded limits of 0xffff Strings prevents large XML documents from being handled in Cocoon. Committed by AG. See Issue COCOON-2158.

### Contributors to this release

We thank the following people for their contributions to this release.

This is a list of all people who participated as committers:
Antonio Gallardo (AG), Ralph Goers (RG).

## Version 2.1.11 (December 31 2007)

- Created XPathXMLFileModule to address issus with XMLFileModule. XPathXMLFileModule supports variable replacement and caching of documents in ehcache and expressions as soft references. Committed by RG. See Issue COCOON-1574.
- Forms: Allow Ajax submission of forms with empty upload field. Committed by AG. Thanks to Robin Wyles. See Issue COCOON-2052.
- Portal: New SiteProfileManager providing the same profile to several users based on a configured key. Committed by CZ.
- Portal: Some memory consumption improvements for the user profiles. Committed by CZ.
- Core: Update xalan to 2.7.1. Committed by AG.
- Sitemap: Redirect to cocoon:/foo did not work in sub-sitemap when it is in same directory as the root sitemap. Committed by AN. Thanks to Robert Hoffmann. See Issue COCOON-1990.
- Core: Update xercesImpl to 2.9.1. Committed by AG.
- Event Cache Block: Restore serializability of persistent cache when using event-aware cache. Committed by JH. Thanks to Ellis Pritchard. See Issue COCOON-2146.
- Mail Block: Fix setting of URL message body. Committed by VG. Thanks to Robin Wyles. See Issue COCOON-2129.
- <map:serialize status-code="{}"/> supports variable resolution. Committed by JH. Thanks to Jochen Seifarth. See Issue COCOON-1354.
- XMLDB Block: Fix collection URLs in XMLDBSource. Fixes URL resolution and 'Mount DB' sample. Committed by VG.
- XMLDB Block: Update Xindice to 1.1 release. Committed by VG.
- POI Block: Color string normalization. Committed by AG. Thanks to Krystian Nowak. See Issue COCOON-1440.
- build.sh: Allow for quoted shell arguments containing spaces. Committed by AN. Thanks to Andreas Deininger. See Issue COCOON-2098.
- CForms: Handling of empty responses in AJAX Forms with IFrame transport. Committed by AG. Thanks to Jan Oberst. See Issue COCOON-2027.
- Ajax: ajax/common.js makes use of deprecated dojo.animation.Timer Committed by AG. Thanks to Alexander Klimetschek. See Issue COCOON-2059.
- XSP block: Upgrade Eclipse compiler to version 3.1.0 to allow the use of Java5 syntax in XSPs. (Latest released Eclipse version is 3.2.2 but use 3.1.0 to be consistent with the version picked up by the Maven build in trunk). Committed by AN.
- Core, QDox: Fixed getInputStream() in XModuleSource and QDoxSource: Set up XMLSerializer in a component way, i.e. retrieve it from ServiceManager. Committed by JH. Thanks to Ellis Pritchard. See Issue COCOON-2077.
- Dojo toolkit upgraded to 0.4.3 version. It contains fix for security bug. See http://dojotoolkit.org/releaseNotes/0.4.3. Committed by GK. Thanks to Alexander Klimetschek. See Issue COCOON-2073.
- I18n (ParamSaxBuffer): when substitution params like {0} are split over multiple character events, do not write out extra garbage characters. Committed by JJ. Thanks to Gunnar Brand. See Issue COCOON-1315.
- Portal: Marked PreparePortalAction, CopletSetDataAction, and ObjectModelAction ThreadSafe Committed by RG.
- Core: Update log4j to 1.2.14, commons-io to 1.3.1, commons-lang to 2.3 and jakarta-regexp to 1.5. Committed by AG.
- CForms: MultivalueEditorWithSuggestion doesn't add values to the listbox on Internet Explorer. Committed by AG. Thanks to Larry Ruiz. See Issue COCOON-2023.
- CForms: Submit widget now inherits validate attribute value from the ancestor widget, if it is specified. Committed by VG.
- Serializers block: Correctly handle content of script and style tag as cdata for html. Committed by CZ.
- CForms: MultivalueEditorWithSuggestion, extended multivalueeditor widget with suggestion list. Committed by AG. Thanks to Larry Ruiz. See Issue COCOON-2013.
- CForms: CFormsSuggest widget does not implement the onValueChanged event. Committed by AG. Thanks to Paul Friedman. See Issue COCOON-2011.
- Core: EHCache now uses the configured cache directory instead of using the default of java.io.tempdir. Committed by CZ. Thanks to Richard Frovarp. See Issue COCOON-1927.
- Core: Update ehcache to 1.2.3. Committed by CZ.
- Template block: Add missing toString implementation to TemplateObjectModelHelper.ParametersMap. Committed by CZ. Thanks to Mark Lundquist. See Issue COCOON-1984.
- Portal block: CocoonPortlet needs to allow overriding servlet-path parameter with preferences. Committed by CZ. Thanks to Woonsan Ko. See Issue COCOON-1998.
- CForms: Fix "Serialization parameter {indent} must have the value yes or no" error in Form.prototype.saveXML() when using Saxon. Committed by JJ. Thanks to Abbas Mousavi. See Issue COCOON-2000.
- Core: Exipres caching pipeline can now cache the content forever (by setting cache-expires to a negative value). Committed by CZ.
- Core: In store janitor, add an option to cleanup all stores on each janitor run. Default behavior is to cleanup one store at a time. Committed by VG.
- Core: Fix deadlock in caching pipeline when used in combination with include transformer. Committed by AN. Thanks to Ellis Pritchard. See Issue COCOON-1985.
- CForms: introduce a new dojo-based popup-picker for dates, times and datetimes. For correct localization, supply a "dojo-locale" parameter to the forms styling XSLT (see samples). Committed by BRD.
- CForms: add support for a "timeStyle" attribute on the formatting date convertor, so that the time style can (optionally) be specified independently from the date style. Committed by BRD.
- Portal block: Fix truncation of included portlets in html include serializer. Committed by CZ.
- Auth block: Fix checking of double logins for the same security handler. Committed by CZ.
- HSQLDB block: Fix startup problems with newer HSQLDB versions and upgrade to 1.8.0.7. Committed by CZ. Thanks to Rob Berens. See Issue COCOON-1979.
- Core: Check for reloading of javascript files loaded by cocoon.load(). Committed by CZ. Thanks to Rob Berens. See Issue COCOON-1979.
- Forms block: Add method to create binding from DOM tree. Committed by JH. Thanks to Robin Wyles. See Issue COCOON-1471.
- Core: Fix threading issue with internal cache in ResourceReader. Committed by JH. Thanks to Ellis Pritchard. See Issue COCOON-1977.
- POI Block: Prevent NPE in ElementProcessorSerializer on characters before first startElement. Committed by JH. Thanks to Rob Berens. See Issue COCOON-1976.
- Updating Dojo to 0.4.1.
  - use namespaces for loading widgets
  - cleanup of client-side libraries into cocoon.forms.common
  - deprecation and replacement of functions in forms_lib.js cocoon.js CFormsForm.js
  - all cforms forms now use a dojo widget (forms:SimpleForm or forms:AjaxForm)
  Committed by JQ.
- Portal Block: Applied and improved patch for reloading bookmarks based on their (file) validity. Committed by CZ. Thanks to Vincent Demay. See Issue COCOON-1776.
- Portal Block: Fix handling of missing special parameters for forms in NewEventLinkTransformer. Committed by CZ.
- Auth Block: Make isUserInRole a static method. Committed by CZ.
- Fixes to forms and ajax samples. Committed by JQ.

### Contributors to this release

We thank the following people for their contributions to this release.

This is a list of all people who participated as committers:
Antonio Gallardo (AG), Alfred Nathaniel (AN), Bruno Dumon (BRD), Carsten Ziegeler (CZ), Grzegorz Kossakowski (GK), Jörg Heinicke (JH), Jason Johnston (JJ), Jeremy Quinn (JQ), Ralph Goers (RG), Vadim Gritsenko (VG).

This is a list of other contributors:
Abbas Mousavi, Alexander Klimetschek, Andreas Deininger, Ellis Pritchard, Gunnar Brand, Jan Oberst, Jochen Seifarth, Krystian Nowak, Larry Ruiz, Mark Lundquist, Paul Friedman, Richard Frovarp, Rob Berens, Robert Hoffmann, Robin Wyles, Vincent Demay, Woonsan Ko.

## Version 2.1.10 (December 21 2006)

- Core: Allow dynamic loading of JavaScript objects even when scope is locked. Committed by JH. Thanks to Rob Berens. See Issue COCOON-1811.
- CForms: Always set viewData for flow script functions (if it's not available set it to null). Committed by CZ. Thanks to Rob Berens. See Issue COCOON-1916.
- Javaflow OJB Sample: Fix "No method 'showEmployee' found". Committed by CZ. Thanks to Jeroen Reijn. See Issue COCOON-1969.
- The JavaFlow OJB sample overwrote the first entry on insert instead of adding a new entry. This has been fixed. Committed by CZ. Thanks to Jeroen Reijn. See Issue COCOON-1970.
- Core: Removed the buggy WildcardHelper. Use the new improved WildcardMatcherHelper. Committed by CZ.
- Profiler block: Add statistics component. Committed by CZ.
- Databases block: Add support for iBatis to use configured Excalibur data sources in iBatis. Committed by CZ.
- CForms: The filterfield widget was not defined for the forms manager. Committed by AS. Thanks to Jeroen Reijn. See Issue COCOON-1965.
- CForms: Numeric based suggestion list should initialzate to the corresponding suggested text. Committed by AG. Thanks to Carlos Chávez. See Issue COCOON-1962.
- Updated Rhino (Javascript engine) to version 1.6R5. This version is licensed under MPL, while previous versions were licensed under NPL, which was a problem since software licensed under NPL cannot be included in Apache products. The new version should be compatible with the previous version, though it does not support the constructs "catch (continue|break|return)" which were available in Cocoon's Rhino fork. Committed by BRD.
- Updated xercesImpl to 2.9.0 and xml-apis to 1.3.04. Committed by AG.
- Ajax: upload progress bar widget.
  - A new dojo widget to display file upload progress for forms (and cforms).
  - Ajax-enabled cforms can now submit file-upload fields in the background.
  - New system pipelines for Blocks (/_cocoon/system/[blockname]/**).
  - Sitemaps can now call flowscripts written in a static namespaced style.
  - Added JSON Serialization utilities for flowscript.
  - You can now get i18n translations from Stings in flowscript.
  Committed by JQ.
- Core: Add ability to pre-load i18n catalogues in I18nTransformer. Removed references to defunct cache-on-startup configuration. Committed by VG.
- CForms: Added @whitespace attribute to fd:field widget, to control how leading and trailing whitespace characters are handled when reading submitted values. Accepted values are: "trim" (default), "trim-start", "trim-end", and "preserve". Committed by JJ. See Issue COCOON-1879.
- Mail: Improve MailSender interface: added setBody(Object), setBodyURL methods, deprecated setCharset, setBody(String), setBodyFromSrc, setBodyFromSrcMimeType methods. Support byte[], InputStream as body and attachment objects. Committed by VG.
- Mail: Log exceptions from mail attachments - JavaMail does not preserve cause exception. Committed by VG.
- Lucene: Add analyzer parameter to SearchGenerator as stated by the docs. Committed by JH. Thanks to Jeroen Reijn. See Issue COCOON-1936.
- Databases: Added support for the SQL:XML tag in SQLTransformer. Committed by AG. Thanks to Geurt Wisselink. See Issue COCOON-1894.
- Validation: Replaced references to constant declarations in javax.xml.XMLConstants, which are not in the official API. Committed by JH. See Issue COCOON-1878.
- CForms: Tree widget not handling on-selection-change events correctly. Committed by AG. Thanks to Suzan Foster. See Issue COCOON-1692.
- XSP: SOAPHelper does no longer accept only replies with an XML declaration. Committed by JH. Thanks to Fabian Linz. See Issue COCOON-1883.
- Updated commons-lang to 2.2 and bsf to 2.4.0. Committed by AG.
- CForms: Add a name attribute to a booleanfield in output mode to make it easily accessible in JavaScript. Committed by JH. Thanks to Gabriele Columbro. See Issue COCOON-1900.
- CForms: BeanConvertor uses a WeakHashMap in the wrong way. Committed by AG. Thanks to Gabriele Columbro. See Issue COCOON-1867.
- AJAX: Fix cocoon suggest sample. Committed by AG. Thanks to Christofer Dutz.
- Deprecate method org.apache.cocoon.components.flow.FlowHelper.unwrap(Object). This method will be removed in 2.2 release. Use org.apache.cocoon.components.flow.util.PipelineUtil.unwrap(Object) instead. Committed by AG.
- XSP: Use namespace-uri and not the namespace-prefix to select parameters in logicsheet-util.xsl. Committed by JH. See Issue COCOON-1196.
- Databases: Check for null LOBs. Committed by VG. See Issue COCOON-1462.
- JXTemplate: Fix an ArrrayIndexOutOfBoundsException with jx:comment. Committed by JH. Thanks to Ellis Pritchard. See Issue COCOON-1866.
- Apply patch to handle malformed recipient address exception correctly. Committed by AS. Thanks to Jasha Joachimsthal. See Issue COCOON-1818.
- CForms: Apply patch to disambiguate toSAX method call. Committed by VG. Thanks to Lars Trieloff. See Issue COCOON-1906.
- Core: Move BackgroundEnvironment from Cron block into the Core. Committed by VG.
- Core: i18n transformer was loosing whitespaces in i18n:text, i18n:translate, i18n:param elements if they had mixed content. Committed by VG.
- CForms: In AbstractWidgetDefinitionBuilder, methods "setValidators", "setCreateListeners", and "setCommonProperties" now have visibility "protected" instead of "private" Committed by JBQ. Thanks to Guillaume Déflache. See Issue COCOON-1919.
- Core: Rewrite of WildcardMatcherHelper where the heavy-lifting is left to the regexp library. That fixes a false positive where "menu/foo/bar.xml" was matched by "menu/*.xml" in the old implementation. The new code also removes the over-greedyness of '**' that "**/*/*" can now be matched successfully. Committed by AN.
- Updated xercesImpl to 2.8.1. Committed by AG.
- CForms: FormManager now caches form definitions created from Source or URI. Committed by VG.
- Core: Off-by-1 bug in WildcardMatcher found pattern matches which were not there. Committed by AN.
- Core: '**' in complex WildcardMatcher pattern did not match an empty pathstep. Committed by AN.
- XSP block: Using document('') in logicsheet caused NPE. Committed by AN.
- CForms: Repeater identity binding was failing on save if widget path was given. Committed by VG.
- CForms: Inherit fb:on-delete-row, fb:on-insert-row, fb:identity repeater bindings from the parent. Fix detection of 'simple' mode. Committed by VG.
- ZipArchiveSerializer: Set time stamp of ZIP entries to last modification time of source file. Committed by AN.
- Updated ehcache to 1.2.2. Committed by AG.
- XSP block: Add example for on-the-fly generation of ZIP file. Committed by AN.
- XSP block: Suppress xmlns:xsp namespace declaration on XSP generated root element. Committed by AN.
- Repository: Add CachingSource source implementation (from trunk). Committed by VG.
- ImageOp: Send info/debug messages to the log rather than System.out.println Committed by JJ.
- Core: CopySourceAction generate NPE. Committed by AG. Thanks to Frédéric Glorieux. See Issue COCOON-1815.
- CForms: Removed debug logging left in AggregateFieldDefinitionBuilder.java. Committed by AG. Thanks to Mark Lundquist. See Issue COCOON-1849.
- CForms: Reverting incompatible change introduced in version 2.1.9. When binding a widget with value null, XML elements are no more deleted. The behaviour is now the same as in version 2.1.8. Committed by MPO. See Issue COCOON-1687.
- CForms: Tiny typo in JavaScriptJXPathBinding. Committed by AG. Thanks to Jeroen Goubert. See Issue COCOON-1889.
- CForms: HTMLArea unable to set target and title to a "link". Committed by AG. Thanks to Jeroen Reijn. See Issue COCOON-1678.
- CForms: Form locale never used in JXMacros. Committed by AG. Thanks to Carlos Chávez. See Issue COCOON-1758.
- Core: EHDefaultStore returns in the size() method the wrong number of keys. Committed by AG. Thanks to Ard Schrijvers. See Issue COCOON-1885.
- CForms block: JavaClassValidatorBuilder supports Configurable validator implementations. New AbstractJavaValidator implementation supports generation of customized fail messages. Committed by CZ.
- Core: ZipArchiveSerializer causes "Too many open files" exception. Committed by AG. Thanks to Holger Wahlen. See Issue COCOON-1882.
- Browser selector should have Opera before MSIE. Committed by AG. Thanks to Andrew Stevens. See Issue COCOON-1854.
- Lucene Block: Allow LuceneIndexTransformer to index large documents (with more than 10k terms). Committed by AG. Thanks to Conal Tuohy. See Issue COCOON-1880.
- XML-DB Block: XMLDBTransformer blows up Saxon. Committed by AG. Thanks to Don Grodecki. See Issue COCOON-1876.
- Switched to the new WildcardMatcherHelper for all wildcard matching which is a rewrite of the WildcardHelper. Committed by GP.
- Updated quartz to 1.5.2. Committed by AG.
- EHDefaultStore: Allow users to configure disk-persistent parameter. In earlier cocoon versions this ehcache parameter was always true. It defines whether or not the disk store persists between restarts of the Virtual Machine. The default value is true. Committed by AG. Thanks to Ard Schrijvers.
- The predefined variables "parameters" and "cocoon.parameters" now both point to the parameters object in JXTemplateGenerator and the template block. (cocoon.parameters did point to a properties object). Committed by CZ.
- HSQLDB Block: Workaround for HSQLDB improper shutdown in SAP NetWeaver. Committed by AG. Thanks to Igor Naumov. See Issue COCOON-1862.
- CForms Block: RepeaterJXPathBinding - order of row is inverted. Committed by AG. Thanks to Dennis Dam. See Issue COCOON-1864.
- Naming Block: Check for Null URI in LDAPTransformer. Committed by AG. Thanks to Igor Naumov. See Issue COCOON-1861.
- Add the CoWarp contribution by Carsten Ziegeler from the Osoco open source project (http://osoco.sourceforge.net/cowarp/). Committed by CZ.
- Deprecate session-fw and authentication-fw block. These blocks will be removed in further releases. Committed by CZ.
- Databases: Read CLOBs using getCharacterStream, delegate character decoding to the database. Revert to old behavior if clob-encoding parameter is present. Committed by VG.
- Portal Block: Add support for input modules in start uri for application coplet. Committed by CZ.
- Databases: Support multiple results in SQLTransformer. Committed by VG. See Issue COCOON-1247.
- Databases: Fix NPE in SQLTransformer in error handling code. Committed by VG. See Issue COCOON-1552.
- Databases: Support CLOBs in SQLTransformer when returned as stored procedure parameters, or as columns in a cursor returned by stored procedure. Committed by VG.
- Databases: Fix reading of the CLOBs in SQLTransformer. Committed by VG.
- CForms Block: Add multiple repeater drag & drop dojo sample. Committed by AG. Thanks to Carlos Chávez & Eric Meyer.
- Set instrumentation manager on child component managers to enable instrumentation of all components including sitemap components. Committed by CZ. Thanks to Brian Vargas. See Issue COCOON-1857.
- Updated dojo to 20060614. Committed by AG.
- Fix bug in wildcard matcher where a uri containing a pattern twice did not always match. For example, the uri "hallo.xml.xml" did not match "*.xml". Committed by CZ.
- CForms: Using setRequired in Ajax mode does not generate bu:replace. Committed by AG. Thanks to Vincent Demay. See Issue COCOON-1848.
- AJAX Block: Error popup window not resizable/scrollable. Committed by AG. Thanks to Guillaume Déflache. See Issue COCOON-1847.
- CForms: Load and save model phase events are now send. Committed by CZ.
- CForms: Output widget does not initialize from <fd:initial-value>. Committed by AG. Thanks to Freek Segers. See Issue COCOON-1741.
- Template block: NullPointerException. Committed by AG. Thanks to Tim Williams. See Issue COCOON-1744.
- XIncludeTransformer: XInclude transformer does not handle fallback correctly. Committed by AG. Thanks to Jason Johnston. See Issue COCOON-1489.
- ResourceReader fails to add HTTP headers. Committed by AG. Thanks to Martin Kuck. See Issue COCOON-1266.
- XMLFileModule: file-specific configuration ignored. Committed by AG. Thanks to Guillaume Déflache. See Issue COCOON-1840.
- HTTPRequest: Redundant copying between container and form encoding. Committed by AG. Thanks to Aleksander Bandelj. See Issue COCOON-1625.
- Error decommissioning component: org.apache.cocoon.components.store.impl.EHDefaultStore. Committed by AG. Thanks to Pier Fumagalli. See Issue COCOON-1694.
- exception2html.xslt: <script /> causes IE display problem. Committed by AG. Thanks to Eric Meyer. See Issue COCOON-1839.
- Tour block: SVG samples now use the correct SVG 1.1 namespace. Committed by BD.
- RequestGenerator: Add remoteUser() information. Committed by AG. Thanks to Andrew Stevens. See Issue COCOON-1515.
- XIncludeTransformer: xi:fallback fail when use parse="text". Committed by AG. See Issue COCOON-1110.
- XInclude transformer uses href fragment rather than xpointer attribute (spec conformance). The XInclude 1.0 spec (see http://www.w3.org/TR/xinclude/#include_element) states the following about the href attribute:
  'Fragment identifiers must not be used; their appearance is a fatal error.'
  Cocoon's XIncludeTransformer incorrectly allows xpointer fragments to be specified using a fragment identifier in the href attribute. The correct way to support xpointers is the 'xpointer' attribute on xi:include, which the transformer does not currently recognize. Committed by AG. Thanks to Jason Johnston. See Issue COCOON-1753.
- Cocoon htmlunit testcases are now compatible with htmlunit 1.8. Committed by AG.
- Updated xmlunit to 1.0 and junit to 3.8.2. Committed by AG.
- Added calculated fields implementation. Committed by SG.
- Updated XReporter expressions to latest version (see http://issues.cocoondev.org/browse/XRP-113 ). Committed by SG.
- CForms: Java event listeners can now implement Configurable, LogEnabled, and Contextualizable. Committed by CZ.
- CForms: added a Repeater.moveRow2(from, to) method, which in contrast to the Repeater.moveRow method inserts the row at the exact to-index specified. Committed by BRD.
- FOP block depends on XSP block (for samples) Committed by BD. Thanks to Vince.
- Portal: PageLabels can now be configured to be part of the url. Committed by RG.
- Made the pool-max values in the html block's generators externally configurable. Made sitemap reloading externally configurable. Made pipeline amd encodeURLTransformer pool-max values externally configurable. Committed by RG.
- CForms/Ajax: when the Ajax-update contained an empty textarea, IE failed to parse this correctly, displaying '</span></div>' in the textarea. Fixed by adding an explicit closing tag for textareas. Committed by BRD.
- CForms: widgets in unions lost their value when switching between union cases. Committed by BRD.
- Updated axis to 1.4 and commons-collections to 3.2. Committed by AG.
- Added a lightweight FOM_SimpleCocoon class, and placed it in the javascript scope when there isn't already a scope defined. This way, even when using javaflow, you have access to the cocoon object (with request etc..) from javascript snippets in definition. Committed by SG. See Issue COCOON-1804.
- Added CSS classes in cocoon forms default XSLs. Committed by SG. See Issue COCOON-1782.
- Updated ehcache to 1.2. Committed by AG.
- The JDK 1.4 version of the EncodeURLTransformer did not work properly as it was not matching just the beginning of the string as the Jakarta-regexp version does. The transformer was corrected to only match the beginning of the string. In 2.1.9 this error can be circumvented by configuring the transformer and adding "*" to the end of each pattern. Committed by RG. See Issue COCOON-1742.
- As with all the AbstractTextSerializer based serializers, the XHTMLSerializer should handle the omit-xml-declaration to not put the XML declaration as first line of the serialized document. This prevents many rendering problems in Internet Explorer. Default behaviour is to send the xml declaration as before. Committed by AS. Thanks to Maurizio Pillitu. See Issue COCOON-1845.
- Commandline interface: the user-agent is now correctly set in the request headers (and not in the request parameters). Committed by CZ. Thanks to James Bates. See Issue COCOON-1511.
- RandomNumberModule: does not returns random number in the range (min,max) as expected. Committed by AG. See Issue COCOON-1716.
- Performance Issue/JavaScriptFlowScript: If <reload-scripts> is set to false, don't check for last modification time of javascript source files. Committed by AG. Thanks to Georg Hüttenegger. See Issue COCOON-1721.
- XSP block: Fix regression introduced in 2.1.8 that under specific circumstances logicsheets were not applied, leading to compilation errors. This manifested itself only if a) two XSPs referred to the same custom logicsheet by a relative location path, b) the custom logicsheet used another logicsheet, and c) the built-in logicsheet's namespace was not mentioned in xsp:page. The compilation errors occurred always when calling the second XSP for the first time. Fix also race condition which could lead to similar XSP compilation errors under high load when accessing the same logicsheet for the first time. Committed by AN.
- Template block: Make the template block usable with JDK 1.3+ and enable it by default. Committed by CZ.
- CForms: Fix inplace editing samples Committed by JBQ.
- CForms: Add id, state and listening attributes to the transformed form-template element (jx macros and forms transformer). Committed by CZ. See Issue COCOON-1820.
- XSP block: Use private methods to call start/endElement in xsp.xsl. That generates smaller bytecode allowing to compiler larger XSPs before hitting the 64k limit for the size of the generate() method. Committed by AN.
- Forms block: modified ProcessingPhase to add a PROCESSING_INITIALIZE phase instead of the spurious double READ_FROM_REQUEST_VALUE sent before. Made a ProcessingPhaseListener configurable from form definition with on-processing-phase and adapted the JavaScript widget listener to support processing phase events. Committed by SG. See Issue COCOON-1781COCOON-1685.
- Forms block: added repeater events. Repeater now sends row added, deleted etc.. events. The listener can be added in definition with an on-repeater-modified element. Added support for these events in JavaScript listener. Committed by SG. See Issue COCOON-1801.
- Passing the default locale while parsing initial-value on a form if no locale attribute was specified. Committed by SG. See Issue COCOON-1844.

### Contributors to this release

We thank the following people for their contributions to this release.

This is a list of all people who participated as committers:
Antonio Gallardo (AG), Alfred Nathaniel (AN), Andrew Savory (AS), Bertrand Delacrétaz (BD), Bruno Dumon (BRD), Carsten Ziegeler (CZ), Giacomo Pati (GP), Jean-Baptiste Quenot (JBQ), Jörg Heinicke (JH), Jason Johnston (JJ), Jeremy Quinn (JQ), Marc Portier (MPO), Ralph Goers (RG), Simone Gianni (SG), Vadim Gritsenko (VG).

This is a list of other contributors:
Aleksander Bandelj, Andrew Stevens, Ard Schrijvers, Brian Vargas, Carlos Chávez, Carlos Chávez & Eric Meyer, Christofer Dutz, Conal Tuohy, Dennis Dam, Don Grodecki, Ellis Pritchard, Eric Meyer, Fabian Linz, Frédéric Glorieux, Freek Segers, Gabriele Columbro, Georg Hüttenegger, Geurt Wisselink, Guillaume Déflache, Holger Wahlen, Igor Naumov, James Bates, Jasha Joachimsthal, Jason Johnston, Jeroen Goubert, Jeroen Reijn, Lars Trieloff, Mark Lundquist, Martin Kuck, Maurizio Pillitu, Pier Fumagalli, Rob Berens, Suzan Foster, Tim Williams, Vince, Vincent Demay.

## Version 2.1.9 (April 7 2006)

- Fix caching problems in ImageReader: image was not regenerated when allow-enlarging or fit-uniform sitemap parameters were changed Committed by JBQ.
- CForms: Added event handling for group of type "choice" (allow formsOnShow attribute) Committed by JBQ. Thanks to Rob Berens. See Issue COCOON-1809.
- CForms: Added method StaticSelectionList.addItem(Object value, String label) Committed by JBQ. Thanks to Rob Berens. See Issue COCOON-1808.
- CForms: add dynamic id to Form object. This allows to use the same form model several times on the same page, for example if the form is used in a portal. Committed by CZ.
- Configuration values can now be set externally. The properties that can be modified can be identified by looking at the property files in WEB-INF/properties. The properties can be overriden by specifying them as system properties when invoking Cocoon or by placing them in a property file and identifying its location via the "org.apache.cocoon.settings" system property. The default Cocoon script sets this to ./cocoon.properties. Committed by RG.
- Deprecated method o.a.c.environment.Environment.getOutputStream() still used internally. Committed by AG. Thanks to Mark Lundquist. See Issue COCOON-1814.
- Added the NekoHTMLTransformer. Updated the NekoHTMLGenerator's setup bits to allow for setting parser features as well as properties, and provided a sample neko.properties configuration file. Committed by JBQ. Thanks to Andrew Stevens. See Issue COCOON-1639.
- Updated asm to 2.2.1, asm-util to 2.2.1 groovy to 1.0-jsr-05 and antlr to 2.7.6. Committed by AG.
- CForms: added an fd:java validator to make it easy to implement custom WidgetValidator's in Java (for use in the form definition). Committed by BRD. Thanks to Simone Gianni. See Issue COCOON-1806.
- Updated commons-io to 1.2. Committed by AG.
- Ajax: rewrote everything with Dojo, added a new "PartialLink" widget using the "target" attribute on links to partially update the page. Committed by SW.
- Forms: many Ajax-related new features.
  - Rewrote almost everything using Dojo
  - Added a Dojo widget for repeaters, allowing drag and drop reordering of rows (but not on Safari) and clicking in rows to select them.
  - Added a Dojo widget for inplace editing.
  - Added a Dojo widget for suggestion-lists. It works in relation with a new <fd:suggestion-list> element in form definitions.
  - Added a new selection/suggestion-list implementation based on a JS code snippet in the form definition.
  Committed by SW.
- Forms: updated Daisy HTML cleaner component to version 1.4.1 (was 1.1). Committed by BRD.
- Added the template block from Cocoon 2.2. This block contains a refactored implementation of the JXTemplate generator, which should be compatible with the existing one and is thus usable as a drop-in replacement. It should provide better performance, and some new features, such as Javascript expressions using @{...} syntax. It is used by having type="newjx" on map:generate, or by changing the mapping of the "jx" generator type to the new implementation class. Committed by BRD.
- Apples can now access components declared in mounted sitemaps. Committed by JHS. Thanks to Paul Focke. See Issue COCOON-1728.
- Updated xercesImpl to 2.8.0 and xml-apis to 1.3.03. Committed by AG.
- JUnit tests for LocaleAction. Committed by JHS. Thanks to Andrew Stevens. See Issue COCOON-1779.
- Incompatible change for RoleFilterTransformer: Removed dependency on FilterTransformer. Be careful to update your sitemap to reflect this. Also thanks to Andrew Stevens for updating the patch against recent branch and Doug Bennet for the reminder. Committed by JHS. Thanks to Michal Durdina. See Issue COCOON-1335.
- Add Char datatype to forms. Committed by AS. Thanks to Simone Gianni. See Issue COCOON-1789.
- Allow to add multiple rows at once to a Repeater using <fd:repeater-action command="add-row" number-of-rows="5" ...> Committed by JBQ. Thanks to Rolf Metternich. See Issue COCOON-1729.
- TraversableGenerator calls resolveURI() twice but release() only once. Committed by AG. Thanks to Freek Segers. See Issue COCOON-1796.
- Portal Block: Remove "external" attribute from coplet links. Committed by CZ.
- Portal Block: Fix handling of several instances of the same portlet where all instances showed the contents of the last portlet instance. This only applies to JSR-168 portlets, not to coplets. Committed by CZ.
- Allow configuration of initial context in LDAPTransformer. Example: <ldap:initial-context name="com.sun.jndi.ldap.connect.timeout" value="5000"/> Committed by JBQ. Thanks to Sébastien Grimault. See Issue COCOON-1707.
- html block: Add CleanupTransformer. Enables indent html, add relevant line-breaks, and remove any namespaces that are not wanted. Committed by DC. Thanks to Miles Elam. See Issue COCOON-1206.
- Allow ImageReader to process other image formats than JPEG Committed by JBQ. Thanks to George Georgovassilis. See Issue COCOON-1371.
- Form block: I18nMessage - null parameter values causes NPE. Committed by AG. Thanks to Eric Meyer. See Issue COCOON-1785.
- Ajax block: BrowserUpdateTransformer can get into invalid state - must override recycle(). Committed by AG. Thanks to Eric Meyer. See Issue COCOON-1786.
- Fix caching-point pipelines. Remove the undocumented smart-caching parameter. Committed by JBQ. See Issue COCOON-1279.
- LDAPTransformer can optionally output the DN of every returned entry as an attribute. To enable, use <ldap:dn-attribute>dn</ldap:dn-attribute> Committed by JBQ. Thanks to Antonio Fiol. See Issue COCOON-1066.
- Fix handling of <ldap:execute-replace> causing NPE in LDAPTransformer Committed by JBQ. Thanks to Warrell Harries. See Issue COCOON-1705.
- JCR block: To build the JCR block, the jcr-api-1.0.jar has to be downloaded by the user prior to building the block. Have a look at the readme in the jcr block for more information. Committed by CZ.
- Mark Forms block stable. Make dream team sample work with it. Committed by RG.
- Portal: Corrected problem with many ClassNotFoundExceptions occurring inside of the class loader by eliminating the usage of Castor deriveByClass in portal configurations. This change significantly improves performance of the portal login. Committed by RG.
- When compiling with Java 1.4 or higher, EncodeURLTransformer was modified to use JDK 1.4 regular expressions instead of Jakarta regexp improving performance and avoiding possible stack overflows. Committed by RG. See Issue COCOON-1742.
- Cron block: NPE calling QuartzJobScheduler.fireJob if the job is a CronJob. Committed by AG. Thanks to Eric Meyer. See Issue COCOON-1778.
- In cocoon.sh, use shell built-in command "exec" to replace sh's process instead of forking a new process for executing the "java" command, useful for proper service management Committed by JBQ.
- CForms: binding: implemented support for a new attribute "jxpath-factory" (can be used on any binding element) to change the factory used by JXPath when it needs to create new paths (currently this is fixed to the DOMFactory). This is useful when using non-DOM, non-bean data models. Committed by BRD.
- CForms: call dispose() on every DatatypeBuilder if needed Committed by JBQ. Thanks to Jonas Ekstedt. See Issue COCOON-1344.
- CForms: Java event listeners can now implement Serviceable to get a ServiceManager and Initializable. Committed by JBQ. Thanks to Philippe Gassmann.
- CForms: when building the query string in AJAX mode, do not include <input type="button"> Committed by JBQ. Thanks to Philippe Gassmann.
- cocoon.ajax.Fader runtime error when style uses abreviated form #ccc in IE6.0sp2. Committed by AG. Thanks to Eric Meyer. See Issue COCOON-1771.
- Added the imageop block, an Image Operation Reader providing a fairly flexible and powerful Image Reader that is capable of performing a stack of Effects, such as Scaling, color manipulation and coordination transforms, in a pluggable manner. Committed by JBQ. Thanks to Niclas Hedhman. See Issue COCOON-1301.
- Add WEB-INF/classes to loader's classpath for cli and precompile Committed by JBQ. See Issue COCOON-1465.
- Allow to run Cocoon CLI by adding servlet.jar in the classpath. Turn off cli's debug messages by default. Committed by JBQ. See Issue COCOON-1715.
- Fix a bug in DirectoryGenerator: when using cocoon: changes were not detected Committed by JBQ. Thanks to Antonio Fiol. See Issue COCOON-1681.
- CForms: Incompatible change for <fb:custom>: the base context is now passed instead of the relative context. Please change corresponding classes and use getXpath() to create the relative context yourself. Committed by JBQ. Thanks to Bart Molenkamp. See Issue COCOON-1238.
- CForms: Java classes used in <fb:custom> can now implement Serviceable to get a ServiceManager Committed by JBQ. Thanks to Bart Molenkamp. See Issue COCOON-1238.
- CForms: fix <ft:validation-error> handling when used with FormsTemplateTransformer Committed by JBQ. Thanks to Jochen Kuhnle. See Issue COCOON-1558.
- Updated db-ojb to 1.0.4. Committed by AG.
- Allow AbstractTextSerializer to be used with Saxon Committed by JBQ. See Issue COCOON-1695.
- Disable Error Message when SAXON is used as the XSLT transformer Committed by JBQ. See Issue COCOON-1704.
- CForms: Enable MultiValueFields with checkbox style to be disabled Committed by JBQ. Thanks to Paul Focke. See Issue COCOON-1699.
- IncludeTransformer: source must not be cached if an error occurs Committed by JBQ. See Issue COCOON-1719.
- Fix a bug in CForms: Null locator in EffectPipe triggers NPE Committed by JBQ. Thanks to Tom Green. See Issue COCOON-1651.
- Added a "precompile" target for the cocoon startup script. It precompiles all XSPs found in the webapp. Committed by JBQ. Thanks to Simon Mieth. See Issue COCOON-1170.
- Portal block: Fix handling of caching-global-use-attributes bug in CachingCopletAdapter. Committed by CZ. Thanks to Guillaume Deflache. See Issue COCOON-1698.
- Updated log4j to 1.2.13, quartz to 1.5.1. Committed by AG.
- CForms: Added the sendForm(uri, viewData) function to Form.js, useful to display a form without the need to create a continuation. Useful along with the new processForm(viewData) function that updates the form values from the current request. Committed by JBQ.
- Fix a bug in CForms: Form.js overwriting the CFormsInstance attribute in viewData Committed by JBQ. See Issue COCOON-1720.
- Fix a bug in CForms library when extending a field Committed by JBQ. Thanks to Daniele Madama. See Issue COCOON-1736.
- CSVGenerator now looks for the sitemap parameter "process-headers" (with the s at the end) as told in the documentation. Accepts a new sitemap parameter "max-records" which allows to limit the number of records to read. Fixes a caching bug: the same result was returned notwithstanding the modification of separator or escape character. Committed by JBQ. Thanks to Philippe Laplanche.
- Add ids to CForms validation messages, so that they can be unit-tested Committed by JBQ. Thanks to Thomas Lutz. See Issue COCOON-1610.
- Permit the choice of attributes to augment in AugmentTransformer Committed by JBQ. Thanks to Aurélien DEHAY. See Issue COCOON-1627.
- Allow to use a <fd:value-count> validation rule with <fd:multivaluefield> Committed by JBQ. Thanks to Marco Rolappe. See Issue COCOON-1621.
- Allow to extend JXPathBinding outside the org.apache.cocoon.forms.binding package Committed by JBQ. Thanks to Philippe Gassmann. See Issue COCOON-1731.
- When saving a cform, remove xml elements if the value of the widget is null. Symptom is eg date field initialized to 1970-01-01 Committed by JBQ. Thanks to Philippe Gassmann. See Issue COCOON-1687.
- XMLDBTransformer can use username/password to access XMLDB. Note that DatabaseManager.getCollection() accepts null values for user and password, see http://xmldb-org.sourceforge.net/xapi/api/org/xmldb/api/DatabaseManager.html#getCollection(java.lang.String,%20java.lang.String,%20java.lang.String) Committed by JBQ. See Issue COCOON-1259.
- Portal Block: Provide user name to portlets. Committed by CZ.
- Portal Block: Make wsrp event adapter thread safe, fix error in disposing wsrp producer and update portals bridges to 1.0. Committed by CZ.
- Replace deprecated library excalibur-io 1.1 with commons-io 1.1. The file excalibur-io-1.1.jar is no longer part of the cocoon distribution. Note: All the packages under org.apache.avalon.excalibur.io.* can be found under org.apache.commons.io.*. Please update the imports in your code. Committed by AG.
- Updated asm to 2.1, asm-util to 2.1 and groovy to 1.0-jsr-04. Committed by AG.
- XSP block: Reintroduce locally scoped xspAttr in xsp.xsl to improve backwards compatibility for pre-2.1.9 logicsheets. (Suggestion by Vadim Gritsenko). Committed by AN.
- I18n: XMLResourceBundle checks now for both the new and the old namespace. Committed by JH. See Issue COCOON-1700.
- XMLDB: heavy refactoring. The source is now traversable (like file and jcr) and has two specific methods: createId to create a new document ID for a collection, and and getBinaryOutputStream to write binary data to the database. Committed by SW.
- XSP block: Instrument {#expr} interpolation to produce Cocoon stacktrace for parse errors. Committed by AN.
- Portal block: Fix possible encoding problems with JSR 168 portlets. Committed by CZ.
- Portal block: Support external form actions in HTML transformation. Committed by CZ.
- Database block: Renaming AttributeImpl xspAttr to _xspAttr was not applied to ESQL logicsheet. That caused compliation errors in all XSPs using it. Committed by AN. Thanks to Feliciano Borrego. See Issue COCOON-1691.
- Core: Error handling fixed in map:aggregate (ContentAggregator). Now, no content is prepended to the result of any error handling pipeline. Committed by MPF.
- Core: Caching pipelines (CachingProcessingPipeline, ExpiresCachingProcessingPipeline, ...) will now check if the content they are trying to generate is already being generated by another caching pipeline. If so, they will wait for that content to appear in the Cache and use that content instead of re-generating it and possibly causing high load on the server. Committed by MPF.
- Core: ExpiresCachingProcessingPipeline will not set up a pipeline anymore when a cached version of it is available. Any cached response will now serve quickly, no matter how complex the actual pipeline is. Committed by MPF.

### Contributors to this release

We thank the following people for their contributions to this release.

This is a list of all people who participated as committers:
Antonio Gallardo (AG), Alfred Nathaniel (AN), Andrew Savory (AS), Bruno Dumon (BRD), Carsten Ziegeler (CZ), David Crossley (DC), Jean-Baptiste Quenot (JBQ), Jörg Heinicke (JH), Jorg Heymans (JHS), Max Pfingsthorn (MPF), Ralph Goers (RG), Sylvain Wallez (SW).

This is a list of other contributors:
Andrew Stevens, Antonio Fiol, Aurélien DEHAY, Bart Molenkamp, Daniele Madama, Eric Meyer, Feliciano Borrego, Freek Segers, George Georgovassilis, Guillaume Deflache, Jochen Kuhnle, Jonas Ekstedt, Marco Rolappe, Mark Lundquist, Michal Durdina, Miles Elam, Niclas Hedhman, Paul Focke, Philippe Gassmann, Philippe Laplanche, Rob Berens, Rolf Metternich, Sébastien Grimault, Simone Gianni, Simon Mieth, Thomas Lutz, Tom Green, Warrell Harries.

## Version 2.1.8 (November 18 2005)

- POST method in cinclude:includexml is broken. Committed by AG. Thanks to Maurice Jumelet. See Issue COCOON-1365.
- Forms block: If a field is required or not can be changed during form processing. Applied patch by Philipp Schmidt (philipp.schmidt@gmail.com). Committed by CZ.
- Forms block:
  - Automatic submit-on-change. Fields which have value-changed listeners are now by default submitted automatically, meaning adding <fi:styling submit-on-change="true"/> is no more necessary. For those cases where a field with event listeners should not be automatically submitted, set submit-on-change to false.
  - Introduce a naming convention for stylesheet-generated IDs: they should all start with the widget's ID followed by a ":" and a name. The use of ":", which is forbidden in widget names, avoids conflicts with other widgets in the form. All stylesheets have been updated to this convention.
    This change can break applications that use document.getElementById() to access some of the generated elements (notably "foo-input" that's used for the <input> of the "foo" widget), but this notation is now a public contract that will be taken care of in the future.
  - Along with field, aggregatefield and booleanfield, you can now add value-changed listeners on output and upload widgets.
  - Widget validators can now return not only a boolean value, but also a String or an XMLizable (such as I18nMessage) which are used to set a validation error on the widget.
  - The <fi:styling submit-on-change="output"/> is no more available, as it was intrinsically broken as a field whose value is not submitted is reset. Use the "output" widget state to achieve the same effect.
  Committed by SW.
- Forms block: Fix HTML rendering of booleanfields in output state. Committed by SW. Thanks to Jason Johnston. See Issue 36381.
- Forms block: Fix ArrayIndexOutOfBoundException in the library subsystem. Committed by SW. Thanks to Philipp Schmidt. See Issue 37005.
- Portal Block: Only remove layout if a layout remove event is fired (and not with each layout event). Committed by CZ.
- Fix bug with session:getxml when path is a text-element and IncludeXMLConsumer when including text nodes. Committed by CZ. Thanks to Armaz Mellati. See Issue 36471.
- Update Pluto to final release 1.0.1. Committed by CZ.
- Portal block: Deprecate AbstractUserProfileManager and AuthenticationProfileManager. Committed by CZ.
- Portal block: Add title to basket item in the portal sample. Committed by CZ. Thanks to Philippe Gassmann. See Issue 33152.
- Portal block: Fix history aspect when coplets are used. Committed by CZ. Thanks to Philippe Gassmann. See Issue 37115, 29405.
- Do not flush and close output stream, servlet container will take care of it. Committed by VG. See Issue 35905.
- Portal Block: Include coplet instance id in window renderer; ignore javascript: urls during url rewriting. Committed by CZ.
- Portal Block: Allow Full screen mode to show navigation. Committed by RG. See Issue 32784.
- Portal Block: PageLabelLinkService generated the wrong url when using 3 layer tabs with showallnav. Committed by RG. Thanks to Roy Huang. See Issue 34802.
- Databases block: Support stored procedures returning result set in SQLTransformer. Committed by VG. See Issue 30894.
- Bricks-cms example application created (distributed separately), see http://wiki.apache.org/cocoon/BricksCms Committed by BD.
- Improved blocks build exclusion/inclusion. See blocks.properties for more info. Committed by LG.
- I18n: Refactored XMLResourceBundle to use transient store instead of private cache. Added reload check interval parameter. Support dynamic additions and removals of resource bundles, without need to restart Cocoon. Committed by VG.
- JavaDocs and documentation are no longer copied to the webapp. Committed by CZ.
- build.sh: use --noconfig option to avoid problems with local ant settings. Does not apply to build.bat, windows ant scripts do not have this option. Committed by BD. Thanks to Sandor Spruit.
- cocoon.sh and cocoon.bat (done by CZ): "servlet" is now the default action. Committed by BD.
- Update Avalon framework to 4.3, Avalon LogKit to 2.1, Excalibur Instrument to 2.1, Excalibur Logger to 2.1, Excalibur Pool to 2.1, Excalibur SourceResolve to 2.1, Excalibur Store to 2.1, Excalibur XMLUtils to 2.1 and Excalibur Database to 2.1. Committed by VG.
- Fix OutofBoundsException when form element does not have an action attribute Committed by JHS. Thanks to Max Pfingsthorn. See Issue 30796.
- Portal Block: PageLabelLinkService generated the wrong url when using 3 layer tabs with showallnav. Committed by RG. Thanks to Roy Huang. See Issue 34802.
- CForms block: new Tree widget, heavily inspired by Swing's JTree. Features Ajax, selection listeners, and a lightweight data model with two implementations: a generic one, and a source-based one to build file explorers. Committed by SW.
- CForms: The repeater widget now supports min and max-size attributes. Committed by JHS. Thanks to Thomas Lutz. See Issue 36781.
- Moved support for zip: sources from scratchpad into the core. Committed by VG.
- CForms: Small change to the calendar styling which now shows dropdowns to choose the time when the date format includes time also. Committed by SW. Thanks to Jean-Christophe Kermagoret.
- Updated quartz to 1.5.0. Committed by AG.
- Midi Block: Marked as stable. Committed by JH. See Issue 28056.
- Portal Block: Provide sample for caching uri coplet adapter (Gallery coplet). Committed by CZ. Thanks to Michal Durdina. See Issue 32994.
- Portal Block: Add missing interface CopletInstanceEvent to FullScreenCopletEvent. Committed by CZ.
- CForms: Improved error message for wrong content type on upload. Committed by JH. Thanks to Mark Lundquist. See Issue 35475.
- XSP: EclipseJavaCompiler chokes on warnings. Changed to errors. Committed by JH. Thanks to Jochen Kuhnle. See Issue 35162.
- CForms: Fixed JavaScript error in forms-lib.js when using keyword undefined and Mac IE 5.0. Committed by JH. Thanks to Dan Durkin. See Issue 33318.
- Caching support for XInclude Transformer Committed by AG. Thanks to Jason Johnston. See Issue 31600.
- CForms block: new form libraries features. You can now define form definition and binding library files and import them for reuse and/or extension in regular definition and binding files.
  This is the result of the Max Pfingsthorn's Google Summer of Code (GSoC) project. Committed by SW. Thanks to Max Pfingsthorn.
- When the upload size exceeds the configured limit, a RejectedPart is associated to the request rather than throwing a exception at the servlet level. This allows the application to handle oversized uploads and provide meaningful messages. The upload widget in CForms has been updated to use this new feature.
  Uploads are now allowed in the provided web.xml, but with a low 100 kbytes limit to allow samples to be functional without endangering security. Committed by SW.
- Updated log4j to 1.2.12, asm to 2.0, asm-util to 2.0, groovy to 1.0-jsr-03. Committed by AG.
- Deli block updated to use the latest revision of DELI. This uses a more robust method of loading configuration files that should ensure DELI works on different apps servers or deployed as a WAR. Committed by JHS. Thanks to Mark H. Butler. See Issue 35538.
- MultipartParser now removes partially uploaded files Committed by JHS. Thanks to Gunnar Brand. See Issue 29712.
- Added ImageMap widget. Committed by JHS. Thanks to Luca Morandini. See Issue 35462.
- Added percentage-dimensions and jpeg quality handling to the ImageReader. Committed by JHS. Thanks to Eric Caron. See Issue 36326.
- JXTG: jx:formatDate and jx:formatNumber allows for specifying locale string instead of a Locale object Committed by LG. Thanks to Henric Mueller. See Issue 35845.
- Added a new "validation" block abstracting the concept of XML validation and providing access to schemas and validation tools from within Cocoon pipelines and/or Cocoon components. As of right now, the "validation" block supports the RELAX-NG grammar using JING and the XML-Schema grammar using Xerces. Committed by PF.
- Add a "cocoon.exit()" method to flowscript, which allows to exit the current flowscript invocation without creating a continuation. Committed by SW.
- XMLdb block: Don't rely on the sitemap components to stream the contents of a xmldb source. Committed by SW. Thanks to Jean-Baptiste Quenot. See Issue 35575.
- CForms block: Escape apostrophes in validation messages formatted as JavaScript alerts. Committed by SW. Thanks to Jean-Baptiste Quenot. See Issue 35574.
- getTime(...) of CocoonLogFormatter implemented incorrectly Committed by AG. Thanks to Johan Stuyts. See Issue 36373.
- SourceWritingTransformer supports all allowed nodes when using source:write to create new document. Committed by VG.
- LocaleMatcher can save resulting locale into request, session or cookie (if configured). Committed by VG.
- Portal block: Add WSRP consumer support (through WSRP4J). Committed by CZ.
- Updated hsqldb to 1.8.0.2. Committed by AG.
- Portal block: Fix bugs in CachingURICopletAdapter - store cache information in temporary attributes. This bug fix introduces incompatible changes: the cache validity attribute is not used anymore, use the cache temporary attribute instead and update your code to use temporary attributes instead of (persistent) attributes. Committed by CZ.
- Updated jakarta-regexp to 1.4. Committed by AG.
- Portal block: Allow portlet adapter to stream html content through the pipeline using the NekoHTML parser. Committed by CZ.
- Portal block: Use OJB and the HSQLDB for authentication of the portal sample. Committed by CZ. Thanks to Jens Maukisch. See Issue 36240.
- XSP block: Move AttributeImpl in xsp.xsl to class scope. That allows top-level xsp:logic to define markup generating methods. Variable xspAttr renamed to _xspAttr to be avoid breaking existing XSPs which already use that trick. Committed by AN.
- XSP block: Add xsp:expr and various other contexts where text must be passed through XSLTExtension:escape in order to preserve non-ASCII characters in Java string constants independently of the XSP source file and compiler expected encodings. Committed by AN.
- Faces block: Updated MyFaces libraries to the SVN r233484, get rid of patched version. Committed by VG.
- Portal block: Add support for portal bridges and add CoWarp for authentication. Committed by CZ.
- Portal block: Add global caching to caching uri adapter. Committed by CZ.
- Updated xalan to 2.7.0. Committed by AG.
- Add geronimo-specs-javamail-1.3.1-rc5 and geronimo-spec-activation-1.0.2-rc4.jar. This jars replace mock classes for mail block. Committed by AG.
- JXTemplate: ensure JXPath expressions can use namespace prefix mappings declared in the template document. Committed by SW.
- Updated Axis to 1.2.1 and wsdl4j to 1.5.1. Committed by CZ.
- Updated xercesImpl to 2.7.1, xml-apis to 1.3.02, log4j to 1.2.11, nekohtml to 0.9.5, geromino-spec-jms and geronimo-spec-jta to M3. Committed by AG.
- Webapp context is now configurable when starting with the included Jetty webserver. Setting JAVA_OPTIONS=-Dcontext=blah/, for example will make the Cocoon webapp available at /blah/ instead of / which stays the default. Committed by BD.
- Update Rhino+continuations so that JavaScriptException has the same API as the official 1.6 version. This is allows to access location and nested exceptions for Cocoon stacktraces. Committed by SW.
- Complete refactoring of error handling in TraxTransformer and XSLTProcessor so that actual error messages are displayed rather than the useless RuntimeException usually reported by Xalan. These messages include both stylesheet compilation errors and warnings, and outputs of <xsl:message terminate="yes">.
  Using this feature requires to change the XSTLProcessor class in cocoon.xconf to org.apache.cocoon.components.xslt.TraxProcessor. Committed by SW.
- XSP block: Extend {#expr} interpolation parser to understand {}, "}", '}' as not being the closing brace. The previously implemented mechanism #} to escape braces within the statement is no longer supported. Committed by AN.
- Added Cocoon stacktraces. This is based on location classes in the new org.apache.cocoon.util.location package and a refactoring of the exception management to attach locations to exceptions. Committed by SW.
- Updated hsqldb to 1.8.0. Committed by AG.
- XSP block: Implement {#expr} interpolation also for logicsheets. Committed by AN.
- New org.apache.cocoon.util.location package, providing utilities to track locations in XML documents and the objects built from these documents. Committed by SW.
- Mail block: Allow any of the Cocoon-provided protocols to be used for attachments in SendMailTransformer. This means that "cocoon:" URLs are no more rewritten as external http requests. Committed by SW. Thanks to Jean-Baptiste Quenot. See Issue 35618.
- Added the empty: source than either generates empty documents or documents containing just a root node. Committed by CZ. Thanks to Mark Lundquist. See Issue 35521.
- Fix NPE in RequestGenerator when request.getHeaderNames() returns null. Committed by CZ. Thanks to Doug Bennett. See Issue 35457.
- Fix wrong caching behaviour in DirectoryGenerator. Committed by CZ. See Issue 29506.
- Portal block: Add easier to use event handling mechanism by introducing the new Receiver interface. Deprecated Publisher, Subscriber, Filter and Register. Committed by CZ.
- Moved following components into core: TraversableGenerator, XPathTraversableGenerator (both from repository block), CSVGenerator (from scratchpad block), FragmentExtractorTransformer and FragmentExtractorGenerator (both from batik block). Committed by JH.
- XSLTAL block added, presentation templating transformer based on the Zope TAL syntax. Committed by BD. Thanks to Christian Stocker.
- TraxTransformer: new default-src configuration parameter, used if src is not specified. Committed by BD.
- Added CookieModule as a more convinient way to access cookie values as {cookie:query} in alternative to {request:cookies[name='query']/value}. Committed by AN. Thanks to Jon Evans. See Issue 28045.
- Added parameter "show-cocoon-version" to web.xml for configuring whether X-Cocoon-Version response header should be sent. Default is true. In a security paranoid environment you may want to set it to false in order to hide from the outside world which Cocoon version you are running. Committed by AN. Thanks to Andrew Stevens. See Issue 33388.
- XSP block: Added short-cut notation {#expr} for interpolation of XSP expressions in attribute values and text nodes. Removed wrapping of all text nodes from XSP source into <xsp:text> elements before passing them to logicsheets. (This feature was not used by the standard logicsheets but check your custom logicsheets whether they depend on it.) Committed by AN. Thanks to Jochen Kuhnle. See Issue 35228.
- Portal block: Convert PortletPortalManager into portal manager aspect. Committed by CZ.
- CForms block: Make all WidgetValidatorBuilders ThreadSafe. Reset validation errors before validating a field. Committed by CZ.
- Portal block: Add portal manager aspects for more flexible portal processing. Committed by CZ.
- CForms block: Add isValid() method to a Widget. Committed by CZ.
- POI Block: Added HSSFGenerator. Committed by VG. Thanks to Patrick Herber. See Issue 29817.
- Added getSitemapURIPrefix method to the Request interface. Committed by VG. Thanks to Nico Verwer. See Issue 35435.
- Updated commons-digester to 1.7, commons-lang to 2.1, xercesImpl to 2.7.0. Committed by AG.
- Mail block: The SendMailTransformer can now configure the smtp port. Committed by UH. Thanks to Johan Stuyts.
- Fixed reloading of the i18n catalogues (regression introduced in 2.1.7). Committed by VG. See Issue 33097.
- JMS block: Connection failures can now be recovered from. The default JMSConnectionManager implementation detects when JMS connections are severed and schedules reconnection attempts with the cron scheduler in order to re-establish the connection. As soon as reconnection was successful it notifies its listeners so that they may recover as well and refresh their JMS sessions. The provided abstract MessageListener and JMS publisher that users are recommended to use as base classes for their concrete JMS needs have been updated to use this mechanism. Committed by UH. Thanks to Johan Stuyts.
- Forms block: sqldatabase sample added, demonstrates "zero java code" editing of SQL data using the SQLTransformer. Committed by BD. Thanks to Askild Aaberg Olsen. See Issue 35364.
- CForms block: Ensure FormHandler is always called when a field's value change. Committed by SW. Thanks to Jeffrey Kirby. See Issue 35311.
- CForms block: The default HTML stylesheets have been moved into the jar packages. If they should be extended in custom stylesheets, import or include them using the resource protocol: <xsl:include href="resource://org/apache/cocoon/forms/resources/forms-advanced-field-styling.xsl"/>. Committed by RP.
- CForms block: The form and container widgets can take up ValidationErrors. As those widgets don't have a natural place where the error message should appear, the <ft:validation-error id="[widget-id]"/> has to be used. Currently this tag is only supported by the jxtemplate macro library. Committed by RP.
- Fix some multithreading issues when a background thread or cron job uses the "cocoon:" protocol, that caused the background request pipeline to be recycled by the parent thread during its execution.
  To use multiple threads to process a request (e.g. parallel include), background processing must use the org.apache.cocoon.environment.CocoonRunnable wrapper that ensures that the environment context of the main request is properly inherited by tasks running in the background. Committed by SW.
- Mail block: Make internal protocol handling for attachments in SendMailTransformer configurable and properly release all sources. Committed by CZ.
- Move expires pipeline implementation out of the scratchpad. Committed by CZ.
- Add setter action to set values in the object model, request or session. Committed by CZ.
- Updated ant to 1.6.5. Committed by AG.
- CForms block: add a new <fd:true-param-value> configuration to booleanfield definitions, to allow specifying a value different from "true" for the checkbox. Committed by SW.
- Set the content-length of a response when the pipeline buffers the content (which is the default). Committed by CZ.
- XSP Block: Double check and attempt again to load program object from cache. This avoids that simultaneous requests recompile the same XSP over and over again. Committed by AN. See Issue 32935.
- When receiving a multipart request, also add parameters given on the URL to the request parameters. Committed by SW.
- EHDefaultStore.store throws more descriptive exception if key or value are not Serializable. Committed by BD.
- Cforms block: Caching selection list for best performance inside repeaters. Deprecate @dynamic in <fd:selection-list> in favor of @cache. Posible @cache values are:
  - static => equivalent to old @dynamic="false"
  - none => equivalent to old @dynamic="true"
  - request => is new, similar to cache="none", but caching the selection list per request. Useful to improve performance inside repeaters.
  Committed by AG.
- Updated ant to 1.6.4, batik to 1.6, db-ojb to 1.0.3. Committed by AG.
- CForms block: add automatic AJAX features. When <ft:form-template> has an ajax="true" attribute, partial page updates are performed rather than full page reloads. Committed by SW.
- SearchGenerator return has-previous false when meet the no. 2 page. Committed by AG. Thanks to Thomas Scheithauer. See Issue 32728.
- The new "annotations" namespace (http://apache.org/cocoon/sitemap/annotations/1.0) can be used to add information to sitemaps. The sitemap processor ignores this information, which can be used for documentation purposes. Committed by BD. Thanks to Johan Stuyts. See Issue 25352.
- XSP Block: Race condition could lead to duplicate application of same logicsheet with spurious compilation errors or undefined runtime behaviour. Committed by AN. See Issue 32934.
- CForms block: added CAPTCHA validator. Committed by UC.
- IncludeTransformer moved from the scratchpad into the core. It has following features:
  - Supports caching, with configurable caching key.
  - Supports parallel include processing in multiple threads.
  - Included source URIs resolved relative to the document URI.
  - Supports recursive include processing (includes in included files).
  - Supports fallback element processing.
  - Supports inclusion of files as text.
  Committed by VG.
- Enabled the synchronization on Cocoon's session wrapper by assuring that only one wrapper exists per servlet session. Committed by JH.
- Databases: SQLTransformer: Support queries nested into insert/delete/update queries. Return number of rows updated by insert/delete/update queries as returncode element. Committed by VG. See Issue 25098.
- Databases: SQLTransformer: Each query can now have connection with own database connection configuration parameters. Queries with same configuration will share single database connection. You can force queries to create private connection using own-connection configuration parameter. Committed by VG.
- Databases: SQLTransformer: Each query can now have own output namespace and prefix. If desired output namespace already in use, existing prefix will be used. Committed by VG.
- Databases: SQLTransformer: Support multiple nested queries within one query. Committed by VG. Thanks to Philipp Matthias Hahn. See Issue 27440.
- Databases: Changes in SQLTransformer:
  - By default, output resulting XML using 'sql' namespace prefix.
  - Accept non-namespaced attributes in the input XML, and prefer them over attributes in SQLTransformer namespace.
  - Support configured namespace, instead of hardcoded value.
  Committed by VG.
- Databases: SQLTransformer: Output attributes on rowset element with empty namespace. Committed by VG. Thanks to Martin Holz. See Issue 31634.
- Databases: SQLTransformer: Avoid declaring duplicate namespaces. Committed by VG. See Issue 25203.
- Databases: Removed xml-encoding parameter from the SQLTransformer configuration. The latest SQLTransformer has no byte to character conversions. Committed by VG.
- Updated ant to 1.6.3. Committed by AG.
- OJB Block: Added support for OJB 1.1. Committed by VG.
- AbstractSAXTransformer gets transformer-factory configuration parameter. Committed by VG.
- XMLFileModule gets cache-expressions configuration parameter. Committed by VG.
- form(NOT_FOUND is not a function) error caused by wrong documentation. Committed by AG. Thanks to Juan Jose Pablos. See Issue 33100.
- Fix ContextPathModule name in javadocs. Committed by AG. Thanks to Jorg Heymans. See Issue 34591.
- New JCR block that adds a "jcr:" protocol to access and modify repository contents. Committed by SW.
- New HTMLTransformer sample in html block. Committed by BD.
- Faces Block: ValidateLongRangeTag, ValidateDoubleRangeTag should use long and double to set minimum and maximum, not int. Committed by VG. Thanks to Markus Bussemer. See Issue 34400.
- Fixed caching of a pipeline aggregating non cacheable pipelines via cocoon: protocol. Committed by VG.
- Stacktrace of the ResourceNotFound exception is logged only in DEBUG level, otherwise only exception message is logged. Committed by VG.
- Fix environment handling to allow the root sitemap to be at an abitrary location and not only in the main webapp context directory. Committed by SW.
- Updated excalibur-pool to 2.0.0, excalibur-datasource to 1.2.0. Fixes problem of database connections pools not coming up after database outage. Committed by VG.
- Updated groovy to 1.0-jsr-01, jdtcore to 3.0.2. Committed by AG.
- New set of automated tests based on HtmlUnit Committed by BD. Thanks to Alfred Nathaniel. See Issue 34294.
- Add support for namespaced XML elements to the JXPath based input modules (includes JXPathMetaModule, XMLFileModule, and others). Committed by VG.
- XInclude transformer does not handle fallback correctly. Committed by AG. Thanks to Joachim Breitsprecher. See Issue 34325.
- Deprecate EventRecorder (in o.a.c.t.helpers package). It will be removed starting with Cocoon 2.2. Committed by VG.
- XSP Block: Note in the documentation that XSP namespace must be declared on the xsp:page element. Committed by VG. See Issue 26107.
- Fix NPE in DOMStreamer.stream(). Committed by CZ. Thanks to John Yonosh. See Issue 33963.
- Portal block: Make portal manager available through portal component manager. Committed by CZ.

### Contributors to this release

We thank the following people for their contributions to this release.

This is a list of all people who participated as committers:
Antonio Gallardo (AG), Alfred Nathaniel (AN), Bertrand Delacrétaz (BD), Carsten Ziegeler (CZ), Jörg Heinicke (JH), Jorg Heymans (JHS), Leszek Gawron (LG), Pierpaolo Fumagalli (PF), Ralph Goers (RG), Reinhard Pötz (RP), Sylvain Wallez (SW), Ugo Cei (UC), Unico Hommes (UH), Vadim Gritsenko (VG).

This is a list of other contributors:
Alfred Nathaniel, Andrew Stevens, Armaz Mellati, Askild Aaberg Olsen, Christian Stocker, Dan Durkin, Doug Bennett, Eric Caron, Gunnar Brand, Henric Mueller, Jason Johnston, Jean-Baptiste Quenot, Jean-Christophe Kermagoret, Jeffrey Kirby, Jens Maukisch, Joachim Breitsprecher, Jochen Kuhnle, Johan Stuyts, John Yonosh, Jon Evans, Jorg Heymans, Juan Jose Pablos, Luca Morandini, Mark H. Butler, Mark Lundquist, Markus Bussemer, Martin Holz, Maurice Jumelet, Max Pfingsthorn, Michal Durdina, Nico Verwer, Patrick Herber, Philippe Gassmann, Philipp Matthias Hahn, Philipp Schmidt, Roy Huang, Sandor Spruit, Thomas Lutz, Thomas Scheithauer.

## Version 2.1.7 (March 23 2005)

- Updated hsqldb to 1.7.3.3. Committed by AG.
- Fix caching of i18n bundles with expires validities. Committed by VG.
- Implemented error handling for the internal requests. Error handling for internal requests can be configured using the when attribute on the handle-errors element. Supported values for when attribute are:
  - external: This error handler should be used only on external requests (default);
  - internal: This error handler should be used only on internal requests;
  - always: This error handler can be used for all requests.
  Currently, if internal error handling is enabled, only the inner most error handler will be used for errors which happened during internal pipeline processing. See samples for usage details. Committed by VG.
- Sitemap now properly throws ResourceNotFound exception for not matched requests even if last pipeline marked as an internal pipeline. Committed by VG.
- Sitemap handle-errors now reports an error if generator is missing, or if type attribute (deprecated) specified and generator is present. Committed by VG.
- Updated quartz to 1.4.5, jcs to 1.2.5-dev-20050313. Committed by AG.
- Refactored the Deprecation class: the "forbidden-deprecation-level" parameter in web.xml allows to raise deprecation exceptions depending on the log level. For example, DEBUG allows no deprecations (strict mode), and FATAL_ERROR allows all (tolerant mode). Default is ERROR, allowing messages up to WARN. Committed by SW.
- A flowscript's file encoding can now be specified by a comment on the script's very first line, in the form "// encoding = xxxx". Otherwise, the default platform encoding is used. Committed by SW.
- Added QueryBean as a standalone block, copied over from 2.2.0. Removed the original from the Lucene Block. Stores Favourites using OJB in HSQLDB. Committed by JQ.
- CForms: separate FormattingDateConvertor that uses java.text.SimpleDateFormat and Icu4jDateFormatter that uses ICU4J. There was previously an automatic switch to ICU4J if the library was present in the classpath, which sometimes caused some strange results as it behaves a bit differently. Committed by SW.
- Tour block: fix "shapes" sample using if/else in flowscript instead of switch. Committed by BD.
- Build: Added exclude.all.blocks and include.all.blocks properties to quickly toggle all blocks on or off. Committed by VG.
- Updated antlr to 2.7.5, groovy to 1.0-beta-10, jetty to 4.2.23 Committed by AG.
- OJB Block: Marked as stable. Committed by VG.
- Make Cocoon compilable and buildable using JDK 5.0. Committed by all.
- Remove scratchpad block - the scratchpad area is only available in trunk. Committed by CZ.
- Deprecated Pizza compiler support in XSP. To be removed in Cocoon 2.2. Committed by AG.
- CForms: JavaSelectionList implementations can now be Contextualizable and can build SelectionLists with XMLizable labels. Committed by VG.
- Change the mime-type setting of a reader. See also bug #25121. Committed by CZ. See Issue 10277.
- Fix thread safety problem in JXTemplateGenerator.setup() concerning template script reparsing. Committed by LG. Thanks to Niklas Therning. See Issue 33836.
- Polish i18n for CForms. Committed by LG.
- OJB Block: Renamed JdoPMF component to JDO, OdmgImplementation to ODMG, and removed PBFactory component - please use OJB PersistenceFactory API directly. Committed by VG.
- Runnable Manager: Fix bug preventing scheduling of two different jobs at the same time. Committed by VG.
- Many changes in CForms block.
  Widgets:
  - add Widget.getDefinition() to access the definition that was used to create the widget.
  - make widget definitions immutable once setup. This is necessary with the previous change as a definition is shared by all of the widgets it creates and modifying it could lead to weird behaviors.
  - new "output" widget state, where values are displayed but not read on the request. The difference with "disabled" is that "output" widgets are displayed as plain text and not as disabled inputs.
  - add on-create event listeners that are called when a widget is created.
  - deprecate "struct" in favor of "group" in definition, template and binding. More work is needed on the relation between ft:group and fi:group provided by forms-page-styling.xsl
  Field:
  - a field's selection list can be removed by setting it to null. This previously re-installed the widget definition's selection list.
  - a field can have an optional initial value defined using <initial-value locale="...">...</initial-value>. The "locale" attribute is used to convert the value text into an object as defined by the datatype's convertor. This feature is also available on AggregateField and BooleanField (for which locale is useless).
  Form.js :
  - added "fun" and "ttl" parameters to Form.showForm(), which now has the exact same parameters as cocoon.sendPageAndWait().
  - the argument of new Form(...) can now be either a String or a DOM Element. Accepting an Element allows the use of any kind of dynamic process to build the form definition.
  - Form.showForm() now uses a single continuation, which saves memory and speeds up processing by shortening the continuation chain when the user has a long interaction with the form.
  - "ttl" parameter added to Form.showForm(), which has the same meaning as for cocoon.sendPageAndWait().
  - new "cleanupHook" property on Form: this is a function that is called each time the form is displayed. This is similar to the "fun" parameter of cocoon.sendPageAndWait().
  - new "restoreHook" property on Form: this is a function that is called each time the continuation is called back, to restore if needed the execution environment before processing the request.
  Actions:
  - the "action-command" attribute is deprecated and replaced by "command" which is now optional, except on repeater-action and row-action where it indicates what to do.
  - new "insert-rows" repeater-action that insert new rows before the selected rows in a repeater
  Styling: styling "output" is deprecated and will be removed in 2.1.8. The "output" widget state should be used instead. Committed by SW.
- Added best-fit-while-keeping-aspect-ratio option to the ImageReader Committed by TC. See Issue 30417.
- Resource Reader: Make sure response is cacheable when expires parameter is not set. Committed by VG. Thanks to Adam Ratclife. See Issue 33319.
- Mail Block: Add support for replyTo. Committed by VG. Thanks to Andrew Thornton. See Issue 28973.
- CocoonBean can now process a URL to a SAX ContentHandler (skipping the serialiser), via cocoon.process(uri, handler). Committed by UV.
- OJB Block: Integrated OJB logging with Cocoon logging. Committed by VG.
- Add a deprecation logger that gives hint about used deprecated stuff. Committed by CZ.
- Updated commons-transaction to 1.0.1, castor to 0.9.6, groovy to beta-9, quartz to 1.4.4. Committed by AG.
- Remove restrictions on the flowscript object model (FOM): the objects available through the cocoon object (request, session, response, etc) now provide the full API of the corresponding Java classes. Committed by SW.
- CForms: forms generator and template transformer now use the same object model as the JXTG: access to objects have to use the "cocoon" object, like "cocoon/continuation/id". Committed by CZ.
- hsqldb: make name and path of database parameterizable - this way the database can be located outside of Cocoon Committed by RP.
- Apply patch for a better exception handling in the Meta-InputModule when an input module is not found. Committed by CZ. Thanks to Michal Durdina. See Issue 32987.
- Fixed caching of i18n bundles when using multiple locations. Committed by JH. See Issue 33097.
- Fix handling of environment context when returning from a pass-through sitemap mount. Committed by SW. Thanks to Jean-Baptiste Quenot. See Issue 33178.
- Portal Block: Add portal tools framework contribution. Committed by CZ. Thanks to Jens Maukisch. See Issue 33287.
- Build system: External blocks can be built together with Cocoon. Committed by CZ.
- Refreshing a page with a JSR-168 portlet in it could cause unexpected results. JSR-168 urls can now be configured to contain the data required to generated the required events. Committed by RG. See Issue 33091.
- Add <compiler-compliance-level> parameter for java XSP compiler. This new parameter allow to specify the java code source version used to compile the XSP code. It is useful to run cocoon using java 1.5 while using source code for 1.4. Posible values: 1.3 = Java version 1.3 1.4 = Java version 1.4 1.5 = Java version 1.5 auto = The version of the JVM where cocoon is running. (Default value). NOTE: The parameter is optional to keep backward compatibility. The parameter currently works only with Sun Javac compiler. The eclipse compiler version 3.0.1 currently does not support java 1.5. The pizza compiler does not support java 1.5. Committed by AG.
- PageLabel url's were not properly encoded. Committed by RG. Thanks to Roy Huang. See Issue 32838.
- Updated quartz to 1.4.3, nekodtd to 0.1.11, nekohtml to 0.9.4 castor to 0.9.5.4, commons-digester to 1.6, groovy to 1.0-beta-8, asm to 1.5.2 and asm-util to 1.5.2. Committed by AG.
- Added commons-transaction 1.0 and commons-codec 1.3. Both are needed by slide 2.1. Committed by AG.
- Updated jakarta-slide-webdavlib to 2.1, jdom to 1.0, slide-kernel to 2.1, slide-stores to 2.1, slide-webdavservlet to 2.1. Committed by AG.
- Portal now allows Cocoon to be deployed as a war (only supports local JSR-168 portlets) and allows external portlets to be in a war. Committed by RG.
- CForms: the parser used to read form files now uses the EntityResolver defined in cocoon.xconf. Committed by SW. See Issue 31668.
- Tiny typo in AbstractTextSerializer Committed by AG. Thanks to Micah Dubinko. See Issue 32620.
- Modified PortletURLProviderImpl.toString() to create a copy of itself and register that with the event. Committed by RG. See Issue 32645.
- ContinuationsManager default implementation can now store continuations in user session. Continuations are not available outside user session and invalidated automatically when session gets invalidated by servlet container. This is a good security option for web applications. Committed by LG.
- Update Deli to x031104 (include over 300 vendor, operator and third party profiles) Committed by AG. Thanks to Mark H. Butler. See Issue 32083.
- Updated hsqldb to 1.7.3, lucene to 1.4.3, ehcache to 1.1, log4j to 1.2.9. Committed by AG.
- Paranoid: make the classloader implementation configurable Committed by TC.
- Typo on the date-selector doc. Committed by AG. Thanks to Juan Jose Pablos. See Issue 32408.
- xml2html.xslt does not work on IE. Committed by AG. Thanks to Micah Dubinko. See Issue 30043.
- Portal: attributes "javax.portlet.request" and "javax.portlet.response" were not set for JSR-168 portlets running in the Cocoon webapp. Committed by RG. See Issue 32417.
- CForms: added HTMLCleaning convertor (taken from Outerthought's Daisy) that cleans up the result by HTMLArea fields. The cleanup process, that is based upon Nekohtml can be configured. One confiugration is available at resource://org/apache/cocoon/forms/datatype/convertor/HtmlCleanerConfiguration.xml and guarantees valid XHTML
  Example: <fd:datatype base="string"> <fd:convertor type="htmlcleaner" config="resource://org/apache/cocoon/forms/datatype/convertor/HtmlCleanerConfiguration.xml"/> </fd:datatype> Committed by RP.
- CForms: 'htmlarea' fields can be directly configured in cForms templates
  Example configuration (within the <conf> part the variable conf contains the configuration object of HTMLArea <fi:styling type="htmlarea" rows="8" style="width:100%"> <conf> conf.statusBar = false; conf.sizeIncludesToolbar = false; conf.fullPage = false; conf.toolbar = [ [ "bold", "italic", "separator", "subscript", "superscript", "separator", "insertorderedlist", "insertunorderedlist", "outdent", "indent", "separator", "inserthorizontalrule", "separator", "copy", "cut", "paste", "space", "undo", "redo", "separator", "showhelp"] ]; </conf> </fi:styling> Committed by RP.
- CForms: fields styled as 'htmlarea' can be used in tables (workaround for strange IE behaviour) Committed by RP.
- CForms: add a new "link" styling for action widgets, that renders the action as an hypertext link. Committed by SW.
- DateInputModule now accepts date format string when specified in a sitemap. Committed by RG. Thanks to Nico Verwer. See Issue 28360.
- Portal: Added support for storing JSR-168 Portlet preferences. Committed by RG.
- Batik block: Fixed handling for empty extract URIs when matching on null namespace URIs. Committed by JH. See Issue 32342.
- Allow attribute values to be matches as well for EncodeURLTransformer. Committed by GP.
- Multipart requests: use container encoding for decoding requests, in order to have consistent handling between normal requests and multipart requests. Committed by BRD.
- I18n (ParamSaxBuffer): handle case where substitution params like {0} are split over multiple character events. Committed by BRD. Thanks to Neil Bacon. See Issue 31887.
- Fix: Continuation can only be invoked for the interpreter it was originally created for. Committed by LG.

### Contributors to this release

We thank the following people for their contributions to this release.

This is a list of all people who participated as committers:
Antonio Gallardo (AG), (all), Bertrand Delacrétaz (BD), Bruno Dumon (BRD), Carsten Ziegeler (CZ), Giacomo Pati (GP), Jörg Heinicke (JH), Jeremy Quinn (JQ), Leszek Gawron (LG), Ralph Goers (RG), Reinhard Pötz (RP), Sylvain Wallez (SW), Torsten Curdt (TC), Upayavira (UV), Vadim Gritsenko (VG).

This is a list of other contributors:
Adam Ratclife, Andrew Thornton, Jean-Baptiste Quenot, Jens Maukisch, Juan Jose Pablos, Mark H. Butler, Micah Dubinko, Michal Durdina, Neil Bacon, Nico Verwer, Niklas Therning, Roy Huang.

## Version 2.1.6 (November 19 2004)

- Lucene: SearchGenerator incorrectly counts previous-index. Reported by: Tomasz Nowak (tnowak-p@netventure.pl) Committed by AG. Thanks to Jorg Heymans. See Issue 23118.
- Updated iText to 1.1. Committed by AG.
- Fix: buildList() in AbstractDatabaseAction generates incorrect parameter list. Committed by AG. Thanks to wchao@yahoo.com. See Issue 32011.
- Fix: Webmail sample broken. Committed by AG. Thanks to Leo Leonid. See Issue 32124.
- Fix: Context directory not required to be writable by the CLI. Committed by AG. Thanks to Rick Tessner. See Issue 32214.
- Portal: If a coplet has an error, the error-uri has been called twice. This is fixed now. Committed by CZ. See Issue 32199.
- Flowscript: Deprecated support for passing sitemap parameters into flowscript function as positional arguments. Use cocoon.parameters instead. Support will be removed completely in Cocoon 2.2. Committed by VG.
- Portal: Request content length and content type are required in portlet ActionRequest for custom upload handling. Committed by RG. Thanks to Michal Durdina. See Issue 32159.
- Portal: Added support for page labels. Committed by RG. See Issue 31857.
- Javaflow: JavaInterpreter initialize method was not thread safe. Committed by RG. See Issue 31854.
- Portal: Generate subnavigation for non-selected tabs. Committed by RG. See Issue 31229.
- Scratchpad block: Restored CastorTransformer support for context beans, restored bean lookup logic, fixed sample. Committed by VG.
- The CocoonBean now creates its own private logger hierarchy, thus avoiding to pollute the CocoonServlet hierarchy when called in that context (e.g. when generating a static site from a CMS). Committed by SW.
- Added replacement for Excalibur Event package in org.apache.cocoon.components.thread and migrated most classes using their own threads to that package. Committed by GP. See Issue 31760.
- Updated antlr to 2.7.4, db-ojb to 1.0.1. Committed by AG.
- Javaflow block: Support inherited methods. Committed by TC. Thanks to Nikolaus Rath. See Issue 31297.
- Javaflow block: Add parameter support. Committed by TC.
- CForms block: added widget states. All widgets can now have an "active" (default), "disabled" or "invisible" state. Updated the stylesheets accordingly to use HTML's disabled inputs. Committed by SW.
- Scratchpad block: BetwixtTransformer: removed deprecation warning with latest betwixt. Committed by AG. Thanks to Christoph Gaffga. See Issue 29945.
- Flowscript: enforce the explicit declaration of variables in the global scope (attached to the session). This avoids the implicit declaration of variables in the global scope when the 'var' keyword is missing, which leads to weird bugs difficult to track down, especially with continuations. Committed by SW. See Issue 25951.
- Deprecated the PHP block since the PHP servlet the generator depends on never worked properly. Explicitly excluded the PHP block from blocks.properties. Committed by ATC.
- XSP Block: Add space="strip" attribute support for <xsp:page> element. When present, all extra whitespace from XSP source is stripped. Committed by VG. Thanks to Guillaume Deflache. See Issue 27176.
- XMLDB Block: Fix NullPointerException in XMLDBTransformer if specified collection does not exist. Committed by VG. See Issue 30849.
- XSP - JXPath logicsheet: Allow use relative contexts in <jxpath:for-each>. Add a new tag <jpath:set-lenient lenient="true|false">. Committed by AG. Thanks to Gunnar Brand. See Issue 31564.
- Updated commons-httpclient to 2.0.2, groovy to 1.0-beta-7, commons-betwixt to 0.6. Committed by AG.
- Flow invocations (function calls or continuation invocations) should always result in a response. Flowscripts with no response are prohibited. Committed by VG.
- Portal block: Apply batch for configuring the type handling in the Castor converter. Committed by CZ. Thanks to Juergen Seitz.
- Fix bug in SessionPropagatorAction. Committed by CZ. Thanks to Sal Mangano. See Issue 30250.
- Fix syntax error in build.bat on Windows ME. Committed by CZ. Thanks to Jeff Ramsdale. See Issue 22707.
- Portal block: Apply patch for rendering a link of the selected tab in TabContentAspect. Committed by CZ. Thanks to Christian Mayrhuber. See Issue 29996.
- Portal block: Apply patch for handling GET method when no enctype is set in CopletTransformer. Committed by CZ. Thanks to Christian Mayrhuber. See Issue 29951.
- Throw a more meaningful exception if charset classes are missing. Committed by TC. See Issue 31545.
- Fixes the SQLTransformer not to close the statement twice. Committed by TC. See Issue 30874.
- Change constructor to be public in order to fix bug 30270. Committed by TC. See Issue 30994.
- Forms block: added possibility to add a SelectionList based on Java. Committed by JH. Thanks to Nuno Santos. See Issue 29715.
- HTML serialization has no space between publicId and systemId. Updated xalan to 2.6.1-dev-20041008T0304. Committed by AG. Thanks to David Crossley. See Issue 28680.
- Scratchpad block: Implemented support of parallel loading of included sources in the IncludeTransformer. Committed by VG.
- Updated commons-lang to 2.0-20041007T2305. Needed for Java 5 compatibility (enum is a keyword). Committed by AG.
- Updated jdt-core to 3.0.1. Committed by AG.
- Faces block: Added JSF CarStore demo. Committed by VG.
- Flow preserves global variables on sitemap reload. Committed by VG.
- Forms block: Implementation of the CForm template language using JX macros, allowing smart page layout that depends on the widgets state and value. Committed by SW.
- Remove jisp from distribution. Committed by AG.
- XSP logicsheet jpath.xsl: incorrect call to JXPathContext.compile. Committed by AG. Thanks to Rob Berens. See Issue 31493.
- Mail block: Support multiple SMTP servers, not only default one. Committed by VG. See Issue 28485.
- Mail block: Add support for authenticated SMTP server connections. Committed by VG. See Issue 24760.
- Cron block: JobScheduler's fireJob method now supports jobs calling Cocoon pipelines. Committed by VG.
- Allow recursive Flow invocations with processPipelineTo. Committed by VG.
- Forms block: rename fd:on-activate to fd:on-action on fd:row-action and fd:repeater-action for consistency with fd:action and fd:submit. Committed by SW.
- Cache the mime-type of readers and serializers. Committed by CZ.
- The daylight time cause error when timezone is CST. Updated icu4j to 3.0. Committed by AG. Thanks to Johnson Hsu. See Issue 30372.
- Upgrading DELI block from version 0.9.8 to x020904. Committed by AG. Thanks to Mark H. Butler. See Issue 31407.
- Add support for translating attribute values which contain i18n expressions rather than complete i18n key. Committed by VG.
- Forms block: allow widget attributes which were only accessible programmatically to be set in the form definition. This allows e.g. generic form processing code to find widgets having a particular attribute. Committed by SW.
- Mail block: the MailSender now gets its source resolver from the service manager. This allows its use from flowscript where the old SourceResolver is not available. Committed by SW.
- AbstractSAXTransformer namespaceURI and defaultNamespaceURI must never be null. When extending AbstractSAXTransformer make sure to set defaultNamespaceURI in the constructor. Committed by VG.
- Faces block: Initial implementation of JavaServer Faces for Cocoon. Committed by VG.
- Taglib block: Initial implementation of BodyTag. Committed by VG.
- Portal block: Changed pathInfo and servletPath logic. pathInfo always starts with '/', while servletPath always has no '/' at the end. Committed by VG.
- JXPathMetaModule incorrectly checks for null parameter (can't happen) instead of empty string. Committed by AG. Thanks to Ralph Goers. See Issue 31134.
- Cron block: Fixed memory leak, QuartzJobExecutor was not releasing pipelines. Committed by VG.
- Updated jexl to 1.0, lucene to 1.4.1. Committed by AG.
- Selector for matching the request headers using a regular expression. Simple content negotiation, e.g. serve XHTML if browser indicates it accepts application/xhtml+xml and HTML otherwise; potentially do automatic i18n according to the accept-language header. Committed by DC. Thanks to Colin Adams. See Issue 30321.
- New @pass-through attribute for the sitemap mount node. If true, processing will resume in the base sitemap just after the mount node if the mounted sitemap has not already generated output (usually if no match is found). Previous behaviour was always to throw a ResourceNotFoundException. The attribute defaults to "false" for backwards compatibility. Committed by NKB.
- Portal block: New Group Based Profile Manager. Committed by CZ.
- Cron block: Add support for persistent job stores, type "tx" and "cmt". Committed by VG.
- Cron block: Fix TestCronJob pipeline call functionality. Committed by VG.
- GetInstance don't work with upgrade from db-ojb-1.0rc6. Committed by AG. Thanks to Johnson Hsu. See Issue 30065.
- Updated rhino to 1.5r4-20040629T1232, xreporter-expression to 20040701, ehcache to 0.9. Committed by AG.
- A redirect is now possible, if it's called from flow. This also fixes bug #26571. Committed by CZ. See Issue 26854.
- Mail block: Add ability to specify mime-type for email body text parameter in the mail transformer. Committed by CZ. Thanks to John Lianoglou. See Issue 30688.
- Fix potential memory leaks in CForms/Woody Template Transformer and JXTemplateGenerator. Committed by CZ.
- XMLDB Block: Add ability to delete collections with XMLDBTransformer. Committed by VG. Thanks to Rui Alberto L. Gonçalves. See Issue 29765.
- Reworked LocaleAction and LocaleMatcher to have similar logic and configuration.
  NOTE: Sitemap variable "lang" renamed to "language", removed configuration parameters: "language-attribute", "country-attribute", "variant-attribute". Committed by VG.
- Added LocaleMatcher for file based internationalization. Committed by UV.
- Make implementation of Cocoon protocol compliant with the Source interface. Committed by CZ. See Issue 27260.
- Update ant to 1.6.2, commons-jxpath to 1.2, commons-beanutils to 1.7, POI to 2.5.1-final-20040804, commons-httpclient to 2.0.1, nekohtml to 0.9.3, hsqldb to 1.7.2, jcs to 1.1-dev-20040811, quartz to 1.4.2, asm to 1.4.3, asm-util to 1.4.3 and groovy to 1.0-beta6. Committed by AG.
- Mail block: The mail transformer ignored configured toAddresses from a pipeline parameter. This is fixed now. Committed by CZ.
- Fixing BetwixtTransformer does not marshal Collections properly (java.lang.OutOfMemoryError). Committed by AG. Thanks to Enrico Maccias. See Issue 28209.
- Update qdox to 1.5 and jdt-core to 3.0.0. Committed by AG.
- Fixing lucene-block samples dependencies. Committed by AG. Thanks to Jorg Heymans. See Issue 30038.
- Update lucene to 1.4. Committed by AG.
- Enhanced JMS support by adding a JMSConnectionManager component to the JMS block. This component replaces the JMSConnection component which only supported publish/subscribe messaging and which mixed some concerns. Two abstract classes: AbstractMessageListener and AbstractMessagePublisher should be used as basis for custom publish/subscribe components. Committed by UH.
- Still in the scratchpad area at the time of this writing, added a CachedSource proxy subclass for Sources that implement TraversableSource and InspectableSource (for instance WebDAVSource). Committed by UH.
- Added a NekoHTMLGenerator to HTML block. This is a simpler HTML parser than JTidy, which preserves more of the original HTML, primarily just balancing closing tags. Committed by UV.
- Added support for stripping root elements in the CIncludeTransformer. Committed by TC. Thanks to Leszek Gawron. See Issue 29935.
- Portal block: Added ManagedCocoonPortlet, to be used together with CocoonServlet or CocoonPortlet. Committed by VG.
- POI block: cell spanning. Committed by TC. Thanks to Frank Taffelt. See Issue 28015.
- POI block: processing of tags "vcenter", "hcenter", "monochrome", "draft", "Header", "Footer" in "gmr:PrintInformation". Initial support for "Margins" ("top", "bottom", "left", "right", "header", "footer"). Committed by AG. See Issue 23002.
- POI block: processing of tags "grid", "orientation and "paper" in "gmr:PrintInformation". Committed by AG. Thanks to Viktor Skladovs. See Issue 23002.
- Fix JXTemplate generator does not handle format-number(number, '$#,##0.00'). Committed by AG. See Issue 24433.
- Forms block: Implement setValue method for the upload widget. Committed by JH.
- Forms block: Handle variants of datatype date correctly (i18n, styling). Committed by JH. Thanks to Colin Adams. See Issue 29881.
- Update commons-digester to 1.5, commons-betwixt to 0.5, commons-pool to 1.2, commons-dbcp to 1.2.1 and db-ojb to 1.0.0. Committed by AG.
- Update commons-collections to 3.1. Committed by AG.
- Fix JXTemplateGenerator eating backslash characters. Committed by AG. See Issue 27133.
- Add new <jx:comment> tag to the JXTemplate. XML comments are not parsed anymore. See the bug description for a sample. Committed by AG. See Issue 25083.
- Move commons-logging-1.0.4.jar to lib/core as jcs.jar depends on it. Committed by AG. Thanks to Juan Jose Pablos. See Issue 29369.
- Apply patch: Cached resources don't have Expires-Header. Committed by AG. Thanks to Jorg Heymans. See Issue 17924.
- Apply patch: Caching JXTemplateGenerator. Committed by AG. Thanks to Leszek Gawron. See Issue 29752.
- ResourceReader can now take configuration elements, parameters are deprecated. Committed by VG.
- Fix byte ranges support in ResourceReader. Committed by VG. Thanks to Litrik De Roy. See Issue 25712.
- Portal: CocoonPortlet has new configuration parameter, default-session-scope. Committed by VG.
- Updated commons-logging to 1.0.4 Committed by AG.
- NamingInputModule provides access to the JNDI context. Committed by VG.
- Updated quartz to 1.4 Committed by AG.
- Add configuration support for log4j. Committed by CZ.
- New Input modules: URLEncodeModule and URLDecodeModule Committed by ATC. Thanks to Leszek Gawron.
- Apply patch to fix some memory leaks in the tree processor. Committed by CZ. See Issue 27066.
- Portal: Fix NPE when non-caching pipelines are used for the portal profile. Committed by CZ. See Issue 29373.
- Portal: Fix transformation of non-external html links (HTMLEventLinkTransformer) Committed by CZ.
- Portal: Fix problem with bookmarks and CachingURICoplet Committed by CZ. See Issue 28687.
- A new build property, "include.sources-in-jars", allows to include java source files in jar archives. Useful when using a non-released version to know what sources are used. Committed by SW.
- Refactor TreeProcessor to avoid constant reloading of sitemap if its modification date is in the future and occasional ECM-related exceptions when a sitemap is reloaded. Committed by SW. See Issue 27249.
- Tour block: added Java shapes sample. Committed by BD. Thanks to Stavros Kounis. See Issue 28834.
- Updated Groovy to 1.0-beta5, qdox to 1.4 and util.concurrent to 1.3.4. Committed by AG.
- Serializers block: Fixed the namespace handling of the XMLSerializer. Committed by TC.
- Serializers block: Added support for indentation to the XMLSerializer. Committed by TC.
- Chaperon block: Improvements for Chaperon JSPWiki to xdocs conversion:
  - Handle nested bullet lists (number lists already supported)
  - If 'name' parameter is specified, use it as title (and add spaces between WikiWords) instead of first section title
  - Handle images with alt text
  - 'spaceless-filenames' parameter will squash out spaces in relative links
  - Fix anchors to use 'id' instead of 'name'
  - Emphasize anchors a bit
  - selftest.txt tests for lists and tables
  - More known issues listed in selftest.txt
  Committed by DC. Thanks to Dave Brondsema. See Issue 28809.
- Added instrumentation support to ContinuationsManager. Committed by VG.

### Contributors to this release

We thank the following people for their contributions to this release.

This is a list of all people who participated as committers:
Antonio Gallardo (AG), Tony Collen (ATC), Bertrand Delacrétaz (BD), Carsten Ziegeler (CZ), David Crossley (DC), Giacomo Pati (GP), Jörg Heinicke (JH), Nicola Ken Barozzi (NKB), Ralph Goers (RG), Sylvain Wallez (SW), Torsten Curdt (TC), Unico Hommes (UH), Upayavira (UV), Vadim Gritsenko (VG).

This is a list of other contributors:
Christian Mayrhuber, Christoph Gaffga, Colin Adams, Dave Brondsema, David Crossley, Enrico Maccias, Frank Taffelt, Guillaume Deflache, Gunnar Brand, Jeff Ramsdale, John Lianoglou, Johnson Hsu, Jorg Heymans, Juan Jose Pablos, Juergen Seitz, Leo Leonid, Leszek Gawron, Litrik De Roy, Mark H. Butler, Michal Durdina, Nikolaus Rath, Nuno Santos, Ralph Goers, Rick Tessner, Rob Berens, Rui Alberto L. Gonçalves, Sal Mangano, Stavros Kounis, Viktor Skladovs, wchao@yahoo.com.

## Version 2.1.5.1 (July 9 2004)

- The store/caching system now uses JCS instead of Jisp. Committed by CZ.
- The persistent store is now really persistent between two application runs. (Fixed a bug in the hash code calculation of the keys). Committed by CZ.
- Updated Apache JCS to 1.0 dev 20040516 and util.concurrent to 1.3.3. Committed by AG.
- Extended CocoonServlet to allow any org.apache.avalon.excalibur.logger.LoggerManager to be used. Committed by JH. Thanks to Ralph Goers. See Issue 28860.
- Deprecated getWidget from the Widget interface in cforms. People should consider using getChild(id) or lookupWidget(path) instead. On the level of the flowscript 'Form' API a semantical distinct getWidget() (notice: no arguments!) is still available to return the actual wrapped Java form instance. Committed by MPO.
- Fixed jetty-4.2.19.jar compiled for +jdk1.4. The new version can run in 1.3 Committed by AG. Thanks to Juan Jose Pablos. See Issue 28889.
- Fixed missing escapes of line feeds, carriage returns and tabs, that resulted in invalid Java code. Committed by JH. Thanks to Michal Durdina. See Issue 27871.
- Updated Joost to 20040330 Committed by AG.
- RequestListener hook added, that is called before and after a request is processed. Committed by JH. Thanks to Ralph Goers. See Issue 28424.
- Enable XConfToolTask to modify multiple attributes. See the bug report for description of use. Also enable suppression of comments. Committed by DC. Thanks to Ralph Goers. See Issue 28704.
- Extended FOM so that cocoon.redirectTo("url", true) will do a global redirect. cocoon.redirectTo("url") will act as before. This enables FOM to redirect when it is called from within cocoon: protocol requests, aggregations, etc. Committed by UV.
- Moving check on number of specified targets within CocoonBean. This was preventing the processURI(uri, outputStream) method from working. Committed by UV.
- CForms: Remove custom flow level forms validators. Committed by VG.
- Added the "tour" block: "Supersonic Tour of Apache Cocoon". Tutorial/example app focused on the Power Trio: Pipelines, Flow, Forms. Committed by BD.
- XMLResourceBundleFactory was stopping when it encountered the first bundle name that does not have a locale, missing those that might be in one of the other locations. Committed by DC. Thanks to Ralph Goers. See Issue 27878.
- Moved storage of all flow-related data (viewData, continuation, request, etc) from request attributes to object model entries. This allows a view called by sendPage() to also use flowscript (using request attributes caused the two calls to mix up their data). Committed by SW.
- Hopefully fixed the source resolving in JSP components finally by using standard Cocoon/Avalon Excalibur source resolving. This allows to use all known protocols and Cocoon pseudo protocols as long as the JSP file is inside the servlet's context. Committed by JH.
- CForms: Change to generated instance xml <fi:form>. Nested widgets are now grouped in <fi:widgets> and no longer in <fi:children>. This aligns with other container-widgets. Committed by MPO.
- LinkRewriter: Added support for rewriting URLs which are embedded into the attribute values (example: style attribute with background image URL). Such URLs can be extracted using RE expressions and re-written, leaving rest of the attribute value intact. Committed by VG.
- Updated Velocity to 1.4 and iText to 1.02b Committed by AG.
- Added standalone build target "validate-sitemaps". Added standalone build target "validate-stylesheets". Committed by DC.
- Updated Xindice to 1.1b4, xmldb-api to 20030701, xmldb-common to 20030701 and xmldb-xupdate to 20040205 Committed by AG.
- Updated Jetty to 4.2.19 Committed by AG.
- CForms: <fi:styling type="date"/> is not needed (nor supported) anymore, the required information about the datatype and the pattern is now included in the widget instance XML. Committed by BRD.
- CForms: it is now possible to store arbitrary data with each widget instance by using the new setAttribute and getAttribute methods of the Widget interface. Committed by BRD.
- Groovy script generator support in BSF block Committed by AG.
- Renamed validate-set to constraint-set for consistency (the element name is also constraint-set). Committed by JH. Thanks to Derek Hohls.
- Updated bsf to 2.3.0 Committed by AG.
- "Fixed" bug 15841 by raising an exception when something is tried to add to elements before attributes. Committed by JH. See Issue 15841.
- Changed blocks selection handling to allow more intuitive include.block.blockname syntax in (local.)blocks.properties. Old syntax exclude.block.blockname is still supported. Committed by JH.
- Enabled use of nested sitemap variables, e.g. {request-param:{1}}. Committed by UV.
- Updated antlr to 2.7.3 Committed by AG.
- Deprecated Tokenizer and the methods count(), matchStrings(), replaceTokens() and both split() in StringUtils. The functionality of all this was replaced in favor of Apache commons-lang lib. They will be removed in Cocoon 2.2 Committed by AG.
- Updated batik to 1.5.1, db-ojb to 1.0RC6 Committed by AG.
- Removed xmlform and jxforms blocks as confirmed by a users poll. Committed by TC.
- Removed precept block. Was dead code. Committed by TC.
- Updated jdtcore to 2.1.3, update castor-xml to 0.9.5.3 Committed by AG.
- DefaultIncludeCacheManager did not release xml-serializer under some circumstances. Committed by CZ. Thanks to Corin Moss. See Issue 27764.
- DOMFactory can now create a document element. Committed by CZ. Thanks to Peter Brant. See Issue 27681.
- Databases: The xml-encoding for the SQLTransformer is now configurable. Committed by CZ.
- Build System: New property "loglevel" that can be used in the patch files. Committed by CZ. Thanks to Andreas Hartmann. See Issue 27217.
- Portal: Fix problems with minimizing/maximizing of portlets. Committed by CZ. Thanks to Michal Durdina. See Issue 27518.
- Portal: Fix problems with the portal block and using the CLI. Committed by CZ. Thanks to Simon Mieth. See Issue 26566.
- Portal: Add default PropertyManagerService implementation Committed by CZ. Thanks to Michal Durdina. See Issue 27658.
- Portal: Fix synchronization problem with JSR-168 portlets in IncludingHTMLSerializer. Committed by CZ. Thanks to Michal Durdina. See Issue 27657.
- Improvement for AbstractReader: Don't wrap an already buffered stream. Committed by CZ. Thanks to Gunnar Brand. See Issue 27602.
- ForwardEnvironmentWrapper delegates isResponseModified/setResponseIsNotModified to wrapped environment. Committed by CZ. Thanks to Marco Rolappe. See Issue 25437.
- CForms: Change the syntax for repeater row identity handling. Committed by JH. See Issue 27600.
- An internal redirect is now handled the same way as an external redirect would be handled. This includes that the error handler of the called pipeline is invoked in case of an error. Committed by CZ.
- Set the default encoding for the Portlet Environment. Committed by CZ. See Issue 27188.
- Move XSP into an own block. Committed by SMS.
- Licenses changed to ASF 2.0 in all source files which had a license, using the ReplaceLicense tool from the committers CVS module. Committed by BD.
- Ant task (correctLinefeed) that corrects linefeed characters according to our standard (LF). Committed by RP.
- Apples use the new CocoonForms classes Committed by RP.
- Petstore samples use the new CocoonForms names Committed by RP.
- New Ant task ("woody2CocoonForms-renaming") that updates namespaces, sitemap components and flowscript functions (details see tools/target/upgrade-build.xml) Committed by RP.
- Renaming Woody to CocoonForms
  - The Woody block (src/blocks/woody) has moved into the new Cocoon Forms block (src/blocks/forms).
  - new namespaces:
    - from xmlns:wd="http://apache.org/cocoon/woody/definition/1.0" to xmlns:fd="http://apache.org/cocoon/forms/1.0#definition"
    - from xmlns:wb="http://apache.org/cocoon/woody/binding/1.0" to xmlns:fb="http://apache.org/cocoon/forms/1.0#binding"
    - from xmlns:wi="http://apache.org/cocoon/woody/instance/1.0" to xmlns:fi="http://apache.org/cocoon/forms/1.0#instance"
    - from xmlns:wt="http://apache.org/cocoon/woody/template/1.0" to xmlns:ft="http://apache.org/cocoon/forms/1.0#template"
  - Java packages moved from org.apache.cocoon.woody to org.apache.cocoon.forms
  Committed by RP.
- Updated Velocity engine to 1.4-rc1 Committed by AG.
- Fix namespace handling in FilterTransformer. Committed by JH. See Issue 27301.
- Added grayscaling and color transformation to the ImageReader. Committed by JH. Thanks to Peter Horsfield. See Issue 27020.
- LinkStatusGenerator now handles also links with a specified charset. Committed by JH. Thanks to Marco Rolappe. See Issue 26851.
- Avoid "CLOBs" when indexing XML without superfluous whitespace (Lucene). Committed by JH. Thanks to Philipp Matthias Hahn. See Issue 25934.
- Allow streaming of uploaded files into a pipeline using StreamGenerator. Committed by JH. Thanks to Gernot Koller. See Issue 25594.
- Avoid accumulating of addresses and attachements in SendMailTransformer, when sending multiple mails, i.e. multiple sendmail elements at once. Committed by JH. Thanks to Rui Alberto L. Gonçalves. See Issue 25483.
- EncodeURLTransformer no longer creates a session. Committed by JH. Thanks to Marco Rolappe. See Issue 25403.
- Added additional property <column-case> to the SQLTransformer with the possible values "preserve", "uppercase", and "lowercase". Committed by JH. Thanks to Steve Krulewitz. See Issue 22400.
- Fixed path separator handling in cocoon.bat/.sh and Loader.java. Committed by JH. Thanks to Georg Ragaller. See Issue 27254.
- Fixed duplicate startDocument event in BetwixtTransformer. Committed by JH. Thanks to Oscar Picasso. See Issue 27456.
- Updated POI to 2.5-final-20040302 Committed by AG.
- Pass notification object to coplet error pipelines so it can react on it. Committed by CZ.
- Updated xalan to 2.6.0 Committed by AG. Thanks to Leszek Gawron. See Issue 24457.
- CForms: Support for multiple unique-row-id in a repeater Committed by AG.
- CForms: Aggregate field supports both directions (split / combine), and arbitrary types (not strings only). Committed by VG.
- CForms: Added String() function. Converts argument to string value. Committed by VG.
- Update Avalon Excalibur packages to released versions. Committed by CZ.
- Updated joost to 20031219, qdox to 1.3 and quartz to 1.3.2 Committed by AG.
- Updated xerces to 2.6.2 Committed by AG.
- Make the current sitemap service manager available through the component context. Committed by CZ.
- Portal block: Add portlet environment to build JSR 168 portlets with Cocoon. This is a contribution by Alex Rudnev (alex.rudnev@dc.gov) and Vadim Gritsenko (vadim.gritsenko@dc.gov). Committed by VG.
- Adding basket coplet to the portal. Committed by CZ.
- Patch for allowing empty values in configuration of defaults input module. Committed by CZ. Thanks to Alfred.Nathaniel. See Issue 25093.
- Patch for disposing components in the properties in xml file module. Committed by CZ. Thanks to Marco Rolappe. See Issue 26896.
- Updated commons-httpclient to 2.0-final Committed by AG.
- Updated jdtcore to 2.1.2, and Ant to 1.6.1 Committed by AG.
- Patch for any elemens inside a coplet:content element and not just only text. Committed by CZ. Thanks to Jon Evans. See Issue 26896.
- Adding SAX recording to AbstractSAXTransformer. Committed by CZ.
- Remove non-FOM flow classes and system.js Committed by VG.

### Contributors to this release

We thank the following people for their contributions to this release.

This is a list of all people who participated as committers:
Antonio Gallardo (AG), Bertrand Delacrétaz (BD), Bruno Dumon (BRD), Carsten Ziegeler (CZ), David Crossley (DC), Jörg Heinicke (JH), Marc Portier (MPO), Reinhard Pötz (RP), Stephan Michels (SMS), Sylvain Wallez (SW), Torsten Curdt (TC), Upayavira (UV), Vadim Gritsenko (VG).

This is a list of other contributors:
Alfred.Nathaniel, Andreas Hartmann, Corin Moss, Derek Hohls, Georg Ragaller, Gernot Koller, Gunnar Brand, Jon Evans, Juan Jose Pablos, Leszek Gawron, Marco Rolappe, Michal Durdina, Oscar Picasso, Peter Brant, Peter Horsfield, Philipp Matthias Hahn, Ralph Goers, Rui Alberto L. Gonçalves, Simon Mieth, Steve Krulewitz.

## Version 2.1.4 (February 12 2004)

- Updated iText to 1.02 Committed by AG.
- Woody block: every widget can now have a validator. This allows for example repeaters to perform inter-row validation or overall form-level validation. Committed by SW.
- Woody block: added support for rich text editing using InteractiveTools' HTMLArea. Committed by UC.
- ResourceReader: Is now configurable as well. All parameters can be defined during configuration of the reader. Fixed also a minor bug in the last-modified detection. Committed by CZ.
- OJB-Block: Added our own OJB ConnectionFactory which uses the DataSources configured in cocoon.xconf Committed by GP.
- Updated POI to 2.0-final Committed by AG.
- Fixing memory leak in the cocoon protocol. Committed by CZ. Thanks to Michael Gerzabek. See Issue 26186.
- JSPReader: The output encoding of the reader is now configurable. Committed by JH. Thanks to Marco Rolappe. See Issue 14327.
- woody.js has been removed. Please use woody2.js instead. Committed by VG.
- Resurrected the Slide block and made it to work with current developement version of Slide (2.0-b1). Complete revamping of the Slide sample admin app. Committed by UH. See Issue 25356.
- Allow the Authentication Framework to invoke a pipeline during logout Committed by CZ. Thanks to Ralph Goers. See Issue 26450.
- Updated commons-collections to version 3.0 Committed by AG.
- First version of the JSR-168 support in the portal engine. Committed by CZ.
- Updated commons-httpclient to the version 2.0-RC3 Committed by AG.
- Renamed JspGenerator to JSPGenerator to match JSPEngine and JSPReader naming convention. Committed by UH.
- JSPEngineImpl incorrectly converts bytes to characters. Committed by UH. Thanks to Johan Stuyts. See Issue 25694.
- Woody expression manager supports registration of custom functions (see cocoon.xconf). Added IsNull function. Committed by VG.
- Updated Jakarta ORO to the version 2.0.8. Committed by AG.
- Updated Lucene to 1.3 final. Committed by AG.
- Build fails on windows without cygwin. Committed by AG. Thanks to Karel Vervaeke. See Issue 25664.
- Updated Ant to 1.6.0. Committed by AG.
- Remove dependencies to Xalan (from portal-fw, authentication-fw, session-fw and core) Committed by CZ.
- Portal-Engine: Added some new samples (for inter-coplet communication, cleaned up the sample, fixed some bugs and added some new components for developing own coplets. Committed by CZ.
- Changed semantics on the cforms binding. Added a @direction (which replaces the @read-only) and a @lenient attribute on all binding implementations in the pool. Committed by MPO.
- Fix NPE error when pointed tag is empty in xsp-session-fw:getxml. Applying patch from ltrillaud@jouve.fr (ltrillaud@jouve.fr). Committed by AG. Thanks to Laurent Trillaud.
- ResourceExistsSelector now works the same way as ResourceExistsAction does. It can now detect existence of any Cocoon resource, not only files in context. Default value for prefix was changed from '/' to ''. For old behavior, use prefix 'context://'. Committed by VG.
- Fixed and updated the stores and made them instrumentable to follow their size and the number of hits and missed. Committed by SW.
- New PipelineUtil class that extends the features or cocoon.processPipelineTo() to SAX and DOM outputs. Committed by SW.
- The "cocoon" object in flowscript has two new methods that allow Java classes instanciated by a flowscript to access e.g. request, response and components without requiring a dependency on the "FOM_Cocoon" class.
  cocoon.createObject(Class) creates an object and honors the various Avalon lifecycle interfaces implemented by an object.
  cocoon.disposeObject(Object) disposes an object if needed. Committed by SW.
- Reworked I18nTransformer implementation to use new version of XMLResourceBundle. Committed by VG.
- Reworked XMLResourceBundle implementation. Now it supports only XML bundles with fixed syntax (same as for I18nTransformer dictionaries), and instead of XPath keys uses message keys (which is faster). Returned resources now are instances of ParamSaxBuffer class, and not DOM nodes. Committed by VG.
- Modified BundleFactory interface to return Bundle instead of Component. Committed by VG.
- Cocoon Forms (Woody) selection lists now allow empty value (which is translated to the null object) Committed by VG.
- Deprecate MirrorRecorder. It will be removed starting with Cocoon 2.2 Committed by VG.
- In XMLDBTransformer, create operation now is able to create collections. It will create collection if oid attribute value ends with '/', otherwise it will work as before (creates XML resource) Committed by VG.
- Added optional collection attribute on <xmldb:query/> element of XMLDBTransformer. This attribute specifies collection name, relative to the transformer's base collection, which is used as base collection for current create/delete/update operation Committed by VG.
- Remove deprecated XMLDB generators from the sitemap Committed by VG.
- Do not double decode URI in CocoonServlet Committed by VG. See Issue 25132.
- Resurrected the XMLDB samples including XIndice 1.1b1 in Cocoon. Committed by JH.
- I18n transformer does not support old configuration syntax anymore (parameters catalogue-name, catalogue-location). Use <catalogues/> element instead. Committed by VG.
- I18n transformer now works with translations containing elements with attributes. Committed by VG.
- Update libs Xerces to 2.6.0 and xml-apis.jar. Committed by AG.
- Woody: new double-list styling for MultivalueField. Committed by SW.
- New MountTableMatcher to define "mount tables" that allow external directories to be mounted in a sitemap without requiring to modify the sitemap. It's use has been included in the samples sitemap, thus allowing mounts that surivive a "build clean webapp". Committed by SW.
- Woody: added rendering of <wd:help> popup panel on a "?" icon. Committed by SW.
- Woody: new upload widget. This required some modification on multipart.Part objects that can now survice the end of processing of the current request. Committed by SW.
- Updated Entity Resolver from pre-release to official xml-commons-resolver-1.1 release. Committed by DC.
- NetUtils deparameterize() and parameterize() extended to support multivalue parameters. Multivalue parameters are returned as String arrays. Committed by VG.
- Add cocoon.sendStatus([Number] sc) and cocoon.response.setStatus([Number] sc) to FOM. Committed by UH.
- Updated Jetty to 4.2.14 Committed by AG.
- Disable accessing files outside the context via the context protocol. Committed by CZ. See Issue 24093.

### Contributors to this release

We thank the following people for their contributions to this release.

This is a list of all people who participated as committers:
Antonio Gallardo (AG), Carsten Ziegeler (CZ), David Crossley (DC), Giacomo Pati (GP), Jörg Heinicke (JH), Marc Portier (MPO), Sylvain Wallez (SW), Ugo Cei (UC), Unico Hommes (UH), Vadim Gritsenko (VG).

This is a list of other contributors:
Johan Stuyts, Karel Vervaeke, Laurent Trillaud, Marco Rolappe, Michael Gerzabek, Ralph Goers.

## Version 2.1.3 (November 13 2003)

- Complete overhaul of the Petstore sample. Adding Woody form processing Flow, and dealing with persistent data. Implementation of missing or unfinished parts. See the the bug report and its attached notes. Committed by DC. Thanks to Leo Leonid. See Issue 24463.
- The CachingPointProcessingPipeline now uses Parameters instead of an own configuration scheme. See the demo sitemap for the changed configuration. Committed by CZ.
- XMLByteStreamCompiler now handles also text nodes longer than 32 k. Committed by JH. Thanks to Simon Mieth. See Issue 23299.
- Reducing setDocumentLocator calls in JXTemplateGenerator and JXFormsGenerator. Committed by CZ. Thanks to Sam Coward. See Issue 23538.
- sitemap-viewer added to the scratchpad samples Committed by BD. Thanks to Jelle Alten. See Issue 24294.
- Fix HSSFSerializer Bug: Same cell definitions blows document. Applying patch from Grigorios Merenidis (Grigorios.Merenidis@Dresdner-Bank.com). Committed by AG. Thanks to Grigorios Merenidis. See Issue 19638.
- SQLTransformer: Correcting handling of XML data with XML declarations. Committed by CZ. Thanks to Andrzej Taramina. See Issue 24326.
- Fixing threading problems in the ExtendedComponentSelector. Committed by CZ. Thanks to Volker Schmitt.
- Fixing namespace handling in the send-mail transformer. Committed by CZ. Thanks to Martin Holz. See Issue 24409.
- Fixing precompilation of the XSPs for the CLI. Committed by CZ. Thanks to Andrea Poeschl.
- Woody: in the form definition, for widgets that have child widgets, those child widgets should now be embedded inside a wd:widgets element. Practical update information can be found in the wiki. Committed by BRD.
- Updated Xalan to 2.5.2 Committed by AG.
- Woody: did some cleanup of the FormHandler interface: moved it to the event subpackage, made it handle all types of WidgetEvents (there's an AbstractFormHandler which splits ActionEvents from ValueChangedEvents). Removed the deprecated RepeaterHandler class, and the unused CarSelectorHandler class. Committed by BRD.
- Serializers now can optionally implement the SitemapModelComponent interface, meaning then can be given a "src" attribute and parameters using <map:parameter>. Committed by SW.
- Sitemap components (matchers, actions, generators, etc) can know the location of their use in the sitemap unsing a special parameter named Constants.SITEMAP_PARAMETERS_LOCATION. Committed by SW.
- Closing some memory leaks in the source and component handling. Committed by CZ. See Issue 23625.
- Cocoon Protocol: Fixed a bug that broke the environment handling in some cases for internal pipeline calls. (This should also fix bug #15843). Committed by CZ. Thanks to Sam Coward. See Issue 22377.
- HTMLGenerator: fixed NullPointerException in case the "HTML" file contained an XML declaration. Committed by BRD. Thanks to Alfred Fuchs. See Issue 23648.
- Fixed ResolverImplTestCase so that the "test" build target does not fail (it still depends on the deprecated block, though). Committed by UC.
- Woody: fixed a bug causing an endless loop during validation of a field if during the validation of the field the value of the field itself was again requested. Committed by BRD.
- Patched SQLTransformer to use only one connection. Committed by BRD. Thanks to Daniel Fagerstrom. See Issue 16718.
- Patch to XMLDBTransformer to generate a key on create if it is not provided Committed by GR. Thanks to Micheal Homeijer. See Issue 14845.
- New JavaScriptBinding for Woody, which allows writing specific binding strategies with two JavaScript snippets (one for load, one for save). Committed by SW.
- TraversableGenerators can now be used with plain resources too (not only collections). XPathTraversableGenerator has been revamped in the XML recognition pattern (using mime type mapping too). While at it, a bug regarding non-existent sources has been fixed. Committed by GR. Thanks to Unico Hommes. See Issue 23575.
- Update lib excalibur-i18n to 1.1, update iText to 1.01 Committed by AG.
- Add initial support for IE in linotype. Committed by GH. Thanks to Klaus Bertram. See Issue 22813.
- Woody block: New integer Datatype. Committed by AG.
- SimpleFormTransformer: multiple values not repeatedly inserted anymore, value is consumed instead. Add repeater tag. Make transformer inherit from AbstractSAXTransformer. Update examples to show basic repeat tag usage. Committed by CH.

### Contributors to this release

We thank the following people for their contributions to this release.

This is a list of all people who participated as committers:
Antonio Gallardo (AG), Bertrand Delacrétaz (BD), Bruno Dumon (BRD), Christian Haul (CH), Carsten Ziegeler (CZ), David Crossley (DC), Geoff Howard (GH), Gianugo Rabellino (GR), Jörg Heinicke (JH), Sylvain Wallez (SW), Ugo Cei (UC).

This is a list of other contributors:
Alfred Fuchs, Andrea Poeschl, Andrzej Taramina, Daniel Fagerstrom, Grigorios Merenidis, Jelle Alten, Klaus Bertram, Leo Leonid, Martin Holz, Micheal Homeijer, Sam Coward, Simon Mieth, Unico Hommes, Volker Schmitt.

## Version 2.1.2 (September 30 2003)

- Fix default namespace handling in Xscript variables. Committed by VG. See Issue 23516.
- OJB block: Object Relational mapping tool integration. Committed by AG.
- Slop block: New YAPT sample, lightweight presentation tool. Committed by BD.
- Fixing release of Source in the JXTemplateGenerator. Committed by CZ. Thanks to Volker Schmitt. See Issue 23171.
- Update lib commons-lang to 2.0, iText to 1.00 Committed by AG.
- New event-handling system for Woody. Value change and action event handlers can be attached respectively to field and action widgets, and event handlers can be both Java classes or JavaScript snippets in the form definition.
  New <wd:repeater-action> widget to automatically handle rows addition and deletion on repeaters (a very common need).
  New <wd:submit> widget to distinguish between actions (act on the form and redisplay it) and submits that terminate the form.
  Ability to trigger form submit on any widget value change (including inputs, popups, etc) to trigger server-side event handlers through client-side interaction.
  Rewriting of the Woody/FlowScript integration to be more simple. Committed by SW.
- Update libs Xerces to 2.5.0 and Ant to 1.5.4 Committed by AG.
- Fixed internationalization support for HSSFSerializer by setting also the output encoding in the Workbook to UTF-16. Committed by JH. Thanks to Yury Mikhienko. See Issue 23208.
- Fixed issues the cron block had when cocoon (or the servlet container ?) allows reloads. Committed by GP.
- Removed deprecated XPathProcessor and implementations. These classes where moved into the Excalibur XMLUtil package. Removed Jaxen libraries used by JaxenProcessorImpl. Committed by VG.
- Replaced the deprecated LogkitManager stuff with its LoggerManager counterpart. This is Cocoon internal and should not affect components as long as you don't use LogKitManageable interface. Committed by JH. See Issue 21730.
- Woody binding framework: fixed a problem with the deletion of rows by the repeater binding, whereby not all deleted rows where removed from the bean or XML model. Committed by BRD.
- Errors handled by map:handle-errors are now logged to the logcategory "sitemap.handled-errors". Previously they weren't logged. Committed by BRD.

### Contributors to this release

We thank the following people for their contributions to this release.

This is a list of all people who participated as committers:
Antonio Gallardo (AG), Bertrand Delacrétaz (BD), Bruno Dumon (BRD), Carsten Ziegeler (CZ), Giacomo Pati (GP), Jörg Heinicke (JH), Sylvain Wallez (SW), Vadim Gritsenko (VG).

This is a list of other contributors:
Volker Schmitt, Yury Mikhienko.

## Version 2.1.1 (September 05 2003)

- Moved scratchpad into an own block. This allows that code in the scratchpad can depend on other blocks. The scratchpad can now also have own configurations. Committed by CZ.
- Extended the build system. If one block depends on the other it can now also use the libraries of the other block. This avoids moving the libs to the lib/optional directory. Committed by CZ.
- cron block added Committed by GP.
- Updated Jakarta Regexp library to the version 1.3 Committed by VG.
- Applying patch for adding new session-fw logicsheet that allows access to a session context from with xsp. Committed by CZ. Thanks to Antonio Gallardo. See Issue 13070.
- Fixed a StackOverflowError in errors2html.xslt that could occur with error pages containing very long stack traces. Committed by BRD.
- Woody: renamed the button widget to action widget. If you were using this widget, you will need to update your form definition files. Committed by BRD.
- Adding new RequestDataStore component that can be used as a replacement for the component marker interfaces RequestLifeCycleComponent and GlobalRequestLifeCycleComponent obsolete. Committed by CZ.
- Adding contributions to the portal from Friedrich Klenner (friedrich.klenner@rzb.at), Gerald Kahrer (gerald.kahrer@rizit.at) and Gernot Koller (gernot.koller@rizit.at): caching uri coplet, application coplet, proxy transformer, proxy reader and link transformer. Committed by CZ.
- Changed logkit attribute of <logging in cli.xconf to be relative to context dir, rather than CLI invocation dir. Committed by UV.
- Added include/exclude feature to CLI to allow fine-tuning of crawling of a site. Committed by UV.
- Upgraded excalibur-event package so that Tomcat shutdown and continuations cleanup now works properly. Committed by BRD. See Issue 18131.
- Add a session-context input module to the session framework to retrieve information from a session context in the sitemap. Committed by CZ.
- Applying patch for processing http.nonProxyHosts in WebServiceProxyGenerator. Committed by CZ. Thanks to Peter Ross. See Issue 21399.
- POI block: fixed formula support. If no ValueType attribute is set on <gmr:Cell/>, the cell content will be interpreted as formula. Committed by JH. Thanks to Neil Bacon. See Issue 22574.
- Applying patch for using 'host' in the logging patterns. Committed by CZ. Thanks to Unico Hommes. See Issue 21848.
- Lucene block: LuceneIndexTransformer configuration fixed. Committed by JH. Thanks to Conal Tuohy. See Issue 22498.
- Applying patch from Renaud Bruyeron (bruyeron@fullsix.com) that fixes the prematurely closing of the connection causing in the SQL Transformer. Committed by CZ. See Issue 12173.
- Midi block: added transposition and inversion stylesheets and samples. Committed by JH. Thanks to Mark Leicester. See Issue 22479.
- Rewrite handling of internal-redirects (i.e. redirects to "cocoon:" URLs). Previously, internal redirects where not handled for internal requests (i.e. sitemap source). This bug prevented among other cases the use of flow-driven pages enclosed in an aggregation. Committed by SW.
- The jars in /lib/local are used during compilation again. Committed by CZ.
- Update the I18nTransformer so that it also accepts the 2.0 namespace. This ensures backwards compatibility for 2.0 applications. Additionally, attributes on "i18n:" elements can now be in the default namespace (meaning we can now write <i8n:text key="foo"> instead of <i18n:text i18n:key="foo">) Committed by SW. See Issue 20445.
- Fix in the SVG serializer: if setDocumentLocator wasn't called on the serializer (which can happen if you have e.g. an XSLT transformer in the pipeline), then the base URI for the SVG document wasn't set which could cause exceptions. Now it is set to http://localhost/ in such cases. Also fixed a problem with the document locator not being reset between subsequent retrievals of the serializer from the pool. Committed by BRD.
- Fix Jisp based persistent store: close database files on Cocoon shutdown and re-use existing database and index files on startup. Committed by VG.
- Views are now always loaded before resources, ensuring proper call of views from resources. Redeclaring a component (e.g. file generator) with no "label" attribute was wrongly inheriting view labels from the same component in the parent sitemap. Committed by SW. See Issue 22239.

### Contributors to this release

We thank the following people for their contributions to this release.

This is a list of all people who participated as committers:
Bruno Dumon (BRD), Carsten Ziegeler (CZ), Giacomo Pati (GP), Jörg Heinicke (JH), Sylvain Wallez (SW), Upayavira (UV), Vadim Gritsenko (VG).

This is a list of other contributors:
Antonio Gallardo, Conal Tuohy, Mark Leicester, Neil Bacon, Peter Ross, Unico Hommes.

## Version 2.1 (August 12 2003)

- Midi block refactoring applied. Committed by JH. Thanks to Mark Leicester. See Issue 22288.
- Patch for allowing to specify a cocoon-view for internal requests in the query string. Committed by CZ. Thanks to Unico Hommes. See Issue 22270.
- Instrumentation support: Updated client libraries to make instrumentation work again. Added a target "start-instrumentation-client" to Cocoon's ant files and removed "runclient" shell scripts. Committed by JH. See Issue 19839.
- XMLDBTransformer: retrieving auto-generated resource id. Committed by JH. Thanks to Nicolas Maisonneuve. See Issue 22064.
- midi block added Committed by BD. Thanks to Mark Leicester.
- slop block added (Simple Line Oriented Parser) Committed by BD.
- LDAPTransformer now handles multiple attribute values. The filter element is also configurable via a sitemap parameter. Committed by JH. Thanks to Unico Hommes. See Issue 21931, 22173.
- LDAPTransformer: Added attribute modification methods: add, replace, modify, append. Committed by JH. Thanks to Yury Mikhienko. See Issue 20033, 22042.
- IMPORTANT: Flow: cleaned up the situation with regards to the "uri" argument to the sendPage, sendPageAndWait, and processPipelineTo functions. URI's starting with a slash are resolved against the root sitemap, URI's not starting with a slash are resolved against the current sitemap. Specifying a scheme is not allowed. Committed by BRD.
- I18nTransformer: if content of i18n:text is empty and translation is not found, use untranslated-text. Committed by BRD. See Issue 19841.
- ESQL: explicitly release database resources. Committed by CH. Thanks to Gildas Guillemot. See Issue 22050.
- Paginator now caches dynamic pagesheet correctly. Committed by CZ. Thanks to Frank Taffelt. See Issue 21213.
- Configuration logkit.xconf can now be read from any location. Committed by CZ.
- Fix the ignoreErrors handling in the cinclude transformer. Committed by CZ.

### Contributors to this release

We thank the following people for their contributions to this release.

This is a list of all people who participated as committers:
Bertrand Delacrétaz (BD), Bruno Dumon (BRD), Christian Haul (CH), Carsten Ziegeler (CZ), Jörg Heinicke (JH).

This is a list of other contributors:
Frank Taffelt, Gildas Guillemot, Mark Leicester, Nicolas Maisonneuve, Unico Hommes, Yury Mikhienko.

## Version 2.1rc1 (July 29 2003)

- Updated FOP to the latest released version, 0.20.5. Committed by VG.
- Added delete capabilities to the SourceWritingTransformer. Committed by GR.
- Add a defaultContentType parameter to StreamGenerator, to comply with misbehaving clients. Committed by GR. Thanks to Guido Casper. See Issue 21881.
- Add a new set of WebDAV samples, with the capability of serving WebDAV content straight from Cocoon. Committed by GR. Thanks to Guido Casper. See Issue 21778.
- Various fixes and enhancements to Lucene search. Propagate the lucene:* elements to the result tree and add "elapsed-time" attribute, so now possible to transform the results into a useful report about indexing. Fix "incremental" indexing. Committed by DC. Thanks to Conal Tuohy. See Issue 21557.
- Added CLOB support in SQLTransformer. Committed by GR.
- Added an (unstable) HTMLTransformer to the html block, to parse and tidy an XML containing escaped (and possibly incorrect) HTML Committed by GR.
- Added URL encoding of user/password in the WebDAV source (webdav://user:password@host/path) Committed by GR.
- Decouple core XSP logicsheet from database classes to allow XSP deployment without excalibur datasource JAR file. If your XSP pages use datasources directly (and not through ESQL logicsheet), add xsp:include. Committed by VG.
- The authentication framework now uses a configurable component to try to authenticate a user. This allows to drop in own authentication services or e.g. the servlet authentication mechanism. Committed by CZ.
- Made JSPs working in Resin that don't end on *.jsp. Committed by JH. Thanks to Ryder Rishel. See Issue 4934.
- All Reader accessing Avalon components now extend the ServiceableReader instead of deprecated ComposerReader. It pertains the JSPReader, the DatabaseReader and the AxisRPCReader. Committed by JH.
- Added a WebDAV block, with an initial implementation of a modifiable and traversable WebDAV source. Committed by GR.
- Added a DirectoryGenerator implementation on scratchpad working on any Traversable Source. Committed by GR.
- Adding global request lifecycle component. Committed by CZ.
- The cache used by the caching processing pipeline is now configurable allowing to use different caches in different pipelines. Committed by CZ.
- The cache uses now a configured store. This allows to use differently configured caches at the same time. Committed by CZ.
- Reverted the encoding changes in the JSP engine. The fix should be done in the JSPReader, that already contains a TODO. Committed by JH. See Issue 14327.
- Web3: The stylesheets in the examples use Xalan as transformer and work correctly now as XSLTC has problems with the 'rfc' namespace. Committed by RP.
- Changed namespace for Web3RfcTransformer to 'http://apache.org/cocoon/Web3-Rfc/1.0'. Committed by RP.
- ParanoidCocoonServlet can optionally configured with a file containing the classpath. Committed by CZ.
- Configuration cocoon.xconf can now be read from any location. Committed by CZ.
- Flow view can now be in "internal-only" pipelines. Committed by SW.
- Updated FOP to 0.20.5rc3a. Committed by JH.
- Moved WebServiceProxyGenerator + some samples into the proxy block. Committed by JH.
- Updated common-httpclient from CVS checkout of 2003-02-10 to 2.0 beta 2. This hopefully fixes also the bug. Moved it into core because of dependencies. Committed by JH. See Issue 12216.
- Refactored the WebServiceProxyGenerator: "host parameter is null" fixed, replaced deprecated stuff, removed all work arounds (hopefully no longer needed), removed the buggy "<?xml" test, replaced getResponseBodyAsString() with getResponseBody() (but encoding issue is still not fixed). Committed by JH. Thanks to Peter Ross. See Issue 21340.
- Applied patch for implementing exists for the xmldb source. Committed by CZ. Thanks to Tim Goodwin. See Issue 20115.

### Contributors to this release

We thank the following people for their contributions to this release.

This is a list of all people who participated as committers:
Carsten Ziegeler (CZ), David Crossley (DC), Gianugo Rabellino (GR), Jörg Heinicke (JH), Reinhard Pötz (RP), Sylvain Wallez (SW), Vadim Gritsenko (VG).

This is a list of other contributors:
Conal Tuohy, Guido Casper, Peter Ross, Ryder Rishel, Tim Goodwin.

## Version 2.1m3 (July 5 2003)

- Refactored the XPathDirectoryGenerator: provides all the functionality of DirectoryGenerator now, parameter xpath added replacing the xpointer-ish syntax, additional parameter xmlFiles for specifying a pattern for XML files, removed docid attribute on dir:xpath + some minor fixes. Committed by JH.
- Added merged region support to HSSF (= Excel) Serializer. Committed by BRD. Thanks to Danny Mui. See Issue 15150.
- Updated POI from 1.7.0-dev to 1.10.0-dev. Patched code accordingly. Fixed usage of deprecated methods. Committed by JH. Thanks to Alfred Nathaniel. See Issue 21248.
- Web3: Fix extra close element on connectivity loss. Committed by CH. Thanks to Michael Gerzabek.
- SimpleFormTransformer: Make complete form protectable, ability to use more than one transformation with different fixed attributes, optionally let error elements pass, configure prefix, suffix, separator at configuration time, add optional use of form name, formating. Committed by CH.
- Added feature to allow a database action (i.e. delete) not to fail if no row was affected. Formating. Use toString() to convert to String rather than cast. Committed by CH.
- Added SimpleSelector that operates just on Strings. Useful in conjunction with a sitemap variable or input module. Committed by CH.
- Fixed SchematronValidator.evalRule() in xmlforms block: create a relative context instead of an absolute one. This allows to refer to another form field by using relative paths (../password) instead of choosing a common root. Committed by JH. Thanks to Johan Stuyts. See Issue 19104.
- Fixed return of different DirValidity objects on multiple calls on getValidity() in the DirectoryGenerator. Committed by JH. Thanks to Wolfgang Kowarschick. See Issue 20682.
- The DTDs are now completely handled by the catalog entity resolver. The old copies of DTDs at xdocs/dtd/ have been removed. If you are editing the Cocoon xdocs with an xml editor, then point it to the WEB-INF/entities/catalog or catalog.xcat file. If your editor cannot utilise an entity resolver, then get a better editor. Committed by DC.
- Added support for permanent redirects in <map:redirect-to> Committed by UV.
- Fixed some caching (added missing parameters and changed algorithm for cache key generation) and logging issues in the DirectoryGenerator. Fixed the root pattern handling (if not matching directory found leave out the ancestors). Fixed empty src attribute handling. Committed by JH.
- Upgraded to new Axis 1.1 release Committed by GP.
- Adding concept of parent-aware components, making e.g. the usage of selectors with a component manager hierarchy much easier. Committed by CZ.
- Added/fixed internationalization support for HSSFSerializer by setting the output encoding hardcoded to UTF-16. It is obviously only a hack, but so it is at least usable for more people. Committed by JH. Thanks to Maciek Kaminski. See Issue 15365.
- Fixed usage of removed method XSPUtil.include() in ESQL logicsheet <esql:get-xml/> Committed by JH. Thanks to Alfred Nathaniel. See Issue 20658.
- Fixed NPE in SQLTransformer.serializeData() Committed by JH. Thanks to Tony Culshaw. See Issue 14977.
- Added cHTML/iMode "Hello World!" sample (provided by Arje Cahn) Committed by JH. Thanks to Arje Cahn. See Issue 20477.
- Upgraded Xalan (includes XSLTC) from a CVS snapshot (20030506) to version 2.5.1. Committed by BRD.
- Updated ParanoidCocoonServlet, which is now an easy solution to the well-known endorsed library problem (incompatible version of Xalan in Cocoon and in JDK 1.4+). Committed by SW.
- Encoding-related change to the JSP engine: the response charset is now retrieved from the Content-Type, and if not found ISO-8859-1 is used as default (previously UTF-8 was the default). Committed by DC. See Issue 14327.
- The deprecated source implementations are now wrapped by proxies. Modified patch from Jens Lorenz (jens.lorenz@interface-business.de) Committed by CZ. See Issue 11533.
- For non-existent files XSPUtil.relativeFilename() now throws FileNotFoundException instead of NPE. Committed by JH. See Issue 15302.
- Getter for jxcontext_ property added for subclassing reasons. Committed by JH. Thanks to Robert E. Parrott. See Issue 13559.
- Fixing incorrect caching behaviour when internal pipelines are used. Committed by CZ. Thanks to Alex Romayev. See Issue 17623.
- Command-line will no longer add a 'null' suffix to files with an unknown MIME type. Committed by JT.
- The object model and the components stored in the object model are now available via the component context. Committed by CZ.
- Logicsheets: Changed scope of and renamed temporary 'soap:call' XScript variable in <soap:call>. Fixed compilation problem with <xscript-get as="object"> expression. Committed by VG. Thanks to Hugh Leather. See Issue 20159.
- I18nTransformer: support a currency attribute on i18n:number. This allows to take the currency symbol and formatting from one locale and the decimal and grouping separation symbols from another locale. Committed by BRD. Thanks to Michael Enke. See Issue 19894.
- Fixed synchronisation problem in I18nTransformer when retrieving catalogues. Committed by BRD. Thanks to Michael Enke. See Issue 19881.
- Improved XPointer support in the XIncludeTransformer. Meanwhile improved the way xml:base attributes are handled, added support for the xi:fallback element, do XInclude processing on included content, and added XInclude samples. Committed by BRD. See Issue 19423, 15525.
- Dispose the parent Component Manager if it implements Disposable. Happens when the Cocoon servlet shuts down or when Cocoon is reloaded. Committed by BRD. Thanks to Unico Hommes. See Issue 15312.

### Contributors to this release

We thank the following people for their contributions to this release.

This is a list of all people who participated as committers:
Bruno Dumon (BRD), Christian Haul (CH), Carsten Ziegeler (CZ), David Crossley (DC), Giacomo Pati (GP), Jörg Heinicke (JH), Jeff Turner (JT), Sylvain Wallez (SW), Upayavira (UV), Vadim Gritsenko (VG).

This is a list of other contributors:
Alex Romayev, Alfred Nathaniel, Arje Cahn, Danny Mui, Hugh Leather, Johan Stuyts, Maciek Kaminski, Michael Enke, Michael Gerzabek, Robert E. Parrott, Tony Culshaw, Unico Hommes, Wolfgang Kowarschick.

## Version 2.1m2 (May 20 2003)

- Changed namespace for the RequestGenerator to 'http://apache.org/cocoon/request/2.0'. Committed by SMS.
- Changed namespace for XMLForm components to 'http://apache.org/cocoon/xmlform/1.0'. Committed by SMS.
- Extended the ExtendedXLinkPipe to be more extensible. Prepared is html and p3p. Committed by SMS. Thanks to Torsten Knodt. See Issue 19786.
- Patch velocity generator, so that the scope of objects can be specified (request, session, sitemap). Committed by SMS. Thanks to Michael Homeijer. See Issue 14986.
- Fixed namespace handling in XMLDBSource. Committed by GR. Thanks to Ciro Mondueri. See Issue 19978.
- Added XHTML 1.1 DTD to the entity catalog. Added XHTML 1.1 serializer into the sitemap. Explained different XHTML 1.0 serializer options. Committed by VG. See Issue 16003.
- Enable the LDAPTransformer to obtain attribute values from LDAP using various encoding schemes for stored values. Committed by SMS. Thanks to Yury Mikhienko. See Issue 18466.
- Cleaned up MIMEUtils. Committed by SMS. Thanks to Torsten Knodt. See Issue 19885.
- The DirectoryGenerator is now cacheable. A new "refreshDelay" parameter defines the delay between two checks on the filesystem for modified files. Committed by SW.
- Added STX block. (alternative to XSLT) Committed by TC. Thanks to Daniel Fagerstrom. See Issue 19772.
- Throw InvalidContinuationException when flow continuation is not found or not valid, instead of forwarding to hard-coded 'invalidContinuation' page. Committed by VG. Thanks to Tony Collen. See Issue 19526.
- Fixing NPE in JspEngineImpl. Committed by CZ. See Issue 14564.
- Obtain handler and application name from parameters for internal requests if handler could not be resolved from the request object. Committed by CZ. See Issue 14117.
- Delaying getting of the output stream from the http response until it is really needed. Committed by CZ. See Issue 17612.
- Adding new portal framework. Committed by CZ.
- Updated Xalan to a CVS snapshot (2003-05-06), fixes bug with incorrect namespaces in endElement SAX events. Committed by BRD.
- QDox block added, parses Java source code and javadoc tags, includes samples. Committed by BD. Thanks to Bart Guijt. See Issue 16523.
- Fixing the problem with eating spaces in custom transformers. Committed by CZ. See Issue 19683.
- Hello World sample added for the SWF block (although page2swf.xsl contains incomplete font definition). Committed by BD. Thanks to Joerg Heinicke. See Issue 19619.
- Redesign/modularizing the authentication and session framework. Committed by CZ.
- Added 304 support to cacheable pipelines Committed by GR. Thanks to Miles Elam. See Issue 19206.
- DTD comment events are now dropped after parsing by default. Committed by BRD. See Issue 17763.
- When an exception occured in a pipeline containing an XSL, the contents of the pipeline was appended to the error page. Now this only happens anymore when the incremental-processing of Xalan is enabled (which is unavoidable for now). Committed by BRD. See Issue 13186.
- Disabled incremental-processing of Xalan by default. Committed by BRD. See Issue 13186.
- standalone-demo build target added Committed by BD.
- cacheable.xsp sample reworked, did not work in M1 Committed by BD.
- new FOP serializer samples, accessible from the "blocks with samples" page Committed by BD.
- Fixed NPE if ESQL does not get a connection Committed by TC. Thanks to John R. Daily. See Issue 15820.
- Fixed SQL injection vulnerability of DatabaseAuthenticatorAction Committed by TC. Thanks to Geoff Howard. See Issue 14286.
- ESQL "Auto" support for sybase ASE. New database detection method. Committed by TC. Thanks to Neil Bacon. See Issue 18547.
- Removing dependency from the Cocoon core to JTidy. Committed by CZ.
- Sync XML:DB source with 2.0 branch: Conect to the XML:DB once, from the XMLDBSourceFactory. Committed by VG. See Issue 18683.

### Contributors to this release

We thank the following people for their contributions to this release.

This is a list of all people who participated as committers:
Bertrand Delacrétaz (BD), Bruno Dumon (BRD), Carsten Ziegeler (CZ), Gianugo Rabellino (GR), Stephan Michels (SMS), Sylvain Wallez (SW), Torsten Curdt (TC), Vadim Gritsenko (VG).

This is a list of other contributors:
Bart Guijt, Ciro Mondueri, Daniel Fagerstrom, Geoff Howard, Joerg Heinicke, John R. Daily, Michael Homeijer, Miles Elam, Neil Bacon, Tony Collen, Torsten Knodt, Yury Mikhienko.

## Version 2.1-M1 (April 29 2003)

- TextSerializer now can handle absence of root element in the incoming XML. Committed by VG. See Issue 10242.
- 'handle-errors' sections in the sitemap now do not have an implicit generator: any generator can now be used, whereas previously it was implied and produced an XML representation of the error).
  To ensure backwards compatibility, 'handle-errors' sections can have a 'type' attribute to continue the implicit-generator behaviour, but are now to be considered as deprecated.
  A new ExceptionSelector is also available to drive the error-handling pipeline constuction depending on the error type. Committed by SW.
- EsqlConnection no longer implements java.sql.Connection. No jvm dependency any more. Committed by TC.
- Refactored SitemapConfigurable. A sitemap configurable component can now be ThreadSafe and has access to the sitemap configuration at any time through a SitemapConfigurationHolder. Committed by CZ.
- Correcting method names of new CacheableProcessingComponent interface. It is now possible to write components that support the 2.0.x and the 2.1.x caching algorithm. Committed by CZ.
- Setting minimum JDK version from 1.2 to 1.3. Committed by CZ.
- Updating to the latest official Avalon and Excalibur releases. Committed by CZ.
- Enhancements to the CLI to reduce the number of times it needs to render a page. Using the option to prevent checking of extensions, it is now possible to generate a site generating each page only once. Allow the configuration of the CLI using an xconf file. Switch cli to using the Jakarta Commons CLI package. Committed by NKB. Thanks to Upayavira. See Issue 17671.
- Added support for the LogFactor5 graphical log event browser. Committed by MC.
- XMLFileModule: rename 'cachable' to 'cacheable' in configation. Committed by JT.
- FOP serializer's <user-config> relative path now resolves relative to sitemap's directory. All Cocoon URIs are supported too. Committed by VG.
- The CVS repository for Cocoon 2.1 is now called "cocoon-2.1" (no branches, just HEAD). Committed by PF.
- Added support for Pervasive db to ESQL. Committed by TC.
- Changed category for Log logicsheets. Committed by SMS. Thanks to Leszek Gawron. See Issue 16695.
- Extended the HTMLGenerator so that it can handle HTML snippets provided as request parameter or as POST data, passing them through Tidy to ensure well-formedness. Committed by GR.
- New caching cinclude transformer. The cinclude transformer can now cache the aggregated content for a distinct period of time. In addition it can fetch the content in parallel or pre-emptive. Committed by CZ.
- The repository for Cocoon 2.1 is now called "cocoon-2-historical" (the old "xml-cocoon2" repository is deprecated). Committed by PF.
- The "javadocs" build target now links offline to the appropriate JavaDOC repositiories available on the web. Committed by PF.
- Added proxy generator block for remote HTTP-base generation of XML (will deprecate the WSProxyGenerator). Committed by PF.
- Added subrequest processing via the sitemap to the Cocoon flow. Committed by PF.
- Moved the asciiart stuff from the scratchpad into a block. Committed by SM.
- Moved the SendmailAction and the mail-related stuff from the scratchpad into the mail block. Committed by SM.
- Removed the MaybeUploadRequestFactory since we have our own and the less dependencies the better Committed by SM.
- Moving core properties of the build system into a separate properties file. Committed by CZ.
- The "expires" pipeline parameter is honored even by the internal Cocoon cache, i.e. the caching algorithms are overridden if an expires parameter is present and still fresh. Committed by GR.
- Set "Last-Modified" header Committed by TC. See Issue 15401.
- Fixed the ResourceExistAction to return null instead of EMPTYMAP on not existing resources. Committed by TC. Thanks to Alfred Nathaniel. See Issue 17324.
- Refactored the build system. Committed by SM.
- Put the exceptions into esql namespace so the variable named "e" is still available in XSP. Committed by TC. See Issue 17261.
- Now i18n transformer has support for multiple catalogues and can now use "input modules" in catalogue name and catalogue location. Fixed bug with getting content for the translation key in certain circumstances. Fixed bug with accidental removal of translation text in certain circumstances. Committed by DC. Thanks to Bruno Dumon. See Issue 17127.
- Optional 'global' parameter on map:redirect-to when giving a URI. Committed by PAR.
- Make getParentComponentManager in CocoonServlet protected so alternate methods to getting the parent CM can be used. Committed by PAR.
- Optional "depth" attribute on the cocoon log format to control how deep to go in stacktrace reporting. Committed by PAR.
- Do not specify a default to the "class-loader" parameter in JavaLanguage Committed by PAR.
- Add a NonStaticClassLoaderManager that does not keep internal static variables. Useful when putting cocoon.jar outside the WEB-INF/lib directory and have multiple XSP pages of the same name in multiple webapps Committed by PAR.
- Improve default exception handling behavior in CocoonServlet: show exception stacktrace only when log level is INFO or DEBUG, and add exception message to "Not Found" page. Committed by VG. See Issue 16267.
- Use Environment.tryResetResponse() instead of HttpServletResponse.reset() in CocoonServlet to avoid IllegalStateException if response was already committed. Committed by VG. See Issue 16264.
- Add support for Collection objects to the CastorTransformer. Upgrade to the SAX2 API, improve logging, and use SourceResolver to load mappings. Committed by VG. Thanks to Michael Homeijer. See Issue 11861.
- Refactor Main class into two classes, Main and CocoonBean. CocoonBean provides simple programmatic interface to the Cocoon. Committed by VG. Thanks to Upayavira. See Issue 15748.
- Add image dimensions to the ImageReader's cache key. Committed by VG. Thanks to Upayavira. See Issue 16490.
- modular.DatabaseActions: added ability to store FileParts from uploads to "ascii", "clob", "blob", and "binary" columns. Added getSize() method to FilePart. Committed by CH. Thanks to Geoff Howard.
- SAP R/3 connectivity components added. Committed by CH. Thanks to Michael Gerzabek. See Issue 9075.
- Moved block samples to own category, modified build system to merge .xsample files to block-samples.xml. Committed by CH.
- Renaming components section for pipeline implementations to "pipes" and "pipe". Committed by CZ.
- Updated to latest versions of excalibur sourceresolve and xmlutil. Committed by CZ.
- Patch IOUtils to recognize '..' in Path Committed by SMS. Thanks to Michael Enke. See Issue 14700.
- The "mime-type" attribute on <map:read> and <map:serialize> is now expanded if it contains sitemap variables. Committed by SW.
- InputModule to access XMLForm instances. Committed by CH.
- (modular) DatabaseAction: added ability to use arbitrary path separators instead of "." (e.g. "/"), added ability to count rows from 1, added documentation. Committed by CH.
- Created additional isolation level for some OutputModules. Committed by CH.
- Added LinkRewriterTransformer. Committed by CH. Thanks to Jeff Turner. See Issue 15611.
- Added support for expiring continuations. Committed by OP. Thanks to Michael Melhem.
- Fixed the way complex Java objects are passed from the control flow to the XSP view layer. Committed by OP. Thanks to Ugo Cei.
- Added ant-contrib library with some optional ant tasks and started cleaning up the build system. Committed by CZ.
- ZipArchiveSerializer now accepts inline content for entries of the zip archive and not only source URLs. Committed by SW.
- ImageReader extends now ResourceReader and therefor the "expire-time" parameter is now "expires". Also removed the setting of the byte range header for on-the-fly images. (did not support it anyway) Committed by TC.
- Moved the byte range support from the ByteRangeReader in scratchpad into the ResourceReader. Added the optional parameters "buffer-size" and "byte-range". Byte range support is enable by default. Committed by TC.
- Move the image inspection into a ImageUtils class Committed by TC.
- Major cleanup of the ImageDirectoryGenerator, removed the RuntimeExceptions, added support for the JPEG comment marker Committed by TC.
- Added reader user documentation section, including readers documentation; added BrowserSelector, and HostSelector documentation, plus template-selector usable as template for writing more selector docs; added WildcardURIMatcher, and WildcardHeaderMatcher, plus template-matcher usable as template for writing more matcher docs. Committed by BH.
- Fixed the esql:more-results tag for non-JDBC limit methods Committed by TC. Thanks to Antonio Gallardo.
- Moved all classes marked @deprecated to the src/deprecated directory. Since Many classes are still a dependency for the core, while this is fixed the build process still copies them with the core during compilation. To compile with the deprecation separation, do "build -Ddeprecate=true". Committed by NKB.
- Moved code to new blocks: profiler, velocity. Committed by NKB.
- Update XML Serializer, HTML Serializer , and Text Serializer documentation, added XHTML Serializer documentation in the serializer user documentation section. Committed by BH.
- Update SVG Serializer, SVG JPEG, and SVG PNG documentation, added SVG TIFF documentation in the serializer user documentation section. Committed by BH.
- XMLFileModule checks result of SitemapSource.getValidity() as it may return null Committed by BH. Thanks to Jeff Turner. See Issue 15609.
- Integrated the validation targets into the build ("validate-config" and "validate-xdocs") also still available at the command-line. Validation happens automatically unless you switch it off. See document XML Validation Facilities. Committed by DC.
- Postgresql 7.3: LIMIT x,y no longer supported. Added new class for postgresql-old limit method that still uses LIMIT x,y while postgresql uses the LIMIT x OFFSET y syntax which has been used by postgresql for some time now. Committed by CH. Thanks to Michael Enke. See Issue 15064.
- Created .src/deprecated directory to contain all deprecated classes. This will help in maintaining Cocoon free from deprecated classes. Started by moving some deprecated caching stuff. Committed by NKB.
- Moved code to new blocks: html, php, lucene, bsf Committed by NKB.
- Now module.xml is named project.info.xml Committed by NKB.
- Extension to sendmail.xsp: lists for sendmail:cc Committed by CH. Thanks to Frank Ridderbusch. See Issue 15005.
- Added container/form-encoding init-params to web.xml Committed by CH. Thanks to Artur Bialecki. See Issue 14835.
- Fixing various inefficient logging calls. Committed by CH. Thanks to Stuart Roebuck. See Issue 15136.
- Make all "meta" modules ThreadSafe Committed by CH.
- Perform correct source resolution in XMLResourceBundle. Now i18n transformer can obtain dictionaries using any supported source (e.g. 'cocoon:/'). Committed by KP. Thanks to Michael Gerzabek. See Issue 15431.
- Added Greek translation, thanks to Stavros Kounis (gounis.at.osmosis.gr). Corrected Armenian translation to be real Unicode and be readable without additional plug-ins (on Win). Committed by KP.
- Updated the XML:DB Source. Now it will accept, in cocoon.xconf, optional authentication attributes, called "user" and "password". Committed by GR.
- New transformer extracts fragments to documents and stores them using an OutputModule. Tags that start fragment are configurable. Committed by CH.
- New output module puts everything in a map in a request attribute. Committed by CH.
- AbstractJXPathModule / JXPathMetaModule default to lenient mode i.e. do not throw an exception on unsupported attributes but return null instead. Made this a configuration option. Committed by CH.
- XMLMetaModule returns DocumentWrapper instead of String. Committed by CH.
- Wrapper for org.w3c.dom.Document that implements XMLizable and provides a useful toString() method. Committed by CH.
- SimpleMappingMetaModule: added feature to remove a prefix / suffix. Committed by CH.
- "meta" input modules: configuring a different module locally did not override the default one in all circumstances. Committed by CH.
- input.xml: renaming mixed up called template names from logicsheet-util.xsl Committed by CH.
- SimpleFormTransfomer: fixed error tags when no validation data available. Committed by CH.
- Moved the sample classes and confs to the samples block. Committed by NKB.
- Cleaned up the esql logicsheet and helper classes. Created classes for db specific stuff. Improved the limit/paging features. Committed by TC.
- Moved the jsp components to the jsp block, using hand-made-to-be-cleaned mock objects for the weblogic specific imports. Had also to move some definitions from the cocoon roles and xconf file. This moving of the blocks is indeed cleaning the core! :-) Committed by NKB.
- Updated block build system to compile and use mock objects in the "mocks" subdir of the blocks if present. Committed by NKB.
- New InputModule to access contents of an XMLFile using JXPath, based on patch from Jeff Turner (jefft.at.apache.org). Committed by CH.
- Moved endorsed libs in ./lib/endorsed, so that they can be added in the build file easily as java jvm args, or in the future copied to the webserver or Java endorsed dir. Currently it enables Jetty to run easily in 1.4 JVMs without need to copy libs to the endorsed dir. Committed by NKB.
- Added jetty webserver for fast and easy Cocoon test and evaluation. To run launch "build run" and point the browser to http://localhost:8888/ Since it seems there is a bug somewhere, ATM point to http://localhost:8888/documentation/index.html to see the page. Committed by NKB.
- Removed ./tools/build-i.xml and moved the interactive targets in main build. Removed ./tools/build-s.xml and removed all references to scratchpad builds (not used). Committed by NKB.
- Removed JTidyTask that was not used and switched to using the Ant input task from UserInputTask. Committed by NKB.
- Added useexternalfile="yes" attribute makes Ant collect all package names in a temporary file and give that to Javadoc, thus going round the Wintel long command truncation issue. Committed by NKB. See Issue 14795.
- Moved LDAPTransformer to a block called "naming". Committed by NKB.
- New build target "validate-schematron" to conduct build-time validation (currently only the sitemaps) using RELAX NG grammars with embedded Schematron rules. This uses Schematron stylesheets from Rick Jelliffe and Academia Sinica Computing Center, Taiwan. Committed by DC. Thanks to Colin Paul Adams. See Issue 14581.
- Enhanced the RELAX NG grammar for sitemap.xmap files and added embedded Schematron rules. Committed by DC. Thanks to Colin Paul Adams.
- Fix setOutputStream throwing IOExeption in XMLSerializer, and TextSerializer. Committed by BH.
- Make the CLI report errors correctly to the screen when a page generation fails. Committed by NKB.
- Moved POI to a block. Applied patch without moving the core elementprocessor classes in the block. Committed by NKB. Thanks to Philipp Schmidt. See Issue 12975.
- When a part of a pipeline aggregation fails, cocoon will no more silently return without reporting an error. Now, upon request of an erroneous page, the result is that I can see all parts, that have been processed so far on the screen and I see the error infos positioned at the bottom of the page. Committed by NKB. Thanks to Hussayn Dabbous.
- Added 'query' sitemap parameter to SearchTransformer. Added configuration parameters to SimpleLuceneXMLIndexerImpl for choosing the content-view and which tags you want stored as fields by the indexer. Added field storage implementation to LuceneIndexContentHandler. Committed by JQ.
- New build target "validate-xdocs" to conduct build-time validation of core xml documentation (call it manually with: ./build.sh validate-xdocs). Committed by DC.
- Added SystemPropertyModule input module to enable environment variables in sitemap attributes. E.g.: <map:transform src="{system-property:user.home}/style.xsl"> Committed by KP.
- Added resource bundle component interfaces to allow different implementations to be used for i18n. Committed by KP.
- Extended implementation of i18n transformer to allow markup in translations, inline translations (conditional processing) and named parameters. Now i18n transformer is cachable, this will affect on dynamic markup, e.g. i18n:date-time. WARN: The namespace of i18n markup is changed to "http://apache.org/cocoon/i18n/2.1". i18n samples are updated to demonstrate the new features. Committed by KP. Thanks to Matthieu Sozeau.
- XMLForm Howto to reflect the fact that there is no need for manual handling of unchecked check-boxes. Committed by IAI.
- Updated Xalan to 2.4.1 Committed by IAI.
- Renamed the AbstractMethodAction into AbstractMultiAction and moved it from scratchpad into the maintrunk. Using it helps reducing the amount of custom actions for a webapp. Committed by TC.
- Added RELAX NG grammar for sitemap.xmap files and removed old draft sitemap DTD. Committed by DC. Thanks to Colin Paul Adams.
- Started moving database related stuff (actions, transformers, readers) as well as HSQLDB to a new blocks. Samples have not yet moved to new block, datasource declaration has. Committed by CH.
- Updated the draft DTD for sitemap. Committed by DC. Thanks to Colin Paul Adams.
- Added a draft W3C XML Schema for sitemap. Committed by KP.
- Removed deprecated notification classes in org.apache.cocoon.* and in org.apache.cocoon.sitemap.* and the deprecated methods in org.apache.cocoon.components.notification.Notifier. Committed by NKB.
- Added support for sitemap variable anchors {#name:variable}. This introduces a new "name" attribute for matchers and actions Committed by TC.
- Added support for direct access of root level sitemap variables {/1} Committed by TC.
- New pipeline hint attribute to allow pipeline components (i.e. map:generate, map:transform and map:serialize) to hold some pipeline-specific parameters. The first usage of this feature is to drive manual cache points for the CachingPointProcessingPipeline. Committed by SW. Thanks to Michael Melhem. See Issue 12780.
- Removed all references to Loggable in favor of LogEnabled (this includes references to common abstract classes as AbstractLoggable and AbstractDualLogEnabled) Committed by GP.
- Added support for using Avalon components as Axis service objects with the AxisRPCReader. Committed by MC.
- Enhancing cinclude transformer with configuration possiblities, lie POST requests and flexible parameter handling. Committed by CZ.
- Enabled the RTF serializer and SWF serializer as block. Committed by SMS. Thanks to Philipp Schmidt. See Issue 12799.
- Enabled the chaperon text parser as block. Committed by SMS.
- Added initial support for compilation of Cocoon blocks, and migrated Fop and Batik classes and configuration to the src/blocks dir. Blocks that need Avalon components not yet supported. Committed by NKB.
- Added support for Avalon Excalibur instrumentation. Committed by MC.
- Added CascadingIOException to wrap other exceptions when an IOException is thrown. Committed by CZ.
- Added configurable buffering of the output. This removes all the problems with error handler and already committed responses etc. A new pipeline parameter "outputBufferSize" controlls the behaviour. Committed by CZ.
- Added AxisRPCReader to scratchpad. This reader essentially allows you to serve SOAP requests from your Cocoon application. Sample webapp with status page is also included. Committed by MC. See Issue 12304.
- Updated Jakarta Commons HTTP client jar. Fixes problems with SOAP XSP taglib. Committed by MC. See Issue 12236.
- Added new ComposerReader class with various Reader refactorings. Committed by MC. See Issue 12122.
- Don't explicitly redirect to the cocoon:/ pipeline in AbstractInterpreter.forwardTo(), do it instead in system.js. Committed by OP. Thanks to Ramy Mamdouh.
- Fixed code generation problem in the jpath.xsl. Patch from. Committed by OP. Thanks to Per-Olof Noren.
- New user login and preferences sample to show the control flow layer. Committed by OP.
- The control flow layer can now save the global JavaScript scope in the servlet session object. This allows the value of global variables to be saved between different top-level function invocations. Committed by OP.
- Profiler components extended to store intermediate SAX fragments, and also the some informations about the environment, thanks to Bruno Dumon. Committed by SMS.
- Made Commandline Cocoon (Main.java) verbose output (-V option) less cluttered and grouped the log and output methods. Committed by NKB.
- Commandline Cocoon (Main.java) now doesn't stop anymore on broken links, but inserts an error page instead and correctly notifies it in the broken links file if requested. Committed by NKB.
- Add the methods 'copy', 'move' and 'delete' to the WriteableSource interface. Committed by SMS.
- Added the Chaperon components, examples and docs into the main tree. Committed by SMS.
- Replaced implementation from Loggable by LogEnabled to use the Avalon Logger instead of the LogKit Logger. Committed by SMS.
- Moved the SWF generator and serializer from the scratchpad into the main trunk. Added a hello-world sample for SWF Committed by TC.
- Added a new PDF serializer. iText seems to be good and fast alternative with many features iText also provides support for RTF and HTML Committed by TC.
- Updated xerces, xalan, xml-apis jars to their latest CVS versions. Especially due to some xerces bugs in the 2.0 release Committed by TC.
- Made docs target use logging to file via the logkit.xconf and added informative System.out messages for the commandline cocoon (Main.java). Committed by NKB.
- Allow parent component manager to be LogEnabled. Committed by CZ. Thanks to Leo Sutic.
- Extended pipeline handling for CachingPoint caching algorithm. Committed by CZ. Thanks to Michael Melhem. See Issue 10284.
- New samples for HSSF Serializer. Committed by NKB. Thanks to Andrew C. Oliver.
- This adds get-bigdecimal to ESQL (see java.math.BigDecimal for details as to why you need BigDecimals). Committed by NKB. Thanks to Andrew C. Oliver. See Issue 8058.
- The SQL Transformer does those nastly looking exponents for large values. By calling "getBigDecimal()" instead of getObject we can call an overridden toString and avoid those nasty things. Committed by NKB. Thanks to Andrew C. Oliver. See Issue 8056.
- Python language support for the XSP pages. Committed by VG.
- Python programming language using jython interpreter. Committed by VG.
- New SwitchSelector that uses a common context object for all map:when tests. Committed by SW. Thanks to Marcus Crafter.
- Fixed the use of roles in TraxTransformer which was incorrect. Now it sets the factory explicitly in the XSLTProcessor component without using any special avalon component management capacity. Committed by SM.
- Uniformed the configurations used by the Avalon XSLTProcessor component and the TraxTransformer to specify the TransformationFactory to use. Committed by SM.
- Applied patch to add javascript support for the mozilla browser for transforming xml to html. Committed by SMS. Thanks to Andrew Timberlake. See Issue 9521.
- The OASIS Catalog and the entities (DTDs, entity sets, etc.) have moved to WEB-INF/entities and the CatalogManager.properties file has moved to WEB-INF/classes Committed by CZ.
- New Cocoon Generator. Allows Embedding One Web Site in Another. WebServiceProxyGenerator Demo. Committed by IAI.
- XMLForm framework. Allows client independent form handling. Committed by IAI.
- Added "userhomes" in the webapp, that automounts the sitemaps found in *nix user homes. To remove it, just delete the dir. Committed by NKB. Thanks to Tim Myers.
- Added support for actions and In-/OutputModules to the JavaScript Flow. Caveat: Modifications of the Redirector object are ignored. Committed by CH.
- Support for writing xLOBs to database through modular.DatabaseActions. Does not include a required InputModule that returns a JDBCxlobHelper to be passed to the action. Committed by CH.
- New DatabaseAction: DatabaseQueryAction. It works like the other modular DatabaseActions but does not auto-generate the query. The query has to be provided conforming to PreparedStatement syntax. Unlike the name might suggest, it can be a select, update, or delete query. Committed by CH.
- Updated SourceWritingTransformer. Changed the tag set so that source:write and source:insert each share the same way of taking parameters. Added results from source:insert tag like source:write. Changed the implementation of the source:write tag so it now buffers to DOM Fragment like source:insert. Added new tests, updated slash-edit to use new tags. Committed by JQ.
- Removed (long time deprecated) matcher and selector factories. Use appropriate matchers and selectors instead. Committed by VG.
- Updated the profiler code, removed the need of SAXConnectors. Committed by CZ.
- Encourage people to help with the refactoring of Cocoon samples. Provide a refactoring guidelines document. Committed by DC.
- Moved the old sample for Catalog Entity Resolver in to the new webapp/samples structure. Added new sample for Simplified DocBook DTDs configuration. Added section for other miscellaneous samples. Committed by DC.
- Moved linkstatus sample and LinkStatusGenerator to core from scratchpad; added a link to test the documentation links on the Cocoon demo webapp frontpage. Committed by NKB.
- ESQL: Added support for reading BLOBs from database. Committed by CH. Thanks to Roger I Martin PhD.
- DatabaseActions, changed behaviour: Tables are used in order of appearance in tableset, before they were used in order of appearance in tables section. Committed by CH.
- Removed XT XSLT transformer. Committed by VG.
- Added custom component configuration to map:pipelines section. Committed by CZ.
- Added global parameters to map:pipelines section. Committed by CZ.
- Changed modules to use objectModel instead of just the request object. Committed by CH.
- Modular database actions now don't inherit from original database actions anymore. Some custom datatypes got lost during this process as they should be handled be specialized input modules instead. Committed by CH.
- Replaced event pipeline and stream pipeline with one single component, the processing pipeline. Added configurable pipelines to sitemap. Committed by CZ.
- Added an "expires" directive to map:pipeline in order to manually set an "Expires:" HTTP header following Apache's mod_expires syntax. Committed by GR.
- Modified check-jars.xsl to dynamically create the jars.xml for documentation. Need to copy the generated file over the static placeholder... Help - where to in the build.xml? Committed by JM.
- ResourceReader gets the mime type from the source now, instead of declaring the mime type in the sitemap. Committed by GF. Thanks to Stephan Michels.
- Moved mod-db stuff from scratchpad to trunk. Committed by CH.
- Util logicsheet: get-source and include-source tags. E.g. to include XHTML generated by another pipeline as email. Committed by CH.
- Esql: multiple results can now have different result blocks, position determines matching result position. Last one is default if more results arrive. call-results now evaluated after other results to comply with JDBC specs. Committed by CH.
- Added Jakarta Slide Source components and examples in scratchpad. Committed by NKB. Thanks to Stephan Michels.
- Added continuations-based control flow support to Cocoon. It is currently based on a modified Rhino JavaScript implementation with continuations support, courtesy of Christopher Oliver: ftp://ftp.primaryinterface.com/pub/rhino. Committed by OP.
- Added size attribute and sorting to directory-generator. Committed by JM. Thanks to Frank Ridderbusch. See Issue 8531.
- Changed error behaviour in esql: all exceptions now result in error-results being evaluated. If error-results is present, exceptions are caught, otherwise a processing exception is thrown. Committed by CH.
- Complete rewrite of grouping code in esql (footer still not supported), group-on available through esql:param Committed by CH.
- Esql fix for get-columns with PostgreSQL and getObject not working with all datatypes Committed by CH.
- CLOB support in esql logicsheet, esp. in get-xml Committed by CH.
- changed the LanguageException and the JavaLanguage to expose more than just the compilation error. Now it also shows the actual code from the repository +/- a few lines around that error. Committed by TC.
- restructured the ProgramGenerator and added option "watchSource" (true/false). If turned on you can make changes inside the generated source code (inside the repository) and the ProgramGenerator will compile them for you. This eases XSP debugging a lot! Turned off (same behaviour as before) by default. Committed by TC.
- Fixed esql getBytes() behaviour Committed by TC.
- Integrated the new Avalon Excalibur Store and StoreJanitor components. This deprecates the Cocoon version. Committed by CZ.
- Added formula support for HSSF Serializer. Committed by GF. Thanks to Andy Oliver.
- Integrated the new Avalon Excalibur XSLT Processor. This deprecates the Cocoon version. Committed by CZ.
- Locale selection for I18nTransformer changed to use parameter set from sitemap. The old behavior (implicit locale selection using LocaleAction) is not supported any more. i18n samples are refactored, redesigned, new translations are added. Committed by KP.
- Integrated the new Avalon Excalibur Source Resolving architecture. This deprecates the now obsolete Cocoon source resolving. Wrapper classes etc. have been provided for an easy upgrading. In addition the Excalibur XMLizer is added. Committed by CZ.
- Added the sunShine contribution from S&N AG, Germany (http://www.s-und-n.de). This contribution consists of a session management framework, an authentication framework and a portal engine. Committed by CZ.
- Changed default persistence store to the JispFilesystemStore. To switch back to FilesystemStore, remove jisp.jar and rebuild Cocoon (or simply edit cocoon.xconf) Committed by VG. See Issue 10697.
- RequestGenerator does optionally output request parameters. Committed by CZ. Thanks to Ilya A. Kriveshko.
- Output extra locator info if included Throwable of ProcessingException is SAXParseException or TransformerException. Committed by BH.
- FIX NPE in org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipeline, if content is malformed, and there exists an cached response the validity[] contains null entries. Committed by BH.
- Fix CocoonCrawlerImpl, check if contentType is not null, and always close the BufferedReader at the end. Committed by BH. Thanks to M. Kristian.
- Added JXPath based input modules for Request and Session properties. Demonstration sample is also added. RequestContextPathModule and RequestURIModules are obsolete now and will be removed. Committed by KP.
- Updated the Jisp store system to the new Jisp version and added the missing clear() and keys() methods. Committed by GF.
- Added a more sophisticated example in samples/webserviceproxy/cocoonhive. Demonstrates a small virtual portal which embeds functionality from Amazon and OpenWiki. Committed by IAI.
- XMLFormTransformer now saves a list of referenced model properties, which is later used to automatically populate with default values properties which were not addressed in the http request (like unchecked checkboxes). This applies to session scope forms only. Committed by IAI.
- The resource reader now checks if for the same URI the same source is read in order to test the if-last-modified header. This behaviour can be turned of (for more performance) by the quick-modified-test. Committed by CZ. See Issue 12915.

### Contributors to this release

We thank the following people for their contributions to this release.

This is a list of all people who participated as committers:
Bernhard Huber (BH), Christian Haul (CH), Carsten Ziegeler (CZ), David Crossley (DC), Gerhard Froehlich (GF), Giacomo Pati (GP), Gianugo Rabellino (GR), Ivelin Atanasoff Ivanov (IAI), John Morrison (JM), Jeremy Quinn (JQ), Jeff Turner (JT), Konstantin Piroumian (KP), Marcus Crafter (MC), Nicola Ken Barozzi (NKB), Ovidiu Predescu (OP), Peter Royal (PAR), Pierpaolo Fumagalli (PF), Stefano Mazzocchi (SM), Stephan Michels (SMS), Sylvain Wallez (SW), Torsten Curdt (TC), Vadim Gritsenko (VG).

This is a list of other contributors:
Alfred Nathaniel, Andrew C. Oliver, Andrew Timberlake, Andy Oliver, Antonio Gallardo, Artur Bialecki, Bruno Dumon, Colin Paul Adams, Frank Ridderbusch, Geoff Howard, Hussayn Dabbous, Ilya A. Kriveshko, Jeff Turner, Leo Sutic, Leszek Gawron, M. Kristian, Marcus Crafter, Matthieu Sozeau, Michael Enke, Michael Gerzabek, Michael Homeijer, Michael Melhem, Per-Olof Noren, Philipp Schmidt, Ramy Mamdouh, Roger I Martin PhD, Stephan Michels, Stuart Roebuck, Tim Myers, Ugo Cei, Upayavira.

## All Committers

This is a list of all people who have ever participated as committers on this project.

- Donald Ball (DB)
- Nicola Ken Barozzi (NKB)
- Ross Burton (RB)
- Mark Butler (MB)
- Ugo Cei (UC)
- Tony Collen (ATC)
- Marcus Crafter (MC)
- David Crossley (DC)
- Torsten Curdt (TC)
- Bertrand Delacrétaz (BD)
- Bruno Dumon (BRD)
- Daniel Fagerstrom (DF)
- Gerhard Froehlich (GF)
- Pierpaolo Fumagalli (PF)
- Antonio Gallardo (AG)
- Leszek Gawron (LG)
- Simone Gianni (SG)
- Ralph Goers (RG)
- Vadim Gritsenko (VG)
- Christian Haul (CH)
- Jörg Heinicke (JH)
- Jorg Heymans (JHS)
- Unico Hommes (UH)
- Geoff Howard (GH)
- Bernhard Huber (BH)
- Ivelin Atanasoff Ivanov (IAI)
- Jason Johnston (JJ)
- Grzegorz Kossakowski (GK)
- Matthew Langham (ML)
- Berin Loritsch (BL)
- Stefano Mazzocchi (SM)
- Michael Melhem (MM)
- Stephan Michels (SMS)
- John Morrison (JM)
- Alfred Nathaniel (AN)
- Steven Noels (SN)
- Christopher Oliver (CO)
- Giacomo Pati (GP)
- Max Pfingsthorn (MPF)
- Konstantin Piroumian (KP)
- Marc Portier (MPO)
- Ovidiu Predescu (OP)
- Jean-Baptiste Quenot (JBQ)
- Jeremy Quinn (JQ)
- Reinhard Pötz (RP)
- Gianugo Rabellino (GR)
- Ricardo Rocha (RR)
- Peter Royal (PAR)
- Paul Russell (PR)
- Andrew Savory (AS)
- Diana Shannon (DS)
- Davanum Srinivas (DM)
- Jeff Turner (JT)
- Upayavira (UV)
- Sylvain Wallez (SW)
- Carsten Ziegeler (CZ)
- Volunteer needed (open)