Release Notes 5.2.2

It is now possible to generate an absolute URL from a Link object; an absolute URL includes the URL scheme, host, port number (if necessary) followed by the complete path. This is useful in a number of situations, such as when generating a URL that may be e-mailed to an end user.

The semantics of the Link.toAbsoluteURL() method has changed; in prior releases it returned a complete URL (i.e., starting with a leading slash), and the method was typically used when generating an Ajax callback URL. Starting in 5.2.2 this generates an absolute URL (as described above). In most cases, you should change code that invoked toAbsoluteURL() with a call to toURL() instead; because Tapestry no longer 'optimizes' URLs, this will work for Ajax cases as well.

Deployed Tapestry applications often run behind a firewall, the available Request information about incoming hostname and port is often not accurate (it represents the private request from the firewall server to the application server, whereas the client uses a public request to the firewall server). When using absolute URLs, you will likely want to override the BaseURLSource service to provide accurate values that reflect your application's deployment.

Bugs Fixed

  • TAP5-708 – Element.forceAttribute uses the element's namespace to match the attribute.
  • TAP5-709 – Element.attribute(String name, String value) adds elements that already exist
  • TAP5-804 – Element#addClassName can create an additional new 'class' attribute
  • TAP5-921 – Properties defined in an Interface are not exposed by PropertyAccess for abstract classes that do not directly implement the methods
  • TAP5-1287 – Some services require a notification that they have been reloaded, so they can clean up external dependencies
  • TAP5-1293 – Whitespaces in SymbolConstants.SUPPORTED_LOCALES cause that locales are not persised
  • TAP5-1294 – Validation macros do not work when used in @Validate annotation
  • TAP5-1297 – Client-side validation of @Pattern is broken
  • TAP5-1303 – Linking a Form to a Zone will no longer work unless the Form contains validated fields
  • TAP5-1304 – When using PropertyShadowBuilder to build a service, if the property is null, an immediate exception is needed (rather than a NullPointerException)
  • TAP5-1309 – When using a MultiZoneUpdate, Tapestry will clear the referenced zone

Improvements Made

  • TAP5-538 – Add the facility to optionally disable on-focus-change triggered validation while retaining the on-form-submit validation
  • TAP5-874 – Form component should be able to render a secure URL even on an insecure page
  • TAP5-1272 – New annotations @Decorate and @Advise to identify methods that decorate or annotate services
  • TAP5-1291 – Extend Link with new methods for producing absolute URLs (that include scheme, hostname, etc.)
  • TAP5-1295 – Simplify connecting a link or form to an (enclosing) Zone
  • TAP5-1298 – BeanBlockContribution should be split into two sub-classes: EditBlockContribution and DisplayBlockContribution
  • TAP5-1300 – Define a special CSS class to prevent a client-side form from submitting normally (for Ajax use cases)
  • TAP5-1306 – Additional method for Link: addParameterValue(String,Object) that uses ContextPathEncoder to encode object value to a string
  • TAP5-1314 – SeleniumTestCase should expose the underlying CommandProcessor, to allow execution of commands not defined by the Selenium interface
  • TAP5-1315 – Allow individual SeleniumTestCases to run w/o configuring SeleniumLauncher

New Features Added

  • TAP5-1299 – Option to disable live service reloading via a JVM system property

Tasks Completed

  • TAP5-1317 – Upgrade Hibernate dependency to latest, Hibernate 3.6.0.Final