]> Test, test, test :-) Complete (means put all allowed constructs and combinations) the lint/sitemap.xmap file. Enhance the RELAX NG grammar for sitemap. For 2.2: Views must start not from the first encountered label, but from the last one (see http://marc.theaimsgroup.com/?l=xml-cocoon-dev&m=101784499622172) Finish the design and contracts of flow. Add more tests and samples and documentation. Finish the refactoring of samples See info at BRANCH_2_1_X/src/documentation/xdocs/plan/samples.xml ( refactoring guidelines document). Finish moving the scratchpad stuff in main trunk. Ensure that recyclable components always release their references, even when they are not pooled. The easiest way is to make them disposable and clean up in dispose. Lucene is writing info to stdout when searching. Redesign FragmentExtractorGenerator/Transformer so that it works on a clustered server: store fragments in the session rather than in a local store.
This couldn't work, because if you working with caching pipelines, you cannot be sure that the entries are in the session(Stephan).
Remove ContainerWidget concept from cforms.
Starting with 2.1.12 the minimum required Java version will be 1.4.2. JCR block: Missing modCount attribute in JCR sample content. Updated ant to 1.7.1. This ant detects correctly java 1.6. Change HostSelector to be case-insensitive according to RFC3986 section 3.2.2. Handle case in ApplicationUtil.isUserInRole(..) when User is null. Forms: MultiValueField list-type="double-listbox" does not work correctly in ajax enabled forms. StripNameSpacesTransformer does not strip namespace prefix of attributes ImageOp block: If parameter width or height in resize operation is zero, use the original image size. If both are zero, then handle as no-op. Set default values to zero to allow using that feature by leaving out the parameters. ImageOp block: Addition of "allow-enlarge" parameter to resize operation. Mail block: Allow mime-type to explicitly set a charset as in mime-type="text/html;charset=UTF-8". Mail block: Make a difference between plain text mails and mails that have a multi-part body. If the mail-body has set the mime-type="text/plain", then the message body isn't send as body part but as simple content. That avoids getting a plain text-message without attachment being marked as mail with attachment. Core: Cocoon's pipeline buffer increases from an initial buffer size of 8192 bytes to the configurable flush buffer size rather than allocating the complete buffer beforehand. POI Block: formatted style regions stop creating style at 2000 rows. Eventcache: Events are persisted and restored and sample works POI Block: Update to poi-3.0.2. HTML: Fix encoding issue in NekoHTMLTransformer. Fix similar issue in NekoHTMLGenerator when reading a request parameter value. Forms: Fix @id handling on fi:group/fi:struct element in conjunction with AJAX requests. Core: Fix CachingOutputStream not caching all content or leading to ArrayIndexOutOfBoundsException when using write(byte[], int, int). Core: Set the default output buffer size of the pipeline to 1,048,576 (1 MB) rather than -1 (complete buffering) to avoid potential OutOfMemoryErrors on too large output. Core: In Cocoon 2.2 the org.apache.cocoon.environment.Session interface is deprecated, and the return type of getSession() changes to vanilla javax.servlet.HttpRequest. For migrating from Cocoon 2.1 to 2.2, replace in your custom code all calls to getSession() by getCocoonSession(). That allows for a common codebase usable on both version. Core: Allow multiple file uploads of the same field name. If there are multiple file uploads Request.get(String) will return a Vector. If there is only one file upload it will return the Part as it did before. This is now the same behavior as for inline parts. Core: Update commons-lang to 2.4. Forms: Fix suggest list for which the initial value was not displayed. Core: Fix synchronization issues in ContinuationsManager implementation. Forms: Dispatch only one TreeSelectionEvent on multiple selection rather than one event for each selected tree item. Core: Fix clean up of continuations. Javaflow: Minimize the data that's stored with ContinuationContext to limit the Continuation's memory footprint. Forms: Widget Label is not Show/Hide when we change the widget state in ajax mode. Use current HTTP request as a pipeline lock object instead of current thread. Resolves deadlock when request is processed in multiple threads. Core: Close streams properly after copying Parts (MultipartParser). Allow to access InputStream of PartInMemory multiple times. Portal: Remove user management tools. Core: Fix flow scripts reload check logic. Forms: CAPTCHA <input> element should have autocomplete="off" Lucene block: Added optimize-frequency configuration parameter to LuceneIndexTransformer. This gives a huge performance increase on large Lucene indexes when not optimizing after every update. Forms Block: Fix ambiguous rule issue with Forms stylesheets when using Saxon. Validation Block: Fix error in JaxpResolver#resolveResource(..) where publicId and systemId where swapped. Forms Block: Fixed concurrency issue in form definition builders code. If you have custom widgets, please implement WidgetDefinitionBuilder.buildWidgetDefinition(Element, WidgetDefinitionBuilderContext) method. Do not use WidgetDefinitionBuilder.buildWidgetDefinition(Element) method, it is intended to be implemented only by the top level widget (Form). Add capability to IncludeTransformer to strip the root element from included XML content. Auth Block: Fix error in PipelineSecurityHandler which prevented additional data to be added to the user properties. Fix javadoc in PropertySettings. RunningMode is not supported in 2.1.x Core: XMLByteStreamCompiler hard-coded limits of 0xffff Strings prevents large XML documents from being handled in Cocoon. Created XPathXMLFileModule to address issues with XMLFileModule. XPathXMLFileModule supports variable replacement and caching of documents in ehcache and expressions as soft references. Forms: Allow Ajax submission of forms with empty upload field. Portal: New SiteProfileManager providing the same profile to several users based on a configured key. Portal: Some memory consumption improvements for the user profiles. Core: Update xalan to 2.7.1. Sitemap: Redirect to cocoon:/foo did not work in sub-sitemap when it is in same directory as the root sitemap. Core: Update xercesImpl to 2.9.1. Event Cache Block: Restore serializability of persistent cache when using event-aware cache. Mail Block: Fix setting of URL message body. <map:serialize status-code="{}"/> supports variable resolution. XMLDB Block: Fix collection URLs in XMLDBSource. Fixes URL resolution and 'Mount DB' sample. XMLDB Block: Update Xindice to 1.1 release. POI Block: Color string normalization. build.sh: Allow for quoted shell arguments containing spaces. CForms: Handling of empty responses in AJAX Forms with IFrame transport. Ajax: ajax/common.js makes use of deprecated dojo.animation.Timer 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). Core, QDox: Fixed getInputStream() in XModuleSource and QDoxSource: Set up XMLSerializer in a component way, i.e. retrieve it from ServiceManager. Dojo toolkit upgraded to 0.4.3 version. It contains fix for security bug. See http://dojotoolkit.org/releaseNotes/0.4.3. I18n (ParamSaxBuffer): when substitution params like {0} are split over multiple character events, do not write out extra garbage characters. Portal: Marked PreparePortalAction, CopletSetDataAction, and ObjectModelAction ThreadSafe Core: Update log4j to 1.2.14, commons-io to 1.3.1, commons-lang to 2.3 and jakarta-regexp to 1.5. CForms: MultivalueEditorWithSuggestion doesn't add values to the listbox on Internet Explorer. CForms: Submit widget now inherits validate attribute value from the ancestor widget, if it is specified. Serializers block: Correctly handle content of script and style tag as cdata for html. CForms: MultivalueEditorWithSuggestion, extended multivalueeditor widget with suggestion list. CForms: CFormsSuggest widget does not implement the onValueChanged event. Core: EHCache now uses the configured cache directory instead of using the default of java.io.tempdir. Core: Update ehcache to 1.2.3. Template block: Add missing toString implementation to TemplateObjectModelHelper.ParametersMap. Portal block: CocoonPortlet needs to allow overriding servlet-path parameter with preferences. CForms: Fix "Serialization parameter {indent} must have the value yes or no" error in Form.prototype.saveXML() when using Saxon. Core: Exipres caching pipeline can now cache the content forever (by setting cache-expires to a negative value). 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. Core: Fix deadlock in caching pipeline when used in combination with include transformer. 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). 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. Portal block: Fix truncation of included portlets in html include serializer. Auth block: Fix checking of double logins for the same security handler. HSQLDB block: Fix startup problems with newer HSQLDB versions and upgrade to 1.8.0.7. Core: Check for reloading of javascript files loaded by cocoon.load(). Forms block: Add method to create binding from DOM tree. Core: Fix threading issue with internal cache in ResourceReader. POI Block: Prevent NPE in ElementProcessorSerializer on characters before first startElement. 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)
Portal Block: Applied and improved patch for reloading bookmarks based on their (file) validity. Portal Block: Fix handling of missing special parameters for forms in NewEventLinkTransformer. Auth Block: Make isUserInRole a static method. Fixes to forms and ajax samples.
Core: Allow dynamic loading of JavaScript objects even when scope is locked. CForms: Always set viewData for flow script functions (if it's not available set it to null). Javaflow OJB Sample: Fix "No method 'showEmployee' found". The JavaFlow OJB sample overwrote the first entry on insert instead of adding a new entry. This has been fixed. Core: Removed the buggy WildcardHelper. Use the new improved WildcardMatcherHelper. Profiler block: Add statistics component. Databases block: Add support for iBatis to use configured Excalibur data sources in iBatis. CForms: The filterfield widget was not defined for the forms manager. CForms: Numeric based suggestion list should initialzate to the corresponding suggested text. 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. Updated xercesImpl to 2.9.0 and xml-apis to 1.3.04. 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.
Core: Add ability to pre-load i18n catalogues in I18nTransformer. Removed references to defunct cache-on-startup configuration. 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". Mail: Improve MailSender interface: added setBody(Object), setBodyURL methods, deprecated setCharset, setBody(String), setBodyFromSrc, setBodyFromSrcMimeType methods. Support byte[], InputStream as body and attachment objects. Mail: Log exceptions from mail attachments - JavaMail does not preserve cause exception. Lucene: Add analyzer parameter to SearchGenerator as stated by the docs. Databases: Added support for the SQL:XML tag in SQLTransformer. Validation: Replaced references to constant declarations in javax.xml.XMLConstants, which are not in the official API. CForms: Tree widget not handling on-selection-change events correctly. XSP: SOAPHelper does no longer accept only replies with an XML declaration. Updated commons-lang to 2.2 and bsf to 2.4.0. CForms: Add a name attribute to a booleanfield in output mode to make it easily accessible in JavaScript. CForms: BeanConvertor uses a WeakHashMap in the wrong way. AJAX: Fix cocoon suggest sample. 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. XSP: Use namespace-uri and not the namespace-prefix to select parameters in logicsheet-util.xsl. Databases: Check for null LOBs. JXTemplate: Fix an ArrrayIndexOutOfBoundsException with jx:comment. Apply patch to handle malformed recipient address exception correctly. CForms: Apply patch to disambiguate toSAX method call. Core: Move BackgroundEnvironment from Cron block into the Core. Core: i18n transformer was loosing whitespaces in i18n:text, i18n:translate, i18n:param elements if they had mixed content. CForms: In AbstractWidgetDefinitionBuilder, methods "setValidators", "setCreateListeners", and "setCommonProperties" now have visibility "protected" instead of "private" 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. Updated xercesImpl to 2.8.1. CForms: FormManager now caches form definitions created from Source or URI. Core: Off-by-1 bug in WildcardMatcher found pattern matches which were not there. Core: '**' in complex WildcardMatcher pattern did not match an empty pathstep. XSP block: Using document('') in logicsheet caused NPE. CForms: Repeater identity binding was failing on save if widget path was given. CForms: Inherit fb:on-delete-row, fb:on-insert-row, fb:identity repeater bindings from the parent. Fix detection of 'simple' mode. ZipArchiveSerializer: Set time stamp of ZIP entries to last modification time of source file. Updated ehcache to 1.2.2. XSP block: Add example for on-the-fly generation of ZIP file. XSP block: Suppress xmlns:xsp namespace declaration on XSP generated root element. Repository: Add CachingSource source implementation (from trunk). ImageOp: Send info/debug messages to the log rather than System.out.println Core: CopySourceAction generate NPE. CForms: Removed debug logging left in AggregateFieldDefinitionBuilder.java. 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. CForms: Tiny typo in JavaScriptJXPathBinding. CForms: HTMLArea unable to set target and title to a "link". CForms: Form locale never used in JXMacros. Core: EHDefaultStore returns in the size() method the wrong number of keys. CForms block: JavaClassValidatorBuilder supports Configurable validator implementations. New AbstractJavaValidator implementation supports generation of customized fail messages. Core: ZipArchiveSerializer causes "Too many open files" exception. Browser selector should have Opera before MSIE. Lucene Block: Allow LuceneIndexTransformer to index large documents (with more than 10k terms). XML-DB Block: XMLDBTransformer blows up Saxon. Switched to the new WildcardMatcherHelper for all wildcard matching which is a rewrite of the WildcardHelper. Updated quartz to 1.5.2. 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. 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). HSQLDB Block: Workaround for HSQLDB improper shutdown in SAP NetWeaver. CForms Block: RepeaterJXPathBinding - order of row is inverted. Naming Block: Check for Null URI in LDAPTransformer. Add the CoWarp contribution by Carsten Ziegeler from the Osoco open source project (http://osoco.sourceforge.net/cowarp/). Deprecate session-fw and authentication-fw block. These blocks will be removed in further releases. Databases: Read CLOBs using getCharacterStream, delegate character decoding to the database. Revert to old behavior if clob-encoding parameter is present. Portal Block: Add support for input modules in start uri for application coplet. Databases: Support multiple results in SQLTransformer. Databases: Fix NPE in SQLTransformer in error handling code. Databases: Support CLOBs in SQLTransformer when returned as stored procedure parameters, or as columns in a cursor returned by stored procedure. Databases: Fix reading of the CLOBs in SQLTransformer. CForms Block: Add multiple repeater drag & drop dojo sample. Set instrumentation manager on child component managers to enable instrumentation of all components including sitemap components. Updated dojo to 20060614. 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". CForms: Using setRequired in Ajax mode does not generate bu:replace. AJAX Block: Error popup window not resizable/scrollable. CForms: Load and save model phase events are now send. CForms: Output widget does not initialize from <fd:initial-value>. Template block: NullPointerException. XIncludeTransformer: XInclude transformer does not handle fallback correctly. ResourceReader fails to add HTTP headers. XMLFileModule: file-specific configuration ignored. HTTPRequest: Redundant copying between container and form encoding. Error decommissioning component: org.apache.cocoon.components.store.impl.EHDefaultStore. exception2html.xslt: <script /> causes IE display problem. Tour block: SVG samples now use the correct SVG 1.1 namespace. RequestGenerator: Add remoteUser() information. XIncludeTransformer: xi:fallback fail when use parse="text". 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.
Cocoon htmlunit testcases are now compatible with htmlunit 1.8. Updated xmlunit to 1.0 and junit to 3.8.2. Added calculated fields implementation. Updated XReporter expressions to latest version (see http://issues.cocoondev.org/browse/XRP-113 ). CForms: Java event listeners can now implement Configurable, LogEnabled, and Contextualizable. 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. FOP block depends on XSP block (for samples) Portal: PageLabels can now be configured to be part of the url. 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. 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. CForms: widgets in unions lost their value when switching between union cases. Updated axis to 1.4 and commons-collections to 3.2. 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. Added CSS classes in cocoon forms default XSLs. Updated ehcache to 1.2. 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. 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. Commandline interface: the user-agent is now correctly set in the request headers (and not in the request parameters). RandomNumberModule: does not returns random number in the range (min,max) as expected. Performance Issue/JavaScriptFlowScript: If <reload-scripts> is set to false, don't check for last modification time of javascript source files. 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. Template block: Make the template block usable with JDK 1.3+ and enable it by default. CForms: Fix inplace editing samples CForms: Add id, state and listening attributes to the transformed form-template element (jx macros and forms transformer). 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. 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. 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. Passing the default locale while parsing initial-value on a form if no locale attribute was specified.
Fix caching problems in ImageReader: image was not regenerated when allow-enlarging or fit-uniform sitemap parameters were changed CForms: Added event handling for group of type "choice" (allow formsOnShow attribute) CForms: Added method StaticSelectionList.addItem(Object value, String label) 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. 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. Deprecated method o.a.c.environment.Environment.getOutputStream() still used internally. 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. Updated asm to 2.2.1, asm-util to 2.2.1 groovy to 1.0-jsr-05 and antlr to 2.7.6. CForms: added an fd:java validator to make it easy to implement custom WidgetValidator's in Java (for use in the form definition). Updated commons-io to 1.2. Ajax: rewrote everything with Dojo, added a new "PartialLink" widget using the "target" attribute on links to partially update the page. 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.
Forms: updated Daisy HTML cleaner component to version 1.4.1 (was 1.1). 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. Apples can now access components declared in mounted sitemaps. Updated xercesImpl to 2.8.0 and xml-apis to 1.3.03. JUnit tests for LocaleAction. 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. Add Char datatype to forms. Allow to add multiple rows at once to a Repeater using <fd:repeater-action command="add-row" number-of-rows="5" ...> TraversableGenerator calls resolveURI() twice but release() only once. Portal Block: Remove "external" attribute from coplet links. 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. Allow configuration of initial context in LDAPTransformer. Example: <ldap:initial-context name="com.sun.jndi.ldap.connect.timeout" value="5000"/> html block: Add CleanupTransformer. Enables indent html, add relevant line-breaks, and remove any namespaces that are not wanted. Allow ImageReader to process other image formats than JPEG Form block: I18nMessage - null parameter values causes NPE. Ajax block: BrowserUpdateTransformer can get into invalid state - must override recycle(). Fix caching-point pipelines. Remove the undocumented smart-caching parameter. LDAPTransformer can optionally output the DN of every returned entry as an attribute. To enable, use <ldap:dn-attribute>dn</ldap:dn-attribute> Fix handling of <ldap:execute-replace> causing NPE in LDAPTransformer 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. Mark Forms block stable. Make dream team sample work with it. 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. 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. Cron block: NPE calling QuartzJobScheduler.fireJob if the job is a CronJob. 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 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. CForms: call dispose() on every DatatypeBuilder if needed CForms: Java event listeners can now implement Serviceable to get a ServiceManager and Initializable. CForms: when building the query string in AJAX mode, do not include <input type="button"> cocoon.ajax.Fader runtime error when style uses abreviated form #ccc in IE6.0sp2. 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. Add WEB-INF/classes to loader's classpath for cli and precompile Allow to run Cocoon CLI by adding servlet.jar in the classpath. Turn off cli's debug messages by default. Fix a bug in DirectoryGenerator: when using cocoon: changes were not detected 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. CForms: Java classes used in <fb:custom> can now implement Serviceable to get a ServiceManager CForms: fix <ft:validation-error> handling when used with FormsTemplateTransformer Updated db-ojb to 1.0.4. Allow AbstractTextSerializer to be used with Saxon Disable Error Message when SAXON is used as the XSLT transformer CForms: Enable MultiValueFields with checkbox style to be disabled IncludeTransformer: source must not be cached if an error occurs Fix a bug in CForms: Null locator in EffectPipe triggers NPE Added a "precompile" target for the cocoon startup script. It precompiles all XSPs found in the webapp. Portal block: Fix handling of caching-global-use-attributes bug in CachingCopletAdapter. Updated log4j to 1.2.13, quartz to 1.5.1. 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. Fix a bug in CForms: Form.js overwriting the CFormsInstance attribute in viewData Fix a bug in CForms library when extending a field 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. Add ids to CForms validation messages, so that they can be unit-tested Permit the choice of attributes to augment in AugmentTransformer Allow to use a <fd:value-count> validation rule with <fd:multivaluefield> Allow to extend JXPathBinding outside the org.apache.cocoon.forms.binding package 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 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) Portal Block: Provide user name to portlets. Portal Block: Make wsrp event adapter thread safe, fix error in disposing wsrp producer and update portals bridges to 1.0. 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. Updated asm to 2.1, asm-util to 2.1 and groovy to 1.0-jsr-04. XSP block: Reintroduce locally scoped xspAttr in xsp.xsl to improve backwards compatibility for pre-2.1.9 logicsheets. (Suggestion by Vadim Gritsenko). I18n: XMLResourceBundle checks now for both the new and the old namespace. 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. XSP block: Instrument {#expr} interpolation to produce Cocoon stacktrace for parse errors. Portal block: Fix possible encoding problems with JSR 168 portlets. Portal block: Support external form actions in HTML transformation. Database block: Renaming AttributeImpl xspAttr to _xspAttr was not applied to ESQL logicsheet. That caused compliation errors in all XSPs using it. Core: Error handling fixed in map:aggregate (ContentAggregator). Now, no content is prepended to the result of any error handling pipeline. 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. 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.
POST method in cinclude:includexml is broken. Forms block: If a field is required or not can be changed during form processing. Applied patch by Philipp Schmidt (philipp.schmidt@gmail.com). 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.
Forms block: Fix HTML rendering of booleanfields in output state. Forms block: Fix ArrayIndexOutOfBoundException in the library subsystem. Portal Block: Only remove layout if a layout remove event is fired (and not with each layout event). Fix bug with session:getxml when path is a text-element and IncludeXMLConsumer when including text nodes. Update Pluto to final release 1.0.1. Portal block: Deprecate AbstractUserProfileManager and AuthenticationProfileManager. Portal block: Add title to basket item in the portal sample. Portal block: Fix history aspect when coplets are used. Do not flush and close output stream, servlet container will take care of it. Portal Block: Include coplet instance id in window renderer; ignore javascript: urls during url rewriting. Portal Block: Allow Full screen mode to show navigation. Portal Block: PageLabelLinkService generated the wrong url when using 3 layer tabs with showallnav. Databases block: Support stored procedures returning result set in SQLTransformer. Bricks-cms example application created (distributed separately), see http://wiki.apache.org/cocoon/BricksCms Improved blocks build exclusion/inclusion. See blocks.properties for more info. 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. JavaDocs and documentation are no longer copied to the webapp. 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. cocoon.sh and cocoon.bat (done by CZ): "servlet" is now the default action. 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. Fix OutofBoundsException when form element does not have an action attribute Portal Block: PageLabelLinkService generated the wrong url when using 3 layer tabs with showallnav. 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. CForms: The repeater widget now supports min and max-size attributes. Moved support for zip: sources from scratchpad into the core. CForms: Small change to the calendar styling which now shows dropdowns to choose the time when the date format includes time also. Updated quartz to 1.5.0. Midi Block: Marked as stable. Portal Block: Provide sample for caching uri coplet adapter (Gallery coplet). Portal Block: Add missing interface CopletInstanceEvent to FullScreenCopletEvent. CForms: Improved error message for wrong content type on upload. XSP: EclipseJavaCompiler chokes on warnings. Changed to errors. CForms: Fixed JavaScript error in forms-lib.js when using keyword undefined and Mac IE 5.0. Caching support for XInclude Transformer 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.
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.
Updated log4j to 1.2.12, asm to 2.0, asm-util to 2.0, groovy to 1.0-jsr-03. 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. MultipartParser now removes partially uploaded files Added ImageMap widget. Added percentage-dimensions and jpeg quality handling to the ImageReader. JXTG: jx:formatDate and jx:formatNumber allows for specifying locale string instead of a Locale object 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. Add a "cocoon.exit()" method to flowscript, which allows to exit the current flowscript invocation without creating a continuation. XMLdb block: Don't rely on the sitemap components to stream the contents of a xmldb source. CForms block: Escape apostrophes in validation messages formatted as JavaScript alerts. getTime(...) of CocoonLogFormatter implemented incorrectly SourceWritingTransformer supports all allowed nodes when using source:write to create new document. LocaleMatcher can save resulting locale into request, session or cookie (if configured). Portal block: Add WSRP consumer support (through WSRP4J). Updated hsqldb to 1.8.0.2. 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. Updated jakarta-regexp to 1.4. Portal block: Allow portlet adapter to stream html content through the pipeline using the NekoHTML parser. Portal block: Use OJB and the HSQLDB for authentication of the portal sample. 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. 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. Faces block: Updated MyFaces libraries to the SVN r233484, get rid of patched version. Portal block: Add support for portal bridges and add CoWarp for authentication. Portal block: Add global caching to caching uri adapter. Updated xalan to 2.7.0. 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. JXTemplate: ensure JXPath expressions can use namespace prefix mappings declared in the template document. Updated Axis to 1.2.1 and wsdl4j to 1.5.1. 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. 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. 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. 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.
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. 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. Updated hsqldb to 1.8.0. XSP block: Implement {#expr} interpolation also for logicsheets. New org.apache.cocoon.util.location package, providing utilities to track locations in XML documents and the objects built from these documents. 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. Added the empty: source than either generates empty documents or documents containing just a root node. Fix NPE in RequestGenerator when request.getHeaderNames() returns null. Fix wrong caching behaviour in DirectoryGenerator. Portal block: Add easier to use event handling mechanism by introducing the new Receiver interface. Deprecated Publisher, Subscriber, Filter and Register. Moved following components into core: TraversableGenerator, XPathTraversableGenerator (both from repository block), CSVGenerator (from scratchpad block), FragmentExtractorTransformer and FragmentExtractorGenerator (both from batik block). XSLTAL block added, presentation templating transformer based on the Zope TAL syntax. TraxTransformer: new default-src configuration parameter, used if src is not specified. Added CookieModule as a more convinient way to access cookie values as {cookie:query} in alternative to {request:cookies[name='query']/value}. 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. 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.) Portal block: Convert PortletPortalManager into portal manager aspect. CForms block: Make all WidgetValidatorBuilders ThreadSafe. Reset validation errors before validating a field. Portal block: Add portal manager aspects for more flexible portal processing. CForms block: Add isValid() method to a Widget. POI Block: Added HSSFGenerator. Added getSitemapURIPrefix method to the Request interface. Updated commons-digester to 1.7, commons-lang to 2.1, xercesImpl to 2.7.0. Mail block: The SendMailTransformer can now configure the smtp port. Fixed reloading of the i18n catalogues (regression introduced in 2.1.7). 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. Forms block: sqldatabase sample added, demonstrates "zero java code" editing of SQL data using the SQLTransformer. CForms block: Ensure FormHandler is always called when a field's value change. 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"/>. 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. 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.
Mail block: Make internal protocol handling for attachments in SendMailTransformer configurable and properly release all sources. Move expires pipeline implementation out of the scratchpad. Add setter action to set values in the object model, request or session. Updated ant to 1.6.5. CForms block: add a new <fd:true-param-value> configuration to booleanfield definitions, to allow specifying a value different from "true" for the checkbox. Set the content-length of a response when the pipeline buffers the content (which is the default). 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. When receiving a multipart request, also add parameters given on the URL to the request parameters. EHDefaultStore.store throws more descriptive exception if key or value are not Serializable. 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.
Updated ant to 1.6.4, batik to 1.6, db-ojb to 1.0.3. 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. SearchGenerator return has-previous false when meet the no. 2 page. 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. XSP Block: Race condition could lead to duplicate application of same logicsheet with spurious compilation errors or undefined runtime behaviour. CForms block: added CAPTCHA validator. 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.
Enabled the synchronization on Cocoon's session wrapper by assuring that only one wrapper exists per servlet session. Databases: SQLTransformer: Support queries nested into insert/delete/update queries. Return number of rows updated by insert/delete/update queries as returncode element. 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. Databases: SQLTransformer: Each query can now have own output namespace and prefix. If desired output namespace already in use, existing prefix will be used. Databases: SQLTransformer: Support multiple nested queries within one query. 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.
Databases: SQLTransformer: Output attributes on rowset element with empty namespace. Databases: SQLTransformer: Avoid declaring duplicate namespaces. Databases: Removed xml-encoding parameter from the SQLTransformer configuration. The latest SQLTransformer has no byte to character conversions. Updated ant to 1.6.3. OJB Block: Added support for OJB 1.1. AbstractSAXTransformer gets transformer-factory configuration parameter. XMLFileModule gets cache-expressions configuration parameter. form(NOT_FOUND is not a function) error caused by wrong documentation. Fix ContextPathModule name in javadocs. New JCR block that adds a "jcr:" protocol to access and modify repository contents. New HTMLTransformer sample in html block. Faces Block: ValidateLongRangeTag, ValidateDoubleRangeTag should use long and double to set minimum and maximum, not int. Fixed caching of a pipeline aggregating non cacheable pipelines via cocoon: protocol. Stacktrace of the ResourceNotFound exception is logged only in DEBUG level, otherwise only exception message is logged. Fix environment handling to allow the root sitemap to be at an abitrary location and not only in the main webapp context directory. 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. Updated groovy to 1.0-jsr-01, jdtcore to 3.0.2. New set of automated tests based on HtmlUnit Add support for namespaced XML elements to the JXPath based input modules (includes JXPathMetaModule, XMLFileModule, and others). XInclude transformer does not handle fallback correctly. Deprecate EventRecorder (in o.a.c.t.helpers package). It will be removed starting with Cocoon 2.2. XSP Block: Note in the documentation that XSP namespace must be declared on the xsp:page element. Fix NPE in DOMStreamer.stream(). Portal block: Make portal manager available through portal component manager.
Updated hsqldb to 1.7.3.3. Fix caching of i18n bundles with expires validities. 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.
Sitemap now properly throws ResourceNotFound exception for not matched requests even if last pipeline marked as an internal pipeline. Sitemap handle-errors now reports an error if generator is missing, or if type attribute (deprecated) specified and generator is present. Updated quartz to 1.4.5, jcs to 1.2.5-dev-20050313. 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. 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. 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. 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. Tour block: fix "shapes" sample using if/else in flowscript instead of switch. Build: Added exclude.all.blocks and include.all.blocks properties to quickly toggle all blocks on or off. Updated antlr to 2.7.5, groovy to 1.0-beta-10, jetty to 4.2.23 OJB Block: Marked as stable. Make Cocoon compilable and buildable using JDK 5.0. Remove scratchpad block - the scratchpad area is only available in trunk. Deprecated Pizza compiler support in XSP. To be removed in Cocoon 2.2. CForms: JavaSelectionList implementations can now be Contextualizable and can build SelectionLists with XMLizable labels. Change the mime-type setting of a reader. See also bug #25121. Fix thread safety problem in JXTemplateGenerator.setup() concerning template script reparsing. Polish i18n for CForms. OJB Block: Renamed JdoPMF component to JDO, OdmgImplementation to ODMG, and removed PBFactory component - please use OJB PersistenceFactory API directly. Runnable Manager: Fix bug preventing scheduling of two different jobs at the same time. 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.
Added best-fit-while-keeping-aspect-ratio option to the ImageReader Resource Reader: Make sure response is cacheable when expires parameter is not set. Mail Block: Add support for replyTo. CocoonBean can now process a URL to a SAX ContentHandler (skipping the serialiser), via cocoon.process(uri, handler). OJB Block: Integrated OJB logging with Cocoon logging. Add a deprecation logger that gives hint about used deprecated stuff. Updated commons-transaction to 1.0.1, castor to 0.9.6, groovy to beta-9, quartz to 1.4.4. 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. 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". hsqldb: make name and path of database parameterizable - this way the database can be located outside of Cocoon Apply patch for a better exception handling in the Meta-InputModule when an input module is not found. Fixed caching of i18n bundles when using multiple locations. Fix handling of environment context when returning from a pass-through sitemap mount. Portal Block: Add portal tools framework contribution. Build system: External blocks can be built together with Cocoon. 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. 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. PageLabel url's were not properly encoded. 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. Added commons-transaction 1.0 and commons-codec 1.3. Both are needed by slide 2.1. 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. 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. CForms: the parser used to read form files now uses the EntityResolver defined in cocoon.xconf. Tiny typo in AbstractTextSerializer Modified PortletURLProviderImpl.toString() to create a copy of itself and register that with the event. 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. Update Deli to x031104 (include over 300 vendor, operator and third party profiles) Updated hsqldb to 1.7.3, lucene to 1.4.3, ehcache to 1.1, log4j to 1.2.9. Paranoid: make the classloader implementation configurable Typo on the date-selector doc. xml2html.xslt does not work on IE. Portal: attributes "javax.portlet.request" and "javax.portlet.response" were not set for JSR-168 portlets running in the Cocoon webapp. 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>
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>
CForms: fields styled as 'htmlarea' can be used in tables (workaround for strange IE behaviour) CForms: add a new "link" styling for action widgets, that renders the action as an hypertext link. DateInputModule now accepts date format string when specified in a sitemap. Portal: Added support for storing JSR-168 Portlet preferences. Batik block: Fixed handling for empty extract URIs when matching on null namespace URIs. Allow attribute values to be matches as well for EncodeURLTransformer. Multipart requests: use container encoding for decoding requests, in order to have consistent handling between normal requests and multipart requests. I18n (ParamSaxBuffer): handle case where substitution params like {0} are split over multiple character events. Fix: Continuation can only be invoked for the interpreter it was originally created for.
Lucene: SearchGenerator incorrectly counts previous-index. Reported by: Tomasz Nowak (tnowak-p@netventure.pl) Updated iText to 1.1. Fix: buildList() in AbstractDatabaseAction generates incorrect parameter list. Fix: Webmail sample broken. Fix: Context directory not required to be writable by the CLI. Portal: If a coplet has an error, the error-uri has been called twice. This is fixed now. 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. Portal: Request content length and content type are required in portlet ActionRequest for custom upload handling. Portal: Added support for page labels. Javaflow: JavaInterpreter initialize method was not thread safe. Portal: Generate subnavigation for non-selected tabs. Scratchpad block: Restored CastorTransformer support for context beans, restored bean lookup logic, fixed sample. 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). Added replacement for Excalibur Event package in org.apache.cocoon.components.thread and migrated most classes using their own threads to that package. Updated antlr to 2.7.4, db-ojb to 1.0.1. Javaflow block: Support inherited methods. Javaflow block: Add parameter support. 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. Scratchpad block: BetwixtTransformer: removed deprecation warning with latest betwixt. 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. Deprecated the PHP block since the PHP servlet the generator depends on never worked properly. Explicitly excluded the PHP block from blocks.properties. XSP Block: Add space="strip" attribute support for <xsp:page> element. When present, all extra whitespace from XSP source is stripped. XMLDB Block: Fix NullPointerException in XMLDBTransformer if specified collection does not exist. XSP - JXPath logicsheet: Allow use relative contexts in <jxpath:for-each>. Add a new tag <jpath:set-lenient lenient="true|false">. Updated commons-httpclient to 2.0.2, groovy to 1.0-beta-7, commons-betwixt to 0.6. Flow invocations (function calls or continuation invocations) should always result in a response. Flowscripts with no response are prohibited. Portal block: Apply batch for configuring the type handling in the Castor converter. Fix bug in SessionPropagatorAction. Fix syntax error in build.bat on Windows ME. Portal block: Apply patch for rendering a link of the selected tab in TabContentAspect. Portal block: Apply patch for handling GET method when no enctype is set in CopletTransformer. Throw a more meaningful exception if charset classes are missing. Fixes the SQLTransformer not to close the statement twice. Change constructor to be public in order to fix bug 30270. Forms block: added possibility to add a SelectionList based on Java. HTML serialization has no space between publicId and systemId. Updated xalan to 2.6.1-dev-20041008T0304. Scratchpad block: Implemented support of parallel loading of included sources in the IncludeTransformer. Updated commons-lang to 2.0-20041007T2305. Needed for Java 5 compatibility (enum is a keyword). Updated jdt-core to 3.0.1. Faces block: Added JSF CarStore demo. Flow preserves global variables on sitemap reload. Forms block: Implementation of the CForm template language using JX macros, allowing smart page layout that depends on the widgets state and value. Remove jisp from distribution. XSP logicsheet jpath.xsl: incorrect call to JXPathContext.compile. Mail block: Support multiple SMTP servers, not only default one. Mail block: Add support for authenticated SMTP server connections. Cron block: JobScheduler's fireJob method now supports jobs calling Cocoon pipelines. Allow recursive Flow invocations with processPipelineTo. 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. Cache the mime-type of readers and serializers. The daylight time cause error when timezone is CST. Updated icu4j to 3.0. Upgrading DELI block from version 0.9.8 to x020904. Add support for translating attribute values which contain i18n expressions rather than complete i18n key. 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. 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. AbstractSAXTransformer namespaceURI and defaultNamespaceURI must never be null. When extending AbstractSAXTransformer make sure to set defaultNamespaceURI in the constructor. Faces block: Initial implementation of JavaServer Faces for Cocoon. Taglib block: Initial implementation of BodyTag. Portal block: Changed pathInfo and servletPath logic. pathInfo always starts with '/', while servletPath always has no '/' at the end. JXPathMetaModule incorrectly checks for null parameter (can't happen) instead of empty string. Cron block: Fixed memory leak, QuartzJobExecutor was not releasing pipelines. Updated jexl to 1.0, lucene to 1.4.1. 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. 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. Portal block: New Group Based Profile Manager. Cron block: Add support for persistent job stores, type "tx" and "cmt". Cron block: Fix TestCronJob pipeline call functionality. GetInstance don't work with upgrade from db-ojb-1.0rc6. Updated rhino to 1.5r4-20040629T1232, xreporter-expression to 20040701, ehcache to 0.9. A redirect is now possible, if it's called from flow. This also fixes bug #26571. Mail block: Add ability to specify mime-type for email body text parameter in the mail transformer. Fix potential memory leaks in CForms/Woody Template Transformer and JXTemplateGenerator. XMLDB Block: Add ability to delete collections with XMLDBTransformer. 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".
Added LocaleMatcher for file based internationalization. Make implementation of Cocoon protocol compliant with the Source interface. 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. Mail block: The mail transformer ignored configured toAddresses from a pipeline parameter. This is fixed now. Fixing BetwixtTransformer does not marshal Collections properly (java.lang.OutOfMemoryError). Update qdox to 1.5 and jdt-core to 3.0.0. Fixing lucene-block samples dependencies. Update lucene to 1.4. 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. 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). 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. Added support for stripping root elements in the CIncludeTransformer. Portal block: Added ManagedCocoonPortlet, to be used together with CocoonServlet or CocoonPortlet. POI block: cell spanning. POI block: processing of tags "vcenter", "hcenter", "monochrome", "draft", "Header", "Footer" in "gmr:PrintInformation". Initial support for "Margins" ("top", "bottom", "left", "right", "header", "footer"). POI block: processing of tags "grid", "orientation and "paper" in "gmr:PrintInformation". Fix JXTemplate generator does not handle format-number(number, '$#,##0.00'). Forms block: Implement setValue method for the upload widget. Forms block: Handle variants of datatype date correctly (i18n, styling). 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. Update commons-collections to 3.1. Fix JXTemplateGenerator eating backslash characters. Add new <jx:comment> tag to the JXTemplate. XML comments are not parsed anymore. See the bug description for a sample. Move commons-logging-1.0.4.jar to lib/core as jcs.jar depends on it. Apply patch: Cached resources don't have Expires-Header. Apply patch: Caching JXTemplateGenerator. ResourceReader can now take configuration elements, parameters are deprecated. Fix byte ranges support in ResourceReader. Portal: CocoonPortlet has new configuration parameter, default-session-scope. Updated commons-logging to 1.0.4 NamingInputModule provides access to the JNDI context. Updated quartz to 1.4 Add configuration support for log4j. New Input modules: URLEncodeModule and URLDecodeModule Apply patch to fix some memory leaks in the tree processor. Portal: Fix NPE when non-caching pipelines are used for the portal profile. Portal: Fix transformation of non-external html links (HTMLEventLinkTransformer) Portal: Fix problem with bookmarks and CachingURICoplet 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. 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. Tour block: added Java shapes sample. Updated Groovy to 1.0-beta5, qdox to 1.4 and util.concurrent to 1.3.4. Serializers block: Fixed the namespace handling of the XMLSerializer. Serializers block: Added support for indentation to the XMLSerializer. 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
Added instrumentation support to ContinuationsManager.
The store/caching system now uses JCS instead of Jisp. The persistent store is now really persistent between two application runs. (Fixed a bug in the hash code calculation of the keys). Updated Apache JCS to 1.0 dev 20040516 and util.concurrent to 1.3.3. Extended CocoonServlet to allow any org.apache.avalon.excalibur.logger.LoggerManager to be used. 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. Fixed jetty-4.2.19.jar compiled for +jdk1.4. The new version can run in 1.3 Fixed missing escapes of line feeds, carriage returns and tabs, that resulted in invalid Java code. Updated Joost to 20040330 RequestListener hook added, that is called before and after a request is processed. Enable XConfToolTask to modify multiple attributes. See the bug report for description of use. Also enable suppression of comments. 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. Moving check on number of specified targets within CocoonBean. This was preventing the processURI(uri, outputStream) method from working. CForms: Remove custom flow level forms validators. Added the "tour" block: "Supersonic Tour of Apache Cocoon". Tutorial/example app focused on the Power Trio: Pipelines, Flow, Forms. 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. 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). 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. 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. 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. Updated Velocity to 1.4 and iText to 1.02b Added standalone build target "validate-sitemaps". Added standalone build target "validate-stylesheets". Updated Xindice to 1.1b4, xmldb-api to 20030701, xmldb-common to 20030701 and xmldb-xupdate to 20040205 Updated Jetty to 4.2.19 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. 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. Groovy script generator support in BSF block Renamed validate-set to constraint-set for consistency (the element name is also constraint-set). Updated bsf to 2.3.0 "Fixed" bug 15841 by raising an exception when something is tried to add to elements before attributes. Changed blocks selection handling to allow more intuitive include.block.blockname syntax in (local.)blocks.properties. Old syntax exclude.block.blockname is still supported. Enabled use of nested sitemap variables, e.g. {request-param:{1}}. Updated antlr to 2.7.3 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 Updated batik to 1.5.1, db-ojb to 1.0RC6 Removed xmlform and jxforms blocks as confirmed by a users poll. Removed precept block. Was dead code. Updated jdtcore to 2.1.3, update castor-xml to 0.9.5.3 DefaultIncludeCacheManager did not release xml-serializer under some circumstances. DOMFactory can now create a document element. Databases: The xml-encoding for the SQLTransformer is now configurable. Build System: New property "loglevel" that can be used in the patch files. Portal: Fix problems with minimizing/maximizing of portlets. Portal: Fix problems with the portal block and using the CLI. Portal: Add default PropertyManagerService implementation Portal: Fix synchronization problem with JSR-168 portlets in IncludingHTMLSerializer. Improvement for AbstractReader: Don't wrap an already buffered stream. ForwardEnvironmentWrapper delegates isResponseModified/setResponseIsNotModified to wrapped environment. CForms: Change the syntax for repeater row identity handling. 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. Set the default encoding for the Portlet Environment. Move XSP into an own block. Licenses changed to ASF 2.0 in all source files which had a license, using the ReplaceLicense tool from the committers CVS module. Ant task (correctLinefeed) that corrects linefeed characters according to our standard (LF). Apples use the new CocoonForms classes Petstore samples use the new CocoonForms names New Ant task ("woody2CocoonForms-renaming") that updates namespaces, sitemap components and flowscript functions (details see tools/target/upgrade-build.xml) 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
Updated Velocity engine to 1.4-rc1 Fix namespace handling in FilterTransformer. Added grayscaling and color transformation to the ImageReader. LinkStatusGenerator now handles also links with a specified charset. Avoid "CLOBs" when indexing XML without superfluous whitespace (Lucene). Allow streaming of uploaded files into a pipeline using StreamGenerator. Avoid accumulating of addresses and attachements in SendMailTransformer, when sending multiple mails, i.e. multiple sendmail elements at once. EncodeURLTransformer no longer creates a session. Added additional property <column-case> to the SQLTransformer with the possible values "preserve", "uppercase", and "lowercase". Fixed path separator handling in cocoon.bat/.sh and Loader.java. Fixed duplicate startDocument event in BetwixtTransformer. Updated POI to 2.5-final-20040302 Pass notification object to coplet error pipelines so it can react on it. Updated xalan to 2.6.0 CForms: Support for multiple unique-row-id in a repeater CForms: Aggregate field supports both directions (split / combine), and arbitrary types (not strings only). CForms: Added String() function. Converts argument to string value. Update Avalon Excalibur packages to released versions. Updated joost to 20031219, qdox to 1.3 and quartz to 1.3.2 Updated xerces to 2.6.2 Make the current sitemap service manager available through the component context. 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). Adding basket coplet to the portal. Patch for allowing empty values in configuration of defaults input module. Patch for disposing components in the properties in xml file module. Updated commons-httpclient to 2.0-final Updated jdtcore to 2.1.2, and Ant to 1.6.1 Patch for any elemens inside a coplet:content element and not just only text. Adding SAX recording to AbstractSAXTransformer. Remove non-FOM flow classes and system.js
Updated iText to 1.02 Woody block: every widget can now have a validator. This allows for example repeaters to perform inter-row validation or overall form-level validation. Woody block: added support for rich text editing using InteractiveTools' HTMLArea. 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. OJB-Block: Added our own OJB ConnectionFactory which uses the DataSources configured in cocoon.xconf Updated POI to 2.0-final Fixing memory leak in the cocoon protocol. JSPReader: The output encoding of the reader is now configurable. woody.js has been removed. Please use woody2.js instead. 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. Allow the Authentication Framework to invoke a pipeline during logout Updated commons-collections to version 3.0 First version of the JSR-168 support in the portal engine. Updated commons-httpclient to the version 2.0-RC3 Renamed JspGenerator to JSPGenerator to match JSPEngine and JSPReader naming convention. JSPEngineImpl incorrectly converts bytes to characters. Woody expression manager supports registration of custom functions (see cocoon.xconf). Added IsNull function. Updated Jakarta ORO to the version 2.0.8. Updated Lucene to 1.3 final. Build fails on windows without cygwin. Updated Ant to 1.6.0. Remove dependencies to Xalan (from portal-fw, authentication-fw, session-fw and core) 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. 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. Fix NPE error when pointed tag is empty in xsp-session-fw:getxml. Applying patch from ltrillaud@jouve.fr (ltrillaud@jouve.fr). 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://'. Fixed and updated the stores and made them instrumentable to follow their size and the number of hits and missed. New PipelineUtil class that extends the features or cocoon.processPipelineTo() to SAX and DOM outputs. 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.
Reworked I18nTransformer implementation to use new version of XMLResourceBundle. 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. Modified BundleFactory interface to return Bundle instead of Component. Cocoon Forms (Woody) selection lists now allow empty value (which is translated to the null object) Deprecate MirrorRecorder. It will be removed starting with Cocoon 2.2 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) 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 Remove deprecated XMLDB generators from the sitemap Do not double decode URI in CocoonServlet Resurrected the XMLDB samples including XIndice 1.1b1 in Cocoon. I18n transformer does not support old configuration syntax anymore (parameters catalogue-name, catalogue-location). Use <catalogues/> element instead. I18n transformer now works with translations containing elements with attributes. Update libs Xerces to 2.6.0 and xml-apis.jar. Woody: new double-list styling for MultivalueField. 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". Woody: added rendering of <wd:help> popup panel on a "?" icon. Woody: new upload widget. This required some modification on multipart.Part objects that can now survice the end of processing of the current request. Updated Entity Resolver from pre-release to official xml-commons-resolver-1.1 release. NetUtils deparameterize() and parameterize() extended to support multivalue parameters. Multivalue parameters are returned as String arrays. Add cocoon.sendStatus([Number] sc) and cocoon.response.setStatus([Number] sc) to FOM. Updated Jetty to 4.2.14 Disable accessing files outside the context via the context protocol.
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. The CachingPointProcessingPipeline now uses Parameters instead of an own configuration scheme. See the demo sitemap for the changed configuration. XMLByteStreamCompiler now handles also text nodes longer than 32 k. Reducing setDocumentLocator calls in JXTemplateGenerator and JXFormsGenerator. sitemap-viewer added to the scratchpad samples Fix HSSFSerializer Bug: Same cell definitions blows document. Applying patch from Grigorios Merenidis (Grigorios.Merenidis@Dresdner-Bank.com). SQLTransformer: Correcting handling of XML data with XML declarations. Fixing threading problems in the ExtendedComponentSelector. Fixing namespace handling in the send-mail transformer. Fixing precompilation of the XSPs for the CLI. 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. Updated Xalan to 2.5.2 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. Serializers now can optionally implement the SitemapModelComponent interface, meaning then can be given a "src" attribute and parameters using <map:parameter>. 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. Closing some memory leaks in the source and component handling. Cocoon Protocol: Fixed a bug that broke the environment handling in some cases for internal pipeline calls. (This should also fix bug #15843). HTMLGenerator: fixed NullPointerException in case the "HTML" file contained an XML declaration. Fixed ResolverImplTestCase so that the "test" build target does not fail (it still depends on the deprecated block, though). 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. Patched SQLTransformer to use only one connection. Patch to XMLDBTransformer to generate a key on create if it is not provided New JavaScriptBinding for Woody, which allows writing specific binding strategies with two JavaScript snippets (one for load, one for save). 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. Update lib excalibur-i18n to 1.1, update iText to 1.01 Add initial support for IE in linotype. Woody block: New integer Datatype. 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. Fix default namespace handling in Xscript variables. OJB block: Object Relational mapping tool integration. Slop block: New YAPT sample, lightweight presentation tool. Fixing release of Source in the JXTemplateGenerator. Update lib commons-lang to 2.0, iText to 1.00 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.
Update libs Xerces to 2.5.0 and Ant to 1.5.4 Fixed internationalization support for HSSFSerializer by setting also the output encoding in the Workbook to UTF-16. Fixed issues the cron block had when cocoon (or the servlet container ?) allows reloads. Removed deprecated XPathProcessor and implementations. These classes where moved into the Excalibur XMLUtil package. Removed Jaxen libraries used by JaxenProcessorImpl. 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. 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. Errors handled by map:handle-errors are now logged to the logcategory "sitemap.handled-errors". Previously they weren't logged.
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. 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. cron block added Updated Jakarta Regexp library to the version 1.3 Applying patch for adding new session-fw logicsheet that allows access to a session context from with xsp. Fixed a StackOverflowError in errors2html.xslt that could occur with error pages containing very long stack traces. Woody: renamed the button widget to action widget. If you were using this widget, you will need to update your form definition files. Adding new RequestDataStore component that can be used as a replacement for the component marker interfaces RequestLifeCycleComponent and GlobalRequestLifeCycleComponent obsolete. 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. Changed logkit attribute of <logging in cli.xconf to be relative to context dir, rather than CLI invocation dir. Added include/exclude feature to CLI to allow fine-tuning of crawling of a site. Upgraded excalibur-event package so that Tomcat shutdown and continuations cleanup now works properly. Add a session-context input module to the session framework to retrieve information from a session context in the sitemap. Applying patch for processing http.nonProxyHosts in WebServiceProxyGenerator. POI block: fixed formula support. If no ValueType attribute is set on <gmr:Cell/>, the cell content will be interpreted as formula. Applying patch for using 'host' in the logging patterns. Lucene block: LuceneIndexTransformer configuration fixed. Applying patch from Renaud Bruyeron (bruyeron@fullsix.com) that fixes the prematurely closing of the connection causing in the SQL Transformer. Midi block: added transposition and inversion stylesheets and samples. 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. The jars in /lib/local are used during compilation again. 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">) 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. Fix Jisp based persistent store: close database files on Cocoon shutdown and re-use existing database and index files on startup. 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. Midi block refactoring applied. Patch for allowing to specify a cocoon-view for internal requests in the query string. 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. XMLDBTransformer: retrieving auto-generated resource id. midi block added slop block added (Simple Line Oriented Parser) LDAPTransformer now handles multiple attribute values. The filter element is also configurable via a sitemap parameter. LDAPTransformer: Added attribute modification methods: add, replace, modify, append. 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. I18nTransformer: if content of i18n:text is empty and translation is not found, use untranslated-text. ESQL: explicitly release database resources. Paginator now caches dynamic pagesheet correctly. Configuration logkit.xconf can now be read from any location. Fix the ignoreErrors handling in the cinclude transformer. Updated FOP to the latest released version, 0.20.5. Added delete capabilities to the SourceWritingTransformer. Add a defaultContentType parameter to StreamGenerator, to comply with misbehaving clients. Add a new set of WebDAV samples, with the capability of serving WebDAV content straight from Cocoon. 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. Added CLOB support in SQLTransformer. Added an (unstable) HTMLTransformer to the html block, to parse and tidy an XML containing escaped (and possibly incorrect) HTML Added URL encoding of user/password in the WebDAV source (webdav://user:password@host/path) 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. 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. Made JSPs working in Resin that don't end on *.jsp. All Reader accessing Avalon components now extend the ServiceableReader instead of deprecated ComposerReader. It pertains the JSPReader, the DatabaseReader and the AxisRPCReader. Added a WebDAV block, with an initial implementation of a modifiable and traversable WebDAV source. Added a DirectoryGenerator implementation on scratchpad working on any Traversable Source. Adding global request lifecycle component. The cache used by the caching processing pipeline is now configurable allowing to use different caches in different pipelines. The cache uses now a configured store. This allows to use differently configured caches at the same time. Reverted the encoding changes in the JSP engine. The fix should be done in the JSPReader, that already contains a TODO. Web3: The stylesheets in the examples use Xalan as transformer and work correctly now as XSLTC has problems with the 'rfc' namespace. Changed namespace for Web3RfcTransformer to 'http://apache.org/cocoon/Web3-Rfc/1.0'. ParanoidCocoonServlet can optionally configured with a file containing the classpath. Configuration cocoon.xconf can now be read from any location. Flow view can now be in "internal-only" pipelines. Updated FOP to 0.20.5rc3a. Moved WebServiceProxyGenerator + some samples into the proxy block. 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. 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). Applied patch for implementing exists for the xmldb source. 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. Added merged region support to HSSF (= Excel) Serializer. Updated POI from 1.7.0-dev to 1.10.0-dev. Patched code accordingly. Fixed usage of deprecated methods. Web3: Fix extra close element on connectivity loss. 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. 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. Added SimpleSelector that operates just on Strings. Useful in conjunction with a sitemap variable or input module. 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. Fixed return of different DirValidity objects on multiple calls on getValidity() in the DirectoryGenerator. 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. Added support for permanent redirects in <map:redirect-to> 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. Upgraded to new Axis 1.1 release Adding concept of parent-aware components, making e.g. the usage of selectors with a component manager hierarchy much easier. 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. Fixed usage of removed method XSPUtil.include() in ESQL logicsheet <esql:get-xml/> Fixed NPE in SQLTransformer.serializeData() Added cHTML/iMode "Hello World!" sample (provided by Arje Cahn) Upgraded Xalan (includes XSLTC) from a CVS snapshot (20030506) to version 2.5.1. 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+). 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). The deprecated source implementations are now wrapped by proxies. Modified patch from Jens Lorenz (jens.lorenz@interface-business.de) For non-existent files XSPUtil.relativeFilename() now throws FileNotFoundException instead of NPE. Getter for jxcontext_ property added for subclassing reasons. Fixing incorrect caching behaviour when internal pipelines are used. Command-line will no longer add a 'null' suffix to files with an unknown MIME type. The object model and the components stored in the object model are now available via the component context. Logicsheets: Changed scope of and renamed temporary 'soap:call' XScript variable in <soap:call>. Fixed compilation problem with <xscript-get as="object"> expression. 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. Fixed synchronisation problem in I18nTransformer when retrieving catalogues. 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. Dispose the parent Component Manager if it implements Disposable. Happens when the Cocoon servlet shuts down or when Cocoon is reloaded. Changed namespace for the RequestGenerator to 'http://apache.org/cocoon/request/2.0'. Changed namespace for XMLForm components to 'http://apache.org/cocoon/xmlform/1.0'. Extended the ExtendedXLinkPipe to be more extensible. Prepared is html and p3p. Patch velocity generator, so that the scope of objects can be specified (request, session, sitemap). Fixed namespace handling in XMLDBSource. Added XHTML 1.1 DTD to the entity catalog. Added XHTML 1.1 serializer into the sitemap. Explained different XHTML 1.0 serializer options. Enable the LDAPTransformer to obtain attribute values from LDAP using various encoding schemes for stored values. Cleaned up MIMEUtils. The DirectoryGenerator is now cacheable. A new "refreshDelay" parameter defines the delay between two checks on the filesystem for modified files. Added STX block. (alternative to XSLT) Throw InvalidContinuationException when flow continuation is not found or not valid, instead of forwarding to hard-coded 'invalidContinuation' page. Fixing NPE in JspEngineImpl. Obtain handler and application name from parameters for internal requests if handler could not be resolved from the request object. Delaying getting of the output stream from the http response until it is really needed. Adding new portal framework. Updated Xalan to a CVS snapshot (2003-05-06), fixes bug with incorrect namespaces in endElement SAX events. QDox block added, parses Java source code and javadoc tags, includes samples. Fixing the problem with eating spaces in custom transformers. Hello World sample added for the SWF block (although page2swf.xsl contains incomplete font definition). Redesign/modularizing the authentication and session framework. Added 304 support to cacheable pipelines DTD comment events are now dropped after parsing by default. 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). Disabled incremental-processing of Xalan by default. standalone-demo build target added cacheable.xsp sample reworked, did not work in M1 new FOP serializer samples, accessible from the "blocks with samples" page Fixed NPE if ESQL does not get a connection Fixed SQL injection vulnerability of DatabaseAuthenticatorAction ESQL "Auto" support for sybase ASE. New database detection method. Removing dependency from the Cocoon core to JTidy. Sync XML:DB source with 2.0 branch: Conect to the XML:DB once, from the XMLDBSourceFactory. TextSerializer now can handle absence of root element in the incoming XML. '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.
EsqlConnection no longer implements java.sql.Connection. No jvm dependency any more. Refactored SitemapConfigurable. A sitemap configurable component can now be ThreadSafe and has access to the sitemap configuration at any time through a SitemapConfigurationHolder. 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. Setting minimum JDK version from 1.2 to 1.3. Updating to the latest official Avalon and Excalibur releases. 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. Added support for the LogFactor5 graphical log event browser. XMLFileModule: rename 'cachable' to 'cacheable' in configation. FOP serializer's <user-config> relative path now resolves relative to sitemap's directory. All Cocoon URIs are supported too. The CVS repository for Cocoon 2.1 is now called "cocoon-2.1" (no branches, just HEAD). Added support for Pervasive db to ESQL. Changed category for Log logicsheets. 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. 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. The repository for Cocoon 2.1 is now called "cocoon-2-historical" (the old "xml-cocoon2" repository is deprecated). The "javadocs" build target now links offline to the appropriate JavaDOC repositiories available on the web. Added proxy generator block for remote HTTP-base generation of XML (will deprecate the WSProxyGenerator). Added subrequest processing via the sitemap to the Cocoon flow. Moved the asciiart stuff from the scratchpad into a block. Moved the SendmailAction and the mail-related stuff from the scratchpad into the mail block. Removed the MaybeUploadRequestFactory since we have our own and the less dependencies the better Moving core properties of the build system into a separate properties file. 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. Set "Last-Modified" header Fixed the ResourceExistAction to return null instead of EMPTYMAP on not existing resources. Refactored the build system. Put the exceptions into esql namespace so the variable named "e" is still available in XSP. 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. Optional 'global' parameter on map:redirect-to when giving a URI. Make getParentComponentManager in CocoonServlet protected so alternate methods to getting the parent CM can be used. Optional "depth" attribute on the cocoon log format to control how deep to go in stacktrace reporting. Do not specify a default to the "class-loader" parameter in JavaLanguage 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 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. Use Environment.tryResetResponse() instead of HttpServletResponse.reset() in CocoonServlet to avoid IllegalStateException if response was already committed. Add support for Collection objects to the CastorTransformer. Upgrade to the SAX2 API, improve logging, and use SourceResolver to load mappings. Refactor Main class into two classes, Main and CocoonBean. CocoonBean provides simple programmatic interface to the Cocoon. Add image dimensions to the ImageReader's cache key. modular.DatabaseActions: added ability to store FileParts from uploads to "ascii", "clob", "blob", and "binary" columns. Added getSize() method to FilePart. SAP R/3 connectivity components added. Moved block samples to own category, modified build system to merge .xsample files to block-samples.xml. Renaming components section for pipeline implementations to "pipes" and "pipe". Updated to latest versions of excalibur sourceresolve and xmlutil. Patch IOUtils to recognize '..' in Path The "mime-type" attribute on <map:read> and <map:serialize> is now expanded if it contains sitemap variables. InputModule to access XMLForm instances. (modular) DatabaseAction: added ability to use arbitrary path separators instead of "." (e.g. "/"), added ability to count rows from 1, added documentation. Created additional isolation level for some OutputModules. Added LinkRewriterTransformer. Added support for expiring continuations. Fixed the way complex Java objects are passed from the control flow to the XSP view layer. Added ant-contrib library with some optional ant tasks and started cleaning up the build system. ZipArchiveSerializer now accepts inline content for entries of the zip archive and not only source URLs. 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) 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. Move the image inspection into a ImageUtils class Major cleanup of the ImageDirectoryGenerator, removed the RuntimeExceptions, added support for the JPEG comment marker 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. Fixed the esql:more-results tag for non-JDBC limit methods 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". Moved code to new blocks: profiler, velocity. Update XML Serializer, HTML Serializer , and Text Serializer documentation, added XHTML Serializer documentation in the serializer user documentation section. Update SVG Serializer, SVG JPEG, and SVG PNG documentation, added SVG TIFF documentation in the serializer user documentation section. XMLFileModule checks result of SitemapSource.getValidity() as it may return null 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. 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. 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. Moved code to new blocks: html, php, lucene, bsf Now module.xml is named project.info.xml Extension to sendmail.xsp: lists for sendmail:cc Added container/form-encoding init-params to web.xml Fixing various inefficient logging calls. Make all "meta" modules ThreadSafe Perform correct source resolution in XMLResourceBundle. Now i18n transformer can obtain dictionaries using any supported source (e.g. 'cocoon:/'). 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). Updated the XML:DB Source. Now it will accept, in cocoon.xconf, optional authentication attributes, called "user" and "password". New transformer extracts fragments to documents and stores them using an OutputModule. Tags that start fragment are configurable. New output module puts everything in a map in a request attribute. 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. XMLMetaModule returns DocumentWrapper instead of String. Wrapper for org.w3c.dom.Document that implements XMLizable and provides a useful toString() method. SimpleMappingMetaModule: added feature to remove a prefix / suffix. "meta" input modules: configuring a different module locally did not override the default one in all circumstances. input.xml: renaming mixed up called template names from logicsheet-util.xsl SimpleFormTransfomer: fixed error tags when no validation data available. Moved the sample classes and confs to the samples block. Cleaned up the esql logicsheet and helper classes. Created classes for db specific stuff. Improved the limit/paging features. 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! :-) Updated block build system to compile and use mock objects in the "mocks" subdir of the blocks if present. New InputModule to access contents of an XMLFile using JXPath, based on patch from Jeff Turner (jefft.at.apache.org). 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. 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. 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). Removed JTidyTask that was not used and switched to using the Ant input task from UserInputTask. 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. Moved LDAPTransformer to a block called "naming". 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. Enhanced the RELAX NG grammar for sitemap.xmap files and added embedded Schematron rules. Fix setOutputStream throwing IOExeption in XMLSerializer, and TextSerializer. Make the CLI report errors correctly to the screen when a page generation fails. Moved POI to a block. Applied patch without moving the core elementprocessor classes in the block. 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. 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. New build target "validate-xdocs" to conduct build-time validation of core xml documentation (call it manually with: ./build.sh validate-xdocs). Added SystemPropertyModule input module to enable environment variables in sitemap attributes. E.g.: <map:transform src="{system-property:user.home}/style.xsl"> Added resource bundle component interfaces to allow different implementations to be used for i18n. 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. XMLForm Howto to reflect the fact that there is no need for manual handling of unchecked check-boxes. Updated Xalan to 2.4.1 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. Added RELAX NG grammar for sitemap.xmap files and removed old draft sitemap DTD. 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. Updated the draft DTD for sitemap. Added a draft W3C XML Schema for sitemap. 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. Added support for sitemap variable anchors {#name:variable}. This introduces a new "name" attribute for matchers and actions Added support for direct access of root level sitemap variables {/1} 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. Removed all references to Loggable in favor of LogEnabled (this includes references to common abstract classes as AbstractLoggable and AbstractDualLogEnabled) Added support for using Avalon components as Axis service objects with the AxisRPCReader. Enhancing cinclude transformer with configuration possiblities, lie POST requests and flexible parameter handling. Enabled the RTF serializer and SWF serializer as block. Enabled the chaperon text parser as block. 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. Added support for Avalon Excalibur instrumentation. Added CascadingIOException to wrap other exceptions when an IOException is thrown. 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. 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. Updated Jakarta Commons HTTP client jar. Fixes problems with SOAP XSP taglib. Added new ComposerReader class with various Reader refactorings. Don't explicitly redirect to the cocoon:/ pipeline in AbstractInterpreter.forwardTo(), do it instead in system.js. Fixed code generation problem in the jpath.xsl. Patch from. New user login and preferences sample to show the control flow layer. 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. Profiler components extended to store intermediate SAX fragments, and also the some informations about the environment, thanks to Bruno Dumon. Made Commandline Cocoon (Main.java) verbose output (-V option) less cluttered and grouped the log and output methods. 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. Add the methods 'copy', 'move' and 'delete' to the WriteableSource interface. Added the Chaperon components, examples and docs into the main tree. Replaced implementation from Loggable by LogEnabled to use the Avalon Logger instead of the LogKit Logger. Moved the SWF generator and serializer from the scratchpad into the main trunk. Added a hello-world sample for SWF Added a new PDF serializer. iText seems to be good and fast alternative with many features iText also provides support for RTF and HTML Updated xerces, xalan, xml-apis jars to their latest CVS versions. Especially due to some xerces bugs in the 2.0 release Made docs target use logging to file via the logkit.xconf and added informative System.out messages for the commandline cocoon (Main.java). Allow parent component manager to be LogEnabled. Extended pipeline handling for CachingPoint caching algorithm. New samples for HSSF Serializer. This adds get-bigdecimal to ESQL (see java.math.BigDecimal for details as to why you need BigDecimals). 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. Python language support for the XSP pages. Python programming language using jython interpreter. New SwitchSelector that uses a common context object for all map:when tests. 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. Uniformed the configurations used by the Avalon XSLTProcessor component and the TraxTransformer to specify the TransformationFactory to use. Applied patch to add javascript support for the mozilla browser for transforming xml to html. 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 New Cocoon Generator. Allows Embedding One Web Site in Another. WebServiceProxyGenerator Demo. XMLForm framework. Allows client independent form handling. Added "userhomes" in the webapp, that automounts the sitemaps found in *nix user homes. To remove it, just delete the dir. Added support for actions and In-/OutputModules to the JavaScript Flow. Caveat: Modifications of the Redirector object are ignored. 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. 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. 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. Removed (long time deprecated) matcher and selector factories. Use appropriate matchers and selectors instead. Updated the profiler code, removed the need of SAXConnectors. Encourage people to help with the refactoring of Cocoon samples. Provide a refactoring guidelines document. 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. Moved linkstatus sample and LinkStatusGenerator to core from scratchpad; added a link to test the documentation links on the Cocoon demo webapp frontpage. ESQL: Added support for reading BLOBs from database. DatabaseActions, changed behaviour: Tables are used in order of appearance in tableset, before they were used in order of appearance in tables section. Removed XT XSLT transformer. Added custom component configuration to map:pipelines section. Added global parameters to map:pipelines section. Changed modules to use objectModel instead of just the request object. 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. Replaced event pipeline and stream pipeline with one single component, the processing pipeline. Added configurable pipelines to sitemap. Added an "expires" directive to map:pipeline in order to manually set an "Expires:" HTTP header following Apache's mod_expires syntax. 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? ResourceReader gets the mime type from the source now, instead of declaring the mime type in the sitemap. Moved mod-db stuff from scratchpad to trunk. Util logicsheet: get-source and include-source tags. E.g. to include XHTML generated by another pipeline as email. 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. Added Jakarta Slide Source components and examples in scratchpad. 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. Added size attribute and sorting to directory-generator. 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. Complete rewrite of grouping code in esql (footer still not supported), group-on available through esql:param Esql fix for get-columns with PostgreSQL and getObject not working with all datatypes CLOB support in esql logicsheet, esp. in get-xml 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. 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. Fixed esql getBytes() behaviour Integrated the new Avalon Excalibur Store and StoreJanitor components. This deprecates the Cocoon version. Added formula support for HSSF Serializer. Integrated the new Avalon Excalibur XSLT Processor. This deprecates the Cocoon version. 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. 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. 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. Changed default persistence store to the JispFilesystemStore. To switch back to FilesystemStore, remove jisp.jar and rebuild Cocoon (or simply edit cocoon.xconf) RequestGenerator does optionally output request parameters. Output extra locator info if included Throwable of ProcessingException is SAXParseException or TransformerException. 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. Fix CocoonCrawlerImpl, check if contentType is not null, and always close the BufferedReader at the end. 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. Updated the Jisp store system to the new Jisp version and added the missing clear() and keys() methods. Added a more sophisticated example in samples/webserviceproxy/cocoonhive. Demonstrates a small virtual portal which embeds functionality from Amazon and OpenWiki. 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. 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.