Apache Wicket 6.5.0 released

The Apache Wicket PMC is proud to announce Apache Wicket 6.5.0!

This release marks the fifth minor release of Wicket 6. Starting with Wicket 6 we use semantic versioning for the future development of Wicket, and as such no API breaks are present in this release compared to 6.0.0.

New and noteworthy

Behavior.onRemove(Component)

org.apache.wicket.Behavior has a new method - #onRemove(Component). This callback method is called when a host component of this behavior is removed from its parent.

Global updaters for Ajax request attributes

By registering a custom AjaxRequestTarget.AbstractListener the application can manipulate all the attributes for all Ajax requests.

Example:

application.getAjaxRequestTargetListeners().add(new AjaxRequestTarget.AbstractListener()
{
	@Override
	public void updateAjaxAttributes(AjaxRequestAttributes attributes)
	{
		super.updateAjaxAttributes(attributes);
		attributes.setChannel(new AjaxChannel("globalAjaxChannel", AjaxChannel.Type.ACTIVE));
	}
});

Each Ajax behavior/component can override such global settings.

Using this release

With Apache Maven update your dependency to (and don’t forget to update any other dependencies on Wicket projects to the same version):

<dependency>
    <groupId>org.apache.wicket</groupId>
    <artifactId>wicket-core</artifactId>
    <version>6.5.0</version>
</dependency>

Or download and build the distribution yourself, or use our convenience binary package

Upgrading from earlier versions

If you upgrade from 6.y.z this release is a drop in replacement. If you come from a version prior to 6.0.0, please read our Wicket 6 migration guide found at

http://s.apache.org/wicket-6.0-migration

Have fun!

— The Wicket team

Release Notes - Wicket - Version 6.5.0

Sub-task

* [WICKET-4976](https://issues.apache.org/jira/browse/WICKET-4976) - WicketTester#startComponent(Component) doesn't detach the component and request cycle

Bug

* [WICKET-4906](https://issues.apache.org/jira/browse/WICKET-4906) - Form#visitFormComponents can cause ClassCastException
* [WICKET-4925](https://issues.apache.org/jira/browse/WICKET-4925) - AbstractAjaxBehavior should clean stored reference to a component on unbind
* [WICKET-4927](https://issues.apache.org/jira/browse/WICKET-4927) - Header can not be set from IRequestCycleListener#onEndRequest()
* [WICKET-4928](https://issues.apache.org/jira/browse/WICKET-4928) - Error adding links to WebSocketRequestHandler
* [WICKET-4935](https://issues.apache.org/jira/browse/WICKET-4935) - Rendered URL is resulting with double slash when using AuthenticatedWebApplication
* [WICKET-4939](https://issues.apache.org/jira/browse/WICKET-4939) - AbstractAjaxTimerBehavior never triggers if attached to WebPage
* [WICKET-4948](https://issues.apache.org/jira/browse/WICKET-4948) - Modal window does not center correctly when window is scrolled in safari
* [WICKET-4950](https://issues.apache.org/jira/browse/WICKET-4950) - ResourceStreamLocator#newResourceNameIterator isn't a factory method anymore
* [WICKET-4953](https://issues.apache.org/jira/browse/WICKET-4953) - RangeValidator#decorate mixes error keys
* [WICKET-4954](https://issues.apache.org/jira/browse/WICKET-4954) - Issue with file upload with progress bar via AJAX and Firefox
* [WICKET-4955](https://issues.apache.org/jira/browse/WICKET-4955) - SessionData violates comparison contract
* [WICKET-4956](https://issues.apache.org/jira/browse/WICKET-4956) - compareTo methods of Actions in BufferedWebResponse violate Comparable contract
* [WICKET-4959](https://issues.apache.org/jira/browse/WICKET-4959) - Notify behaviors when a component is removed from the tree
* [WICKET-4961](https://issues.apache.org/jira/browse/WICKET-4961) - wicket ajax submit does not serialize elements of parental forms
* [WICKET-4962](https://issues.apache.org/jira/browse/WICKET-4962) - AjaxFormChoiceComponentUpdatingBehavior cannot be triggered with BaseWicketTester#executeAjaxEvent()
* [WICKET-4965](https://issues.apache.org/jira/browse/WICKET-4965) - NPE when stopping Tomcat
* [WICKET-4968](https://issues.apache.org/jira/browse/WICKET-4968) - NPE in FencedFeedbackPanel#onRemove
* [WICKET-4971](https://issues.apache.org/jira/browse/WICKET-4971) - AtmosphereEventSubscriptionCollector is slow
* [WICKET-4973](https://issues.apache.org/jira/browse/WICKET-4973) - AbstractRequestLogger - infinite ArrayIndexOutOfBoundsException when requestWindow size is 0
* [WICKET-4975](https://issues.apache.org/jira/browse/WICKET-4975) - client side memory leak on  date picker
* [WICKET-4986](https://issues.apache.org/jira/browse/WICKET-4986) - wicket-ajax-jquery.js fails with 'member not found' on IE for delayed ajax requests

Improvement

* [WICKET-4919](https://issues.apache.org/jira/browse/WICKET-4919) - AjaxLazyLoadPanel needs a method to add components to the AjaxRequestTarget when the component is rendered
* [WICKET-4933](https://issues.apache.org/jira/browse/WICKET-4933) - Palette does not handle disabled choices correctly
* [WICKET-4937](https://issues.apache.org/jira/browse/WICKET-4937) - Add IResponseFilter that can filter out invalid XML characters
* [WICKET-4940](https://issues.apache.org/jira/browse/WICKET-4940) - Make MountedMapper#getMatchedSegmentSizes(url) protected
* [WICKET-4957](https://issues.apache.org/jira/browse/WICKET-4957) - Listener needed for registration and removal of pages
* [WICKET-4958](https://issues.apache.org/jira/browse/WICKET-4958) - It should be possible to manipulate AjaxRequestAttributes globally
* [WICKET-4963](https://issues.apache.org/jira/browse/WICKET-4963) - ComponentModel "setObject" methods should take generic "T" type instead of "Object"
* [WICKET-4970](https://issues.apache.org/jira/browse/WICKET-4970) - Move the logic for creating the proper PackageResource from PackageResourceReference to ResourceReferenceRegistry
* [WICKET-4982](https://issues.apache.org/jira/browse/WICKET-4982) - StatelessChecker: add helpful information to find stateful behavior (patch included)
* [WICKET-4983](https://issues.apache.org/jira/browse/WICKET-4983) - extra recursion on Wicket.DOM.get