Release Notes 5.2.1

Prior releases of Tapestry attempted to "optimize" URLs, by creating relative URLs where appropriate. Unfortunately, that caused its own problems with Ajax requests, since the base URL for an Ajax request is not the same as the base URL for the enclosing page. In any case, this feature has been removed, all URLs are now complete URLs (they start with a leading slash, and include the context path and the additional path that describes the page, page activation context, etc.).

As part of this change, the internal RequestPathOptimizer service has been removed.

Bugs Fixed

  • TAP5-710 – Documentation about "use of asset: and context: to reference assets directly from a template file" has errors (See TAP5-214)
  • TAP5-752 – Tapestry bin download includes lots of libraries that shouldn't be there due to licensing concerns
  • TAP5-770 – Minor documentation typos in PageLoaded annotation
  • TAP5-818 – Tapestry should properly support JDK 1.5 Generics when reading and updating properties and property expressions
  • TAP5-1004 – X-Tapestry-ErrorMessage may lead to HTTP Response Splitting
  • TAP5-1011 – When using @PageActivationContext and providing a no-args activate event handler, the handler may be called too soon
  • TAP5-1118 – Using Ajax updates to add an Upload component to an existing Form fails in IE, which still sends application/x-www-form-urlencoded encoded request
  • TAP5-1123 – Documentation in ApplicationStateManager is not quite correct: when creating an SSO it uses the full injection machinery, not necessarilly the no-args constructor
  • TAP5-1177 – In a partial page update request, if the server returns an empty string for the content, the client-side is left as is, rather than cleared
  • TAP5-1188 – Refactoring the base class of a live-reloaded service implementation can cause mysterious NoSuchMethodError exceptions
  • TAP5-1192 – IE 8 throws an exception while purging JavaScript event handlers from elements as they are destroyed
  • TAP5-1201 – PageResponseRenderer.render() should call RequestGlobabls.storeActivePageName(String pageName)
  • TAP5-1222 – Accessing a public field of a non-component object inside component code can result in a TransfomationException if the accessed field name matches the name of a component field
  • TAP5-1228 – The need to configure the tapestry.alias-mode symbol makes it awkward to start a Registry up for unit testing purposes
  • TAP5-1229 – Tapestry binary/source distributions do not include all modules
  • TAP5-1230 – SeleniumTestCase.assertFieldValue() should invoke writeErrorReport() on failure
  • TAP5-1232 – Restore injection of service id (as a String) into service decorator methods for proper backwards compatibility
  • TAP5-1235 – The interaction between a Form component and the active page can be problematic when there is an error loading a page
  • TAP5-1241 – Setting the content length of the response should automatically disable response compression
  • TAP5-1244 – Tapestry components and mixins should be converted to use JavaScriptSupport, not RenderSupport
  • TAP5-1246 – Tapestry should use SQLException.getNextException() to dig down to the "root cause"
  • TAP5-1254 – The decorateComponentEventLink event name is misspelled
  • TAP5-1258 – Maven quickstart archetype puts the wrong version in the pom.xml
  • TAP5-1260 – Document "Assets", Section "Securing Assets" is outdated
  • TAP5-1261 – Tapestry adds event handlers not only to form components, but also to simple forms
  • TAP5-1264 – Ordering of MarkupRenderer (and PartialMarkupRender) filters can cause bad interraction between ClientBehaviorSupport and Heartbeat
  • TAP5-1265 – Change the description for the quickstart archetype to just "Tapestry 5 Quickstart Project"
  • TAP5-1269 – Annotation @FactoryDefaults should be allowed on methods, for use with the @Contribute annotation
  • TAP5-1277 – Tapestry incorrectly calls PrintWriter.flush(), not close(), when writing JSON objects and arrays as the response
  • TAP5-1279 – Importing a JavaScript library that is part of a stack should import the entire stack instead of the individual library (to take advantage of JavaScript aggregation)

Improvements Made

  • TAP5-363 – Cookbook: Using Tapestry to serve servlet-container error pages
  • TAP5-1233 – Live reloading of service implementation classes causes IllegalAccessError if the class contains protected or package private methods
  • TAP5-1236 – Add method Response.disableCompression() (to avoid use of a internal global key)
  • TAP5-1245 – Break out the Tapestry JSON support into an independent module
  • TAP5-1250 – Add support for creating a Flow from an Iterable (not just Collection and object array)
  • TAP5-1256 – Failed Selenium assertions should capture a screenshot (as well as the current page HTML)
  • TAP5-1266 – Bring quickstart archetype up to date in several ways

New Features

  • TAP5-910 – Cookbook: defining a new enum as a component parameter, and adding the string -> enum type coercion for it

Tasks Completed

  • TAP5-1240 – Upgrade Hibernate dependencies to 3.5.4-Final
  • TAP5-1267 – Remove the code that "optimizes" generated URLs as it is not always possible to know what the base URL is
  • TAP5-1270 – Upgrade EasyMock dependency to version 3.0