Modified: websites/production/tapestry/content/release-notes-53.html
==============================================================================
--- websites/production/tapestry/content/release-notes-53.html (original)
+++ websites/production/tapestry/content/release-notes-53.html Sun Nov  7 
14:21:22 2021
@@ -59,70 +59,7 @@
 </head>
 <body>
   <!-- /// Navigation Start -->
-    <div id="navigation"><p><header>
-  <div class="container-fluid">
-    <div class="row">
-      <div class="col-12">
-        <nav class="navbar navbar-expand-xl navbar-light 
justify-content-between">
-          <a class="navbar-brand" href="/index.html">
-            <img src="/images/apache-tapestry-icon-dark.svg" width="60" 
alt="Apache Tapestry" title="Apache Tapestry">
-            <span>apache tapestry</span>
-          </a>
-          <button type="button" class="navbar-toggler" data-toggle="collapse" 
data-target="#navbarCollapse" aria-controls="navbarCollapse" 
aria-expanded="false" aria-label="Toggle navigation">
-            <span class="navbar-toggler-icon"></span>
-          </button>
-          <div class="collapse navbar-collapse" id="navbarCollapse">
-            <ul class="navbar-nav mx-auto"><li class="nav-item">
-                <a class="nav-link active" 
href="/getting-started.html">Getting Started</a>
-              </li><li class="nav-item">
-                <a class="nav-link active" 
href="/documentation.html">Documentation</a>
-              </li><li class="nav-item">
-                <a class="nav-link active" href="/download.html">Download</a>
-              </li><li class="nav-item dropdown">
-                <a class="nav-link dropdown-toggle active" 
id="communityNavbarDropdown" href="#" role="button" data-toggle="dropdown" 
aria-haspopup="true" aria-expanded="false">
-                  Community
-                </a>
-                <div class="dropdown-menu" 
aria-labelledby="communityNavbarDropdown">
-                  <a class="dropdown-item" href="/community.html">Mailing 
Lists</a>
-                  <a class="dropdown-item" 
href="https://stackoverflow.com/questions/tagged/tapestry";>StackOverflow</a>
-                  <a class="dropdown-item" href="/support.html">Support</a>
-                  <a class="dropdown-item" href="/community.html">Getting 
Involved</a>
-                  <a class="dropdown-item" 
href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=27361749";
 title="Edit this page (requires approval, just ask on the mailing list)">Edit 
this page</a>
-                  <div class="dropdown-divider"></div>
-                  <a class="dropdown-item" 
href="https://twitter.com/ApacheTapestry";>@ApacheTapestry</a>
-                  <a class="dropdown-item" 
href="https://twitter.com/hashtag/tapestry5";>#tapestry5</a>
-                </div>
-              </li><li class="nav-item dropdown">
-                <a class="nav-link dropdown-toggle active" 
id="developmentNavbarDropdown" href="#" role="button" data-toggle="dropdown" 
aria-haspopup="true" aria-expanded="false">
-                  Development
-                </a>
-                <div class="dropdown-menu" 
aria-labelledby="developmentNavbarDropdown">
-                  <a class="dropdown-item" 
href="https://gitbox.apache.org/repos/asf?p=tapestry-5.git";>Source Code</a>
-                  <a class="dropdown-item" 
href="https://issues.apache.org/jira/browse/TAP5";>Issues</a>
-                </div>
-              </li><li class="nav-item dropdown">
-                <a class="nav-link dropdown-toggle active" 
id="apacheNavbarDropdown" href="#" role="button" data-toggle="dropdown" 
aria-haspopup="true" aria-expanded="false">
-                  Apache
-                </a>
-                <div class="dropdown-menu" 
aria-labelledby="apacheNavbarDropdown">
-                  <a class="dropdown-item" 
href="https://www.apache.org/";>About Apache</a>
-                  <a class="dropdown-item" 
href="https://apachecon.com/?ref=royale.apache.org";>Events</a>
-                  <a class="dropdown-item" 
href="https://www.apache.org/foundation/sponsorship.html";>Sponsorship</a>
-                  <a class="dropdown-item" 
href="https://www.apache.org/licenses/LICENSE-2.0";>License</a>
-                  <a class="dropdown-item" 
href="https://www.apache.org/security/";>Security</a>
-                  <a class="dropdown-item" 
href="https://www.apache.org/foundation/thanks.html";>Thanks!</a>
-                </div>
-              </li></ul>
-            <form enctype="application/x-www-form-urlencoded" method="get" 
class="form-inline" action="search.html">
-              <input type="search" class="form-control search-input" name="q" 
placeholder="Search docs, issues, wikis and blogs" aria-label="Search">
-              <button type="submit" class="d-none">Search</button>
-            </form>
-          </div>
-        </nav>
-      </div>
-    </div>
-  </div>
-</header></p></div>
+    <div id="navigation"><p><img class="wysiwyg-unknown-macro" 
src="https://cwiki.apache.org/confluence/plugins/servlet/confluence/placeholder/unknown-macro?name=html&amp;locale=en_GB&amp;version=2";></p></div>
   <!-- /// Navigation End -->
 
   <article>
@@ -137,300 +74,19 @@
               <!-- /// Breadcrumb End -->
 
               <!-- /// Smallbanner Start -->
-                            <div id="smallbanner"><h1 class="title" 
id="title">Release Notes 5.3</h1></div>
+                            <div id="smallbanner"><img 
class="wysiwyg-unknown-macro" 
src="https://cwiki.apache.org/confluence/plugins/servlet/confluence/placeholder/unknown-macro?name=html&amp;locale=en_GB&amp;version=2";></div>
               <!-- /// Smallbanner Start -->
             
             <!-- /// Content Start -->
             <div id="content">
                             <div id="ConfluenceContent"><p>This is the 
consolidated list of changes between Tapestry versions 5.2 and 5.3. To upgrade 
from 5.2 to 5.3, most users who are not using deprecated features will be able 
to just update the Maven dependency in their POM file (or <a 
href="release-notes-53.html">download</a> the new JAR file) and the new version 
will just work. However, please read carefully below before upgrading, and also 
review the&#160;<a href="how-to-upgrade.html">How to Upgrade</a> 
instructions.</p><p><strong>Contents</strong></p><p><style 
type="text/css">/*<![CDATA[*/
-div.rbtoc1608762058645 {padding: 0px;}
-div.rbtoc1608762058645 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1608762058645 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1636294816530 {padding: 0px;}
+div.rbtoc1636294816530 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1636294816530 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1608762058645">
+/*]]>*/</style></p><div class="toc-macro rbtoc1636294816530">
 <ul class="toc-indentation"><li><a 
href="#ReleaseNotes5.3-BreakingChanges">Breaking Changes</a></li><li><a 
href="#ReleaseNotes5.3-NewFeatures">New Features</a></li><li><a 
href="#ReleaseNotes5.3-Sub-tasksCompleted">Sub-tasks Completed</a></li><li><a 
href="#ReleaseNotes5.3-BugsFixed">Bugs Fixed</a></li><li><a 
href="#ReleaseNotes5.3-ImprovementsMade">Improvements Made</a></li><li><a 
href="#ReleaseNotes5.3-NewFeaturesImplemented">New Features 
Implemented</a></li><li><a href="#ReleaseNotes5.3-TasksCompleted">Tasks 
Completed</a></li></ul>
-</div><h2 id="ReleaseNotes5.3-BreakingChanges">Breaking 
Changes</h2><p>Tapestry now depends on Servlet API version <strong>2.5</strong> 
(prior releases worked with 2.4).</p><p>Tapestry no longer supports the ability 
to inject the component id into a String field. This was rarely (if ever) used 
functionality that caused unwanted conflicts elsewhere. When a component needs 
to know its component id, it may inject the <a class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/ComponentResources.html";>ComponentResources</a>
 object, and invoke <code>getCompleteId()</code>.</p><p>Tapestry templates 
without a &lt;!DOCTYPE&gt; are treated a bit differently in Tapestry 5.3; they 
are treated as if they have the HTML5 doctype (<code>&lt;!DOCTYPE 
html&gt;</code>). See further notes about <a 
href="component-templates.html">component templates</a>.</p><p>Many classes and 
interfaces that were deprecated in prior releases of Tapestry have been removed 
in Tapestry 5.3.
  See <a class="external-link" 
href="https://issues.apache.org/jira/browse/TAP5-1432";>the full list</a>. As 
always, you should use your IDE to find and replace all deprecated items 
<em>before</em> you upgrade. The following are the most significant of 
these:</p><ul><li>@IncludeJavaScriptLibrary and @IncludeStylesheet annotations 
(replaced by @<a class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/annotations/Import.html";>Import</a>)</li><li>@ApplicationState
 annotation (replaced with @<a class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/annotations/SessionState.html";>SessionState</a>)</li><li>"validateForm"
 event triggered by Form component (replaced with "validate" 
event)</li><li>Code and constants related to page pooling</li></ul><p>In 
addition, some of the abstract base classes used with the tapestry-func library 
have changed into interfaces; you will want to recompile, but may also need to 
adjust your code,
  depending on your compiler settings and use of the standard Java @Override 
annotation.</p><p>Because of the upgrade to Prototype 1.7, existing JavaScript 
that uses <code>value.toJSON()</code> may break; replace with 
<code>Object.toJSON(value)</code>.</p><p>Some number of interfaces and APIs in 
Tapestry 5.3 will be removed in Tapestry 5.4 or later. These 
include:</p><ul><li>The <a class="external-link" 
href="http://tapestry.apache.org/5.2/apidocs/org/apache/tapestry5/RenderSupport.html";>RenderSupport</a>
 environmental (replaced with the <a class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/services/javascript/JavaScriptSupport.html";>JavaScriptSupport</a>
 environmental)</li><li>The <a class="external-link" 
href="http://tapestry.apache.org/5.2/apidocs/org/apache/tapestry5/ajax/MultiZoneUpdate.html";>MultiZoneUpdate</a>
 object, replaced with <a class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/services/ajax/AjaxR
 esponseRenderer.html">AjaxResponseRenderer</a></li><li>ClassFactory service 
and ClassFab interface (replaced with the <a class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/ioc/services/PlasticProxyFactory.html";>PlasticProxyFactory</a>
 service and <a class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/plastic/PlasticClass.html";>PlasticClass</a>
 interface)</li><li>The "suppress redirects" functionality, which allows 
component event requests to respond directly with HTML, as in Tapestry 
4.</li></ul><h2 id="ReleaseNotes5.3-NewFeatures">New Features</h2><h3 
id="ReleaseNotes5.3-Underscore.js">Underscore.js</h3><p>Tapestry now bundles <a 
class="external-link" href="http://underscorejs.org/"; 
rel="nofollow">Underscore.js</a>, a useful library for expressive functional 
programming in the browser. It is used in <em>no conflict mode</em>, made 
available as the <code>T5._</code> object.</p><h3 id="ReleaseNotes5.3-UserAlerts
 ">User Alerts</h3><p>Tapestry now has a central mechanism for handling user 
alerts; this includes the AlertManager service and the Alerts component. Just 
add an Alerts component to your application's standard layout component and 
Tapestry takes care of the rest. Alerts can be added during both traditional 
and Ajax requests, and may be transient (displayed for a few seconds), normal, 
or sticky (persist until the user expressly dismisses them). Alerts support 
three severities: info, warn(ing) and error; the look and feel can be 
customized by overriding Tapestry's default CSS rules.</p><h3 
id="ReleaseNotes5.3-Renderingcomments">Rendering comments</h3><p>It is now 
possible to have Tapestry emit rendering comments; these are comments (such as 
<code>&lt;!--BEGIN Index:loop (context:Index.tml, line 15)--&gt;</code>) that 
can assist you in debugging markup output on the client-side. This is enabled 
for all requests using the configuration symbol 
<code>tapestry.component-render-tracing-enabl
 ed</code>, and can be added to any request by adding the query parameter 
<code>t:component-trace=true</code> to the URL. This will significantly 
increase the size of the rendered markup, but can be very helpful with complex 
layouts to determine which component was responsible for which portion of the 
rendered page.</p><h3 
id="ReleaseNotes5.3-Adaptableservicecontributions">Adaptable service 
contributions</h3><p>When making contributions to a service, you are no longer 
restricted to contributing a value that is assignable to the type associated 
with the configuration; objects of any type may be contributed, and the 
TypeCoercer service is used to coerce the value to the configuration's 
type.</p><h3 id="ReleaseNotes5.3-Componentdebuggingimprovements">Component 
debugging improvements</h3><p>Because of how Tapestry instruments your pages 
and components, using a debugger has been difficult with Tapestry page and 
component classes; any mutable field shows its default value in the debugger, 
 regardless of what has been written to the field or read out of it. In 
Tapestry 5.3, when in <em>development mode</em>, Tapestry now shadows values 
read from or written to such fields into the fields themselves (this has also 
been fixed in the 5.2.5 maintenance release). This shadowing does not occur in 
production, to avoid potential memory leaks.</p><h3 
id="ReleaseNotes5.3-Reloadingdisabledinproduction">Reloading disabled in 
production</h3><p>Tapestry no longer checks for changes to Tapestry component 
class files, templates, or message catalogs in production mode. It is assumed 
that Tapestry applications are packaged as WAR files in production, and that 
changing the WAR file causes the servlet container to redeploy the entire 
application. This change is to improve throughput and reduce memory consumption 
in production applications.</p><h3 
id="ReleaseNotes5.3-String-to-Enumcoercions">String-to-Enum 
coercions</h3><p>The TypeCoercer service now automatically generates 
String-to-Enum c
 oercions without requiring a specific contribution. This coercion is case 
insensitive. A contribution is still allowed, and will take priority over the 
default coercion, but is only necessary to support "aliases" for enum values 
outside those defined by the enum type itself.</p><h3 
id="ReleaseNotes5.3-JavaScriptandCSSminimization">JavaScript and CSS 
minimization</h3><p>A new optional library, tapestry-yuicompressor, has been 
added. This library adds support for compressing JavaScript libraries and CSS 
files using <a class="external-link" 
href="http://developer.yahoo.com/yui/compressor/"; rel="nofollow">the 
YUICompressor library</a>.</p><h3 
id="ReleaseNotes5.3-ComponentClassTransformWorkerService">ComponentClassTransformWorker
 Service</h3><p>The type of this service has changed from <a 
class="external-link" 
href="http://tapestry.apache.org/5.2/apidocs/org/apache/tapestry5/services/ComponentClassTransformWorker.html";>ComponentClassTransformWorker</a>
 to <a class="external-link" href="h
 
ttp://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/services/transform/ComponentClassTransformWorker2.html">ComponentClassTransformWorker2</a>.
 Contributions of type ComponentClassTransformWorker will automatically be 
coerced to the new ComponentClassTransformWorker2 interface. However, if you 
use the @Contribute annotation to mark the method that makes contributions, you 
will need to update the annotation to indicate the new service interface. If 
you followed the naming convention, and named your method 
<code>contributeComponentClassTransformWorker()</code>, you don't need to 
change anything.</p><h3 
id="ReleaseNotes5.3-AjaxResponseRenderer">AjaxResponseRenderer</h3><p>The <a 
class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/services/ajax/AjaxResponseRenderer.html";>AjaxResponseRenderer</a>
 service makes it easier to customize the partial page response generated when 
updating a <a class="external-link" href="http://tapestry.apache.org/5.3/
 apidocs/org/apache/tapestry5/corelib/components/Zone.html">Zone</a> component, 
replacing the <a class="external-link" 
href="http://tapestry.apache.org/5.2/apidocs/org/apache/tapestry5/ajax/MultiZoneUpdate.html";>MultiZoneUpdate</a>
 object as an event handler method return value.</p><h3 
id="ReleaseNotes5.3-TapestryJavaDoc">Tapestry JavaDoc</h3><p>Tapestry now 
includes a new library, tapestry-javadoc, that replaces the old Maven-based 
component report. Simply by placing a <code>@tapestrydoc</code> annotation into 
your component's JavaDoc, Tapestry will generate complete documentation as part 
of JavaDoc ... no more switching back and forth between JavaDoc and the 
Maven-generated component report, and no more reliance on Maven for component 
documentation.</p><h3 id="ReleaseNotes5.3-Skinning/ThemingSupport">Skinning / 
Theming Support</h3><p>Tapestry now adds the ability to skin and/or theme your 
pages and components. Its an extension of how Tapestry manages pages per 
locale, but adds new 
 application-defined <em>axes</em> along with rules to find the resources. See 
<a class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/services/pageload/ComponentResourceSelector.html";>ComponentResourceSelector</a>
 and <a class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/services/pageload/ComponentRequestSelectorAnalyzer.html";>ComponentRequestSelectorAnalyzer</a>.</p><p>There's
 also a new <a class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/corelib/components/Dynamic.html";>Dynamic</a>
 component, which uses an external template, not a Tapestry template, which can 
be selected at runtime.</p><h3 id="ReleaseNotes5.3-TreeComponent">Tree 
Component</h3><p>Tapestry finally has a proper <a class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/corelib/components/Tree.html";>Tree</a>
 component for navigating hierarchical data. It's efficient and Ajax-en
 abled, and fully customizable.</p><h3 
id="ReleaseNotes5.3-FormCancelledEvent">Form Cancelled Event</h3><p>Form 
components now recognize when the client-side form was cancelled. A new 
"cancelled" event is triggered early in the submission process, which allows 
the page to bypass all property updates and input validations, when 
desired.</p><h3 
id="ReleaseNotes5.3-ImplicitOrderedConfigurationConstraints">Implicit 
OrderedConfiguration Constraints</h3><p>When using <a class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/ioc/OrderedConfiguration.html";>OrderedConfiguration.add()</a>
 with no constraints, Tapestry will now implicitly order the added element 
after the previously added element, within the same method. In prior releases, 
such elements were added with no constraints. This makes it easier to 
contribute a group of related items with an implicit ordering.</p><h3 
id="ReleaseNotes5.3-NewComponentClassValidations">New Component Class 
Validations</h3>
 <p>Tapestry includes new validations of component classes to help cut down on 
many common errors; Tapestry now checks that component ids referenced by an 
event handler method (the <code>From</code><em>component id</em> part of the 
method name) actually matches a component defined in the template ... this 
quickly identifies typos in method names. This check can be disabled with a 
configuration symbol, as existing 5.2 apps may have such errors and still 
operate (that is, they may have <em>dead</em> event handler methods that will 
never be invoked).</p><h3 id="ReleaseNotes5.3-ApplicationFolder">Application 
Folder</h3><p>Tapestry can now be configured to execute inside a folder, which 
can be useful when running Tapestry inside a web application that contains 
other servlets or filters, as a way to prevent conflicts.</p><h3 
id="ReleaseNotes5.3-ImprovedQuickstartArchetype">Improved Quickstart 
Archetype</h3><p>The Maven quickstart archetype has been brought up to date, 
and now demonstrates 
 several new bits of common useful functionality. It also generates support for 
<a class="external-link" href="http://gradle.org/"; rel="nofollow">Gradle</a> as 
the build tool.</p><h3 id="ReleaseNotes5.3-WhitelistedPages">Whitelisted 
Pages</h3><p>The new @<a class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/annotations/WhitelistAccessOnly.html";>WhitelistAccessOnly</a>
 annotation marks a page as accessible only from white-listed clients; the 
rules for the whitelist are <a class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/services/security/ClientWhitelist.html";>extensible</a>.
 The default rule is that only access from localhost is on the white-list. Use 
this annotation on pages that may expose sensitive data, such as built-in 
application dashboards and the like.</p><h3 
id="ReleaseNotes5.3-PageCatalog">Page Catalog</h3><p>Tapestry applications now 
include a built-in "PageCatalog" page, which lists all the loaded 
 pages of the application, with details about construction time and number of 
components. The page requires whitelist access (see above comment), and some 
functionality is only available in development mode. PageCatalog can be used to 
load all pages of your application, which is useful to quickly spot problems in 
your pages ... especially useful when upgrading from a prior release of 
Tapestry.</p><h3 id="ReleaseNotes5.3-Client-SideJavaScriptLogging">Client-Side 
JavaScript Logging</h3><p>The integrated Blackbird client-side console has been 
removed. In its place are the floating console messages combined with logging 
to the Firebug or WebKit console. Tapestry no longer captures JavaScript 
initialization exceptions, so that they may be properly reported to the native 
console. These changes should make debugging client-side JavaScript much 
easier.</p><p>In addition, Tapestry will now display a pop-up window containing 
the full exception report for a server-side error that occurs during 
 an Ajax request, which makes debugging server-side problems that occur as part 
of an Ajax request <em>significantly</em> easier. Note that this logic is tied 
to performing a <a class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/corelib/components/Zone.html";>Zone</a>
 update.</p><h2 id="ReleaseNotes5.3-Sub-tasksCompleted">Sub-tasks 
Completed</h2><ul><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1433";>TAP5-1433</a>] -         
Remove deprecated methods of PerthreadManager service
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1434";>TAP5-1434</a>] -         
Remove old IOCSymbols class, and outdated constants from IOCConstants
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1435";>TAP5-1435</a>] -         
Remove proxy-related building method from ClassFabUtils, since moved to 
ClassFactory#createProxy() 
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1436";>TAP5-1436</a>] -         
Remove @ApplicationState annotation, replaced with @SessionState
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1437";>TAP5-1437</a>] -         
Remove @IncludeJavaScriptLibrary and @IncludeStylesheet annotations, replaced 
by @Import
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1438";>TAP5-1438</a>] -         
Remove OptimizedApplicationStateObject, replaced with 
OptimizedSessionStateObject
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1439";>TAP5-1439</a>] -         
Remove PrimaryKeyEncoder (replaced by ValueEncoder) 
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1440";>TAP5-1440</a>] -         
Remove "validateForm" event triggered by Form component (replaced with 
"validate" event)
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1441";>TAP5-1441</a>] -         
Remove ValidationMessagesSource, replaced with ComponentMessagesSource
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1455";>TAP5-1455</a>] -         
Remove code and constants related to page pooling
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1456";>TAP5-1456</a>] -         
Remove symbol for absolute URIs (now always absolute since 5.2)
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1457";>TAP5-1457</a>] -         
Remove SCRIPTS_AT_TOP from SymbolConstants
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1459";>TAP5-1459</a>] -         
Remove AbstractField.createDefaultParameterBinding() and 
AbstractTextField.defaultValue()
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1460";>TAP5-1460</a>] -         
Remove deprecated constants from FormInjector
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1461";>TAP5-1461</a>] -         
Remove Loop.volatile parameter (replaced with formState parameter in 5.1)
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1462";>TAP5-1462</a>] -         
Remove Element.getParent()
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1463";>TAP5-1463</a>] -         
Remove EndTagStyle.OMIT
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1464";>TAP5-1464</a>] -         
Remove ClasspathAssetAliasManager.toResourcePath()
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1465";>TAP5-1465</a>] -         
Remove Environment.getAccess()
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1466";>TAP5-1466</a>] -         
Remove deprecated methods from TapestryTestCase
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1467";>TAP5-1467</a>] -         
Remove deprecated methods from ClassTransformation
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1561";>TAP5-1561</a>] -         
Remove Dependency on ClassTransformer
-</li></ul>
-&#160;<h2 id="ReleaseNotes5.3-BugsFixed">Bugs Fixed</h2><ul><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-35";>TAP5-35</a>] -         
During an Ajax update, using a "var:" binding prefix causes an exception 
indicating that the page is not rendering
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-508";>TAP5-508</a>] -         
Exception reports can over-zealously squash exceptions 
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-698";>TAP5-698</a>] -         
PageTester's setupRequestFromURI incorrectly uses substring twice on same string
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-724";>TAP5-724</a>] -         
Tapestry generates invalid HTML (for strict and transitional doctypes)
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-763";>TAP5-763</a>] -         
Documentation for RenderSupport.addScriptLink() is invalid about where the 
included links go
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-821";>TAP5-821</a>] -         
Compnent event URLs for page in a library whose name contains the dash 
character will not be recognized by ComponentEventLinkEncoder
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-832";>TAP5-832</a>] -         
Hidden input field fails with coercion problem on empty value (patch incl)
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-835";>TAP5-835</a>] -         
Palette keeps resetting order of selected values on page reload
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-845";>TAP5-845</a>] -         
Informal Parameters are not allowed to have the value "" (the empty string)
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-875";>TAP5-875</a>] -         
BigTypesFormatter should allow for plain space as a grouping separator since 
FF2 replaces non-breaking space character \u00A0 (grouping separator for 
Sweden, Finland , etc) with normal space \u0020
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-877";>TAP5-877</a>] -         
Fade effect for error popups should be disabled in IE since it can't properly 
fade the images
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-891";>TAP5-891</a>] -         
RequestImpl.getSession(true) is broken
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-892";>TAP5-892</a>] -         
Use of Injection to provide Locale instances to components breaks when multiple 
Locales are configured as Spring Beans in AppContext
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-922";>TAP5-922</a>] -         
Allow a null or blank value to be supplied in Link.addParameter(), and render 
out the parameter name with the missing value
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-990";>TAP5-990</a>] -         
Add a ElementEffect of "none" that does no animation
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-998";>TAP5-998</a>] -         
Exception when a form element component is not enclosed by a Form is odd: uses 
the form's label to identify the component in question
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1117";>TAP5-1117</a>] -         
Exception message when binding a service interface (and service implementation 
not found) is confusing
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1146";>TAP5-1146</a>] -         
In a Multi-Zone update, if the identified Zone does not exist, the content is 
silently dropped (should log an error to the client-side console)
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1227";>TAP5-1227</a>] -         
Binding a parameter whose type is primitive to null results in a difficult to 
understand NullPointerException
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1251";>TAP5-1251</a>] -         
Spring integration should not assume the external context is successfully 
initialized
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1257";>TAP5-1257</a>] -         
Javascript error with IE Prototype still in 1.7
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1329";>TAP5-1329</a>] -         
Tapestry allows a template to define the same extension-point id twice, which 
causes difficult to understand duplicate component id exceptions
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1331";>TAP5-1331</a>] -         
EnumValueEncoder should identify legal values when a non-matching string is 
passed to it for conversion
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1336";>TAP5-1336</a>] -         
Changed classes do not reload under Tomcat
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1339";>TAP5-1339</a>] -         
Provide a single extension point to provide a ValidationDecorator instance for 
both traditional and Ajax renders
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1355";>TAP5-1355</a>] -         
Threading issue with SessionStateObjects
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1366";>TAP5-1366</a>] -         
Tapestry must honor the position of added tags in the &lt;head&gt; relative to 
the &lt;meta&gt; tags, for IE compatibility
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1367";>TAP5-1367</a>] -         
ajaxExceptionHandler Method name typo
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1368";>TAP5-1368</a>] -         
The onFailure function provided to Tapestry.ajaxRequest does not always get 
invoked
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1369";>TAP5-1369</a>] -         
ExceptionUtils.findCause() does not use the same approach as ExceptionAnalyzer
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1372";>TAP5-1372</a>] -         
BaseURLSource uses getLocalPort() rather than getServerPort()
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1374";>TAP5-1374</a>] -         
Quickstart layout component uses deprecated IncludeStyleSheet annotation
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1383";>TAP5-1383</a>] -         
TypeCoercer should "promote" coercions to primitive types into coercions to the 
corresponding wrapper type
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1392";>TAP5-1392</a>] -         
SVG assets rended with wrong content type
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1393";>TAP5-1393</a>] -         
Form component shoould push the BeanValidationContext into the Environment only 
after onPrepare()
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1408";>TAP5-1408</a>] -         
datefield popup does not have option to cancel
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1409";>TAP5-1409</a>] -         
datefield - cannot select same day in different month
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1418";>TAP5-1418</a>] -         
Image submits do not set the javascript submitting element value.
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1422";>TAP5-1422</a>] -         
java.util.ConcurrentModificationException when shutting down jmx server
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1423";>TAP5-1423</a>] -         
Selenium test failures attempt to take a screenshot, which fails on most 
browsers besides firefox
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1428";>TAP5-1428</a>] -         
When a parameter is bound but does not match a formal parameter, the exception 
should also include a list of formal parameter names
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1429";>TAP5-1429</a>] -         
PageTester does not call registry.performRegistryStartup or 
TapestryAppInitializer.announceStartup
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1442";>TAP5-1442</a>] -         
XSS vulnerability in calendar component
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1444";>TAP5-1444</a>] -         
Index pages in subfolders should have precedence over start pages
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1448";>TAP5-1448</a>] -         
Example for org.apache.tapestry5.corelib.components.Errors uses invalid xml
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1475";>TAP5-1475</a>] -         
In a multipart file upload, request parameters in the URL are not exposed, only 
parameters in the request body
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1483";>TAP5-1483</a>] -         
AssetPathConstructorImpl should use BaseURLSource
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1486";>TAP5-1486</a>] -         
When Tapestry adds CSS and JS files to the page, it should ensure that CSS 
files are above any JavaScript files
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1491";>TAP5-1491</a>] -         
In Chrome the buttons in the Palette component do not appear greyed-out when 
disabled
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1497";>TAP5-1497</a>] -         
No error message upon exception calling initializer function with German locale
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1500";>TAP5-1500</a>] -         
Update ComponentClassResolve's JavaDocs
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1510";>TAP5-1510</a>] -         
The @Advise annotation limits advice to just a specific interface type
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1511";>TAP5-1511</a>] -         
RequestSecurityManager.checkPageSecurity() should return request security 
instead of INSECURE in case when security is disabled
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1527";>TAP5-1527</a>] -         
BeanEditForm loses object found by onPrepare() during render
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1533";>TAP5-1533</a>] -         
File download breaks zone managers due to unload event
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1535";>TAP5-1535</a>] -         
When there's a type mismatch between a container component at the field with 
@InjectComponent, the type of the containing component should be part of the 
exception message
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1546";>TAP5-1546</a>] -         
TranslatorSource incorrectly annotated with @UsesConfiguration when it should 
now be @UsesMappedConfiguration (as of 5.2)
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1549";>TAP5-1549</a>] -         
ParameterWorker forces evaluation of default method, even if the parameter is 
bound by other means
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1551";>TAP5-1551</a>] -         
FormFragment change visibility/hide and remove event listeners should call 
event.stop() to prevent container fragments from also being hidden
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1554";>TAP5-1554</a>] -         
Tapestry fails on OpenJDK with a java.lang.reflect.GenericSignatureFormatError 
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1555";>TAP5-1555</a>] -         
Property Expression Array Disallows null and this
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1562";>TAP5-1562</a>] -         
Tree leafs are not selectable
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1563";>TAP5-1563</a>] -         
Need configuration for queue size w/ ParallelExecutor; as is, limited to pool 
core size threads, rather than pool max size
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1571";>TAP5-1571</a>] -         
t5-console.js throws exception in Chrome for debug, info, and warn
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1576";>TAP5-1576</a>] -         
JPA Integration 5.3.0 with Primary Key Entity Classes Fails
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1577";>TAP5-1577</a>] -         
Duplication in operation trace when invoking certain methods
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1578";>TAP5-1578</a>] -         
When toggling the visibility of a form fragment, the effective visibility 
doesn't change until after the animation completes
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1580";>TAP5-1580</a>] -         
A Form with an event listener for "canceled" event can cause an NPE popping off 
a BeanEditContext from the Environment that wasn't pushed
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1585";>TAP5-1585</a>] -         
@InjectPage annotation can leak page instances from one locale to another
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1593";>TAP5-1593</a>] -         
Type org.apache.tapestry5.services.HttpError should be an allowed return value 
from Ajax action requests
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1596";>TAP5-1596</a>] -         
Tapestry should validate that component ids reference in event handler method 
names (or @OnEvent annotation) exist
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1598";>TAP5-1598</a>] -         
AlertManager service does the wrong thing if the Ajax request will terminate 
with a redirect
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1599";>TAP5-1599</a>] -         
Upgrade Selenium to 2.3.1
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1605";>TAP5-1605</a>] -         
Template parsing of expansions can't handle map expressions
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1608";>TAP5-1608</a>] -         
tapestry-ioc establishes dependency on TestNG that brings much unwanted stuff 
into runtime classpath
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1612";>TAP5-1612</a>] -         
Tapestry.updateZoneOnEvent() has a poorly formatted message when the element is 
not found
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1613";>TAP5-1613</a>] -         
Mixin inherited from parent model does not inherit order
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1614";>TAP5-1614</a>] -         
Component Javadocs need clarification on encoder parameter being "required"
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1620";>TAP5-1620</a>] -         
Tml parsing expression error
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1629";>TAP5-1629</a>] -         
A Tree component that does not have a selection model bound should not track 
selections on the client or server
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1630";>TAP5-1630</a>] -         
A TreeModelAdapter that returns null from getChildren() causes an NPE
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1631";>TAP5-1631</a>] -         
Tapestry creates client ids for error popups containing the ':' character, 
which is problematic for some browsers (and some testing tools)
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1632";>TAP5-1632</a>] -         
When a submit component does not have a specific id, the default id "submit" 
collides ont the client side with the HTMLFormElement.submit() method, causing 
JavaScript errors when the form is submitted
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1636";>TAP5-1636</a>] -         
Tapestry does not compile using OpenJDK
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1642";>TAP5-1642</a>] -         
A mixin parameter that is required but also provides a default property results 
in an "unbound parameter" exception, starting in Tapestry 5.3
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1643";>TAP5-1643</a>] -         
Restore ability to contribute a library mapping that includes the "/" character 
(as was possible in 5.1)
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1644";>TAP5-1644</a>] -         
Symbol tapestry.compatibility.unknown-component-id-check-enabled when set to 
false still acts as if true
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1647";>TAP5-1647</a>] -         
PerThreadOperationTracker uses a synchronized block with high thread contention
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1648";>TAP5-1648</a>] -         
AbstractReloadableObjectCreator is still based on Javassist APIs, not plastic
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1650";>TAP5-1650</a>] -         
On a cold start with a large number of incoming requests, Tapestry can deadlock 
inside PlasticClassLoader/PlasticClassPool
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1652";>TAP5-1652</a>] -         
template expansion no longer trims whitespace off the right side of the 
expansion
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1656";>TAP5-1656</a>] -         
Problem when inheriting annotated methods from a abstract superclass
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1657";>TAP5-1657</a>] -         
Environment should use the UnknownValueException class, for better reporting on 
the exception page
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1664";>TAP5-1664</a>] -         
@InjectResource annotation should be removed, behavior of @Inject on a field 
should be changed to consider resources first
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1670";>TAP5-1670</a>] -         
Debug output includes [[invoking-method]] (i.e., missing message key) when 
invoking contribution methods
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1671";>TAP5-1671</a>] -         
Running "gradle idea" fails on a clean checkout
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1673";>TAP5-1673</a>] -         
Tapestry 5.2 property expressions supported references to public static fields 
of classes; this is not supported by 5.3
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1675";>TAP5-1675</a>] -         
Tapestry 5.3 allows a subcomponent to define a parameter with the same name as 
a base component
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1676";>TAP5-1676</a>] -         
When an @InjectComponent annotation fails due to missing component, it should 
identify the class name and field for the injection
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1680";>TAP5-1680</a>] -         
A mixin with a formal parameter will prevent an informal parameter of the same 
name from being bound on the component 
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1682";>TAP5-1682</a>] -         
5.3-beta-x Maven Archetype does not work
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1685";>TAP5-1685</a>] -         
TapestryModule contributes a MarkupRendererFilter with id 
'InjectDefaultStyleheet' ; the id has a typo and should be 
'InjectDefaultStylesheet'
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1686";>TAP5-1686</a>] -         
Exceptions at application startup when the current directory includes spaces in 
the path name
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1687";>TAP5-1687</a>] -         
ImportWorker (responsible for @Import) creates improper advice for importing 
stacks, calling invocation.proceed() too often
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1693";>TAP5-1693</a>] -         
Spring beans of type java.lang.String can confuse Tapestry, which will use them 
in preference to other injections, such as @Symbol
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1699";>TAP5-1699</a>] -         
JpaValueEncoder.toValue throws NPE when mapping annotations are placed on 
methods
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1700";>TAP5-1700</a>] -         
Changes to partial markup rendering mean that the critical elementId JSON key 
is no longer set in the response when injecting content into a Form
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1701";>TAP5-1701</a>] -         
If the incoming request does not include a locale in the path, the application 
uses the server locale (not a locale extracted from the request headers)
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1706";>TAP5-1706</a>] -         
JS syntax error in Tapestry.ajaxRequest() when Ajax fails
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1710";>TAP5-1710</a>] -         
AssetSource service can retain large numbers of Asset and Resource objects
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1712";>TAP5-1712</a>] -         
Tapestry.DEBUG_ENABLED, when false (default), should prevent debugging output 
from being displayed, but is ignored
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1713";>TAP5-1713</a>] -         
A property expression that generates a list can not reference public static 
field
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1716";>TAP5-1716</a>] -         
Zone updates fail due to underscore.js critical bug
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1717";>TAP5-1717</a>] -         
Assets get cache expiry header of year 1979 in production mode
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1720";>TAP5-1720</a>] -         
HTML 5 doctype is not preserved, gets transformed into XHTML 1.0
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1721";>TAP5-1721</a>] -         
A JavaScript typo prevents the error icon for fields containing validation 
errors from appearing
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1723";>TAP5-1723</a>] -         
Tapestry should honor the javax.annotation.PostConstruct as the same as 
Tapestry PostInjection annotation 
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1724";>TAP5-1724</a>] -         
In rare cases, Tapestry may fail to transform a class due to a  "JSR/RET are 
not supported with computeFrames option" exception
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1726";>TAP5-1726</a>] -         
JavaScript Assets fail to load for already-minified JS assets in Production mode
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1727";>TAP5-1727</a>] -         
PageCatalog page can fail with an odd ClassCastException
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1728";>TAP5-1728</a>] -         
Quickstart archetype does not include the build.gradle
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1731";>TAP5-1731</a>] -         
Dynamic loading of JavaScript libraries is sometimes broken in IE (in rare 
cases)
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1732";>TAP5-1732</a>] -         
Tapestry should not swallow client-side initialization exceptions, as that 
makes it harder to debug
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1737";>TAP5-1737</a>] -         
Loading all pages using PageCatalog page fails with java.lang.ClassFormatError: 
Illegal field modifiers in class 
org/apache/tapestry5/corelib/pages/package-info: 0x12
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1742";>TAP5-1742</a>] -         
AfterRender() in Loop component should not short circuit
-</li></ul>
-&#160;<h2 id="ReleaseNotes5.3-ImprovementsMade">Improvements 
Made</h2><ul><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1653";>TAP5-1653</a>] -         
Update dependencies to latest versions
-</li><li>[<a href="https://issues.apache.org/jira/browse/TAP5-83";>TAP5-83</a>] 
-         add a contructor with page class as parameter to BeanBlockContribution
-</li><li>[<a href="https://issues.apache.org/jira/browse/TAP5-98";>TAP5-98</a>] 
-         The TypeCoercer should be able to coerce String to Enum types, even 
without a specific contribution
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-450";>TAP5-450</a>] -         
Add rel="nofollow" to t:grid sort links
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-455";>TAP5-455</a>] -         
Allow discarding of persistent field changes for specific strategy only
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-606";>TAP5-606</a>] -         
Add Finnish translation to javascript messages (Translated messages attached.)
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-650";>TAP5-650</a>] -         
Enhance form autofocus to accept fieldname as a value
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-683";>TAP5-683</a>] -         
The Tapestry object should include an info() for logging to the console (as it 
already includes error(), debug(), etc.)
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-741";>TAP5-741</a>] -         
CSS files should be automatically minimalized, like JavaScript files
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-743";>TAP5-743</a>] -         
It is too much work to hide all T5 pages inside a virtual folder, for use in 
mixed-implementation deployments
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-746";>TAP5-746</a>] -         
Zone should include an option to periodically update itself
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-840";>TAP5-840</a>] -         
Support character references in tml files with HTML 5 Doctype
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-853";>TAP5-853</a>] -         
Move away from Javassist
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-888";>TAP5-888</a>] -         
The Tapestry.ErrorPopup client-side class should create the div/span as needed 
(not at page initialization)
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-933";>TAP5-933</a>] -         
EnumValueEncoder will create a ValueEncoder even when there's a specific 
String-&gt;Enum type coercion
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-939";>TAP5-939</a>] -         
Chinese localization for ValidationMessages_zh_CN
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-941";>TAP5-941</a>] -         
Chinese localization for corelib components
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-955";>TAP5-955</a>] -         
Add @Optional annotation to mark contribution methods that can be ignored if 
the indicated service does not exist
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-980";>TAP5-980</a>] -         
ValidationDecorator should be a service, rather than just a contributed object, 
to make it easier to override
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1040";>TAP5-1040</a>] -         
Allow HTML5 doctype to be printed
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1199";>TAP5-1199</a>] -         
ClassTransformation should include an API specifically for adding a component 
event handler to a component class
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1208";>TAP5-1208</a>] -         
In development mode, Tapestry should "shadow" field &amp; parameter values to 
instance variables, to assist with debugging
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1308";>TAP5-1308</a>] -         
When an Ajax requests replies with the error page, Tapestry should present the 
contents in a popup window
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1310";>TAP5-1310</a>] -         
The Enum ValueEncoder should be case insensitive
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1320";>TAP5-1320</a>] -         
ServiceActivity improvements
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1323";>TAP5-1323</a>] -         
Change Quickstart Template to Match New Site Design
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1348";>TAP5-1348</a>] -         
Component report should accept multiple root packages
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1350";>TAP5-1350</a>] -         
TapestryFilter should allow sub-classes to specify additional module classes, 
not just ModuleDefs
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1356";>TAP5-1356</a>] -         
When contributing to a service configuration, values should be coerced to the 
correct type rather than rejected if not the correct type
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1359";>TAP5-1359</a>] -         
Add way to be notified that the Registry is about to shutdown (but before 
service proxies are disabled)
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1361";>TAP5-1361</a>] -         
Tapestry should include a coercion from Flow to List
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1362";>TAP5-1362</a>] -         
Tapestry should provide coercions from String to JSONObject and JSONArray
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1378";>TAP5-1378</a>] -         
Allow Delegate component to be used for creating in-template components
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1382";>TAP5-1382</a>] -         
Tapestry should provide a coercion from Flow to boolean, that evaluates to true 
if the Flow is not empty
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1389";>TAP5-1389</a>] -         
Access properties of generic page and component fields 
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1390";>TAP5-1390</a>] -         
Functional programming improvements
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1396";>TAP5-1396</a>] -         
Invocation class should provide access to the annotations placed on the method 
beeing invoked
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1414";>TAP5-1414</a>] -         
Add HOSTNAME symbol to SymbolConstants, use in BaseUrlSource
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1419";>TAP5-1419</a>] -         
Tapestry tests should be able to be run from more than just Jetty
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1431";>TAP5-1431</a>] -         
Quickstart should enable the Blackbird client-side console
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1450";>TAP5-1450</a>] -         
Component report should print information about deprecated components or 
deprecated parameters
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1451";>TAP5-1451</a>] -         
Form component should indicate that a form submission was canceled on the 
client side
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1458";>TAP5-1458</a>] -         
Mark tapestry.suppress-redirect-from-action-requests as deprecated, for removal 
in Tapestry 5.4
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1469";>TAP5-1469</a>] -         
Allow for multiple application root packages by contributing additional 
LibraryMappings with empty virtual folder
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1473";>TAP5-1473</a>] -         
Running integration tests with Tomcat6Runner it should be possible to configure 
the application under test by providing a local context.xml file
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1476";>TAP5-1476</a>] -         
Deprecate MultiZoneUpdate, replace with an injectable service to collect zone 
updates
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1482";>TAP5-1482</a>] -         
Upgrade Prototype to 1.7 / Scriptaculous 1.9.0
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1485";>TAP5-1485</a>] -         
Quickstart archetype should define a ProductionModeModule and 
DevelopmentModeModule with support inside web.xml
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1489";>TAP5-1489</a>] -         
Re-storage of session attributes at end of request should be configurable (can 
be set to off for non-clustered applications)
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1492";>TAP5-1492</a>] -         
New features for SeleniumTestCase
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1495";>TAP5-1495</a>] -         
Tapestry's property expression language should support map creation
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1496";>TAP5-1496</a>] -         
Link components should support easily adding request parameters to the 
generated link
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1508";>TAP5-1508</a>] -         
Reduce memory utilization of Tapestry page instances
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1519";>TAP5-1519</a>] -         
Ensure that all calls to invoke methods and constructors with dependencies are 
tracked with the OperationTracker
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1521";>TAP5-1521</a>] -         
JavaScriptSupport.addInitializerCall() should support JSONArray of function 
parameters, as RenderSupport does
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1523";>TAP5-1523</a>] -         
Dutch validation messages
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1538";>TAP5-1538</a>] -         
Optimize client-side URL rebuilding in IE 7
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1539";>TAP5-1539</a>] -         
Optimize document scans used by Tapestry.FieldEventManager to not locate the 
label or icon until actually needed
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1541";>TAP5-1541</a>] -         
Optimization load of scripts (javascripts and stylesheets)
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1547";>TAP5-1547</a>] -         
Tapestry should include built-in coercions from String to JSONObject and 
JSONArray
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1558";>TAP5-1558</a>] -         
FormFragment should allow more fine grained control over when to be considered 
"invisible"
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1564";>TAP5-1564</a>] -         
RenderSupport is used in Upload.java even though it has been deprecated
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1565";>TAP5-1565</a>] -         
It should be easier to make a series of contributions to an 
OrderedConfiguration so that the contributions are in sequential orderer
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1567";>TAP5-1567</a>] -         
Contributions to the ValueEncoderSource service should allow bare 
ValueEncoders, which can be coerced to ValueEncoderFactory
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1574";>TAP5-1574</a>] -         
Provide constants for available data types
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1581";>TAP5-1581</a>] -         
MarkupWriterImpl makes many, many defensive copies of its listener list
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1588";>TAP5-1588</a>] -         
French properties file for the kaptcha component
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1591";>TAP5-1591</a>] -         
tapestry-ioc should not depend on tapestry-json
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1594";>TAP5-1594</a>] -         
Provide edit block for Kaptcha component
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1597";>TAP5-1597</a>] -         
Update Italian local support
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1603";>TAP5-1603</a>] -         
Tapestry should omit stack frames related to the OperationTracker from 
exception report
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1617";>TAP5-1617</a>] -         
PeriodicExecutor should support CRON expressions
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1621";>TAP5-1621</a>] -         
TypeCoercer currently uses Object -&gt; String and String -&gt; Boolean, there 
should be a direct coercion from Object -&gt; Boolean for &lt;t:if/&gt; 
performance.
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1627";>TAP5-1627</a>] -         
Enable OperationTracker to produce debug trace of all operations
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1628";>TAP5-1628</a>] -         
Have Submit documentation explicitly state when the disabled attribute is 
evaluated
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1633";>TAP5-1633</a>] -         
Hardcoded value for "Dismiss All" in AlertManager
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1637";>TAP5-1637</a>] -         
Tapestry should use SoftReferences for page instances, rather than run a 
janitor thread to clean them up
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1638";>TAP5-1638</a>] -         
Reduce thread contention inside ComponentClassResolverImpl
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1639";>TAP5-1639</a>] -         
Missing danish translations
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1641";>TAP5-1641</a>] -         
The ValueEncoder for Hibernate entity types should encode transient instances 
as null rather than throw an exception
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1649";>TAP5-1649</a>] -         
ComponentClassResolver should allow "common package root name" of a single 
term, and not require two terms
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1651";>TAP5-1651</a>] -         
It should be possible for a LinkCreationListener to override Tapestry and make 
a Link secure or insecure after the fact
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1663";>TAP5-1663</a>] -         
The @BindParameter annotation should support inherited parameters
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1665";>TAP5-1665</a>] -         
Tapestry could create non-singleton services more efficiently
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1669";>TAP5-1669</a>] -         
Palette Documentation
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1674";>TAP5-1674</a>] -         
Add ServiceBinder.withSimpleId() that generates a service id from the 
implementation class name
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1677";>TAP5-1677</a>] -         
Use Symbols for Default Component Parameter Values
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1683";>TAP5-1683</a>] -         
RegistryShutdownHub broken link on "Service Life Cycle" documentation page
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1690";>TAP5-1690</a>] -         
OperationTracker should be injectable in Tapestry components
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1692";>TAP5-1692</a>] -         
Underscore.js should be used in no-conflict mode
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1702";>TAP5-1702</a>] -         
T5 to log where it thinks the Application Module should be if not found
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1747";>TAP5-1747</a>] -         
Make labels generated by Checklist component clickable
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1748";>TAP5-1748</a>] -         
Alerts component should render informal parameters
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1413";>TAP5-1413</a>] -         
Add Test to make sure the ability to give a multizoneupdate a String rather 
than a zone works
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-953";>TAP5-953</a>] -         
org.apache.tapestry5.dom.Node.remove() should set nextSibling to null
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1505";>TAP5-1505</a>] -         
Let URLEventContext implement its own toString()
-</li></ul>
-
-&#160;<h2 id="ReleaseNotes5.3-NewFeaturesImplemented">New Features 
Implemented</h2><ul><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-71";>TAP5-71</a>] -         Add 
a Tree component in corelib
-</li><li>[<a href="https://issues.apache.org/jira/browse/TAP5-73";>TAP5-73</a>] 
-         JavaScript libraries should be automatically packed/minimalized
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-149";>TAP5-149</a>] -         
Add JPA-annotation-driven validator
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-546";>TAP5-546</a>] -         
ObjectLocator.getService(Class) should be expanded to pass a varargs of marker 
annotation types
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-742";>TAP5-742</a>] -         
Add optional component tracing comments to rendered output
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-753";>TAP5-753</a>] -         
Provide some way to get the current page instance being rendered inside a 
service
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1385";>TAP5-1385</a>] -         
Provide support for JSR-330
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1421";>TAP5-1421</a>] -         
Create a standard way to track messages to be presented to the user
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1472";>TAP5-1472</a>] -         
Provide basic integration with JPA 2
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1502";>TAP5-1502</a>] -         
Make it easier to create JavaScript Stacks using a standard implementation with 
an OrderedConfiguration
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1528";>TAP5-1528</a>] -         
Tapestry-specific JavaDoc plugin that generates parameter documentation, etc.
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1542";>TAP5-1542</a>] -         
Support for skinning/theming Tapestry pages
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1543";>TAP5-1543</a>] -         
Introduce Tapestry schema in version 5_3
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1550";>TAP5-1550</a>] -         
Provide a multiple selection component that renders check boxes for available 
selection options
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1572";>TAP5-1572</a>] -         
Discard unused page instances if not used within a certain period
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1586";>TAP5-1586</a>] -         
Introduce the Kaptcha component
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1587";>TAP5-1587</a>] -         
Provide support for Serbian locale
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1595";>TAP5-1595</a>] -         
Provide support for Macedonian locale
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1609";>TAP5-1609</a>] -         
Generate Maven archetype from within gradle builds
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1678";>TAP5-1678</a>] -         
Add a builtin PageCatalog page that gives a listing of all loaded pages, with 
option to force load all pages
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1688";>TAP5-1688</a>] -         
Tapestry should expose environment variables as symbols
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1696";>TAP5-1696</a>] -         
Tapestry should include a @WhitelistOnly page annotation that only allows 
access to the page when it is accessed from a local (or otherwise acceptable) 
host
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1708";>TAP5-1708</a>] -         
Add ability to control where Ajax-injected CSS links are placed
-</li></ul>
-&#160;<h2 id="ReleaseNotes5.3-TasksCompleted">Tasks Completed</h2><ul><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-116";>TAP5-116</a>] -         
Replace Maven build with Gradle build
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-161";>TAP5-161</a>] -         
Devise test stategy for DateField and other DHTML/JS intensive components
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-973";>TAP5-973</a>] -         
Identify and fix the issue that causes intermittent build failures
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1286";>TAP5-1286</a>] -         
Remove Maven APT files for documentation that has moved into the Confluence wiki
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1397";>TAP5-1397</a>] -         
Remove Tutorial source from SVN
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1402";>TAP5-1402</a>] -         
Remove deprecated Alias service (which was replaced in 5.1 with the simpler 
ServiceOverride service)
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1432";>TAP5-1432</a>] -         
Remove classes and methods deprecated in Tapestry 5.2
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1514";>TAP5-1514</a>] -         
Upgrade YUICompressor dependency to latest, 2.4.6
-</li><li>[<a 
href="https://issues.apache.org/jira/browse/TAP5-1610";>TAP5-1610</a>] -         
Provide JavaDoc styling similar to Tapestry website's style 
-</li></ul>
-&#160;<p>&#160;&#160;</p></div>
+</div><h2 id="ReleaseNotes5.3-BreakingChanges">Breaking 
Changes</h2><p>Tapestry now depends on Servlet API version <strong>2.5</strong> 
(prior releases worked with 2.4).</p><p>Tapestry no longer supports the ability 
to inject the component id into a String field. This was rarely (if ever) used 
functionality that caused unwanted conflicts elsewhere. When a component needs 
to know its component id, it may inject the <a class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/ComponentResources.html";>ComponentResources</a>
 object, and invoke <code>getCompleteId()</code>.</p><p>Tapestry templates 
without a &lt;!DOCTYPE&gt; are treated a bit differently in Tapestry 5.3; they 
are treated as if they have the HTML5 doctype (<code>&lt;!DOCTYPE 
html&gt;</code>). See further notes about <a 
href="component-templates.html">component templates</a>.</p><p>Many classes and 
interfaces that were deprecated in prior releases of Tapestry have been removed 
in Tapestry 5.3.
  See <a class="external-link" 
href="https://issues.apache.org/jira/browse/TAP5-1432";>the full list</a>. As 
always, you should use your IDE to find and replace all deprecated items 
<em>before</em> you upgrade. The following are the most significant of 
these:</p><ul><li>@IncludeJavaScriptLibrary and @IncludeStylesheet annotations 
(replaced by @<a class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/annotations/Import.html";>Import</a>)</li><li>@ApplicationState
 annotation (replaced with @<a class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/annotations/SessionState.html";>SessionState</a>)</li><li>"validateForm"
 event triggered by Form component (replaced with "validate" 
event)</li><li>Code and constants related to page pooling</li></ul><p>In 
addition, some of the abstract base classes used with the tapestry-func library 
have changed into interfaces; you will want to recompile, but may also need to 
adjust your code,
  depending on your compiler settings and use of the standard Java @Override 
annotation.</p><p>Because of the upgrade to Prototype 1.7, existing JavaScript 
that uses <code>value.toJSON()</code> may break; replace with 
<code>Object.toJSON(value)</code>.</p><p>Some number of interfaces and APIs in 
Tapestry 5.3 will be removed in Tapestry 5.4 or later. These 
include:</p><ul><li>The <a class="external-link" 
href="http://tapestry.apache.org/5.2/apidocs/org/apache/tapestry5/RenderSupport.html";>RenderSupport</a>
 environmental (replaced with the <a class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/services/javascript/JavaScriptSupport.html";>JavaScriptSupport</a>
 environmental)</li><li>The <a class="external-link" 
href="http://tapestry.apache.org/5.2/apidocs/org/apache/tapestry5/ajax/MultiZoneUpdate.html";>MultiZoneUpdate</a>
 object, replaced with <a class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/services/ajax/AjaxR
 esponseRenderer.html">AjaxResponseRenderer</a></li><li>ClassFactory service 
and ClassFab interface (replaced with the <a class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/ioc/services/PlasticProxyFactory.html";>PlasticProxyFactory</a>
 service and <a class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/plastic/PlasticClass.html";>PlasticClass</a>
 interface)</li><li>The "suppress redirects" functionality, which allows 
component event requests to respond directly with HTML, as in Tapestry 
4.</li></ul><h2 id="ReleaseNotes5.3-NewFeatures">New Features</h2><h3 
id="ReleaseNotes5.3-Underscore.js">Underscore.js</h3><p>Tapestry now bundles <a 
class="external-link" href="http://underscorejs.org/"; 
rel="nofollow">Underscore.js</a>, a useful library for expressive functional 
programming in the browser. It is used in <em>no conflict mode</em>, made 
available as the <code>T5._</code> object.</p><h3 id="ReleaseNotes5.3-UserAlerts
 ">User Alerts</h3><p>Tapestry now has a central mechanism for handling user 
alerts; this includes the AlertManager service and the Alerts component. Just 
add an Alerts component to your application's standard layout component and 
Tapestry takes care of the rest. Alerts can be added during both traditional 
and Ajax requests, and may be transient (displayed for a few seconds), normal, 
or sticky (persist until the user expressly dismisses them). Alerts support 
three severities: info, warn(ing) and error; the look and feel can be 
customized by overriding Tapestry's default CSS rules.</p><h3 
id="ReleaseNotes5.3-Renderingcomments">Rendering comments</h3><p>It is now 
possible to have Tapestry emit rendering comments; these are comments (such as 
<code>&lt;!--BEGIN Index:loop (context:Index.tml, line 15)--&gt;</code>) that 
can assist you in debugging markup output on the client-side. This is enabled 
for all requests using the configuration symbol 
<code>tapestry.component-render-tracing-enabl
 ed</code>, and can be added to any request by adding the query parameter 
<code>t:component-trace=true</code> to the URL. This will significantly 
increase the size of the rendered markup, but can be very helpful with complex 
layouts to determine which component was responsible for which portion of the 
rendered page.</p><h3 
id="ReleaseNotes5.3-Adaptableservicecontributions">Adaptable service 
contributions</h3><p>When making contributions to a service, you are no longer 
restricted to contributing a value that is assignable to the type associated 
with the configuration; objects of any type may be contributed, and the 
TypeCoercer service is used to coerce the value to the configuration's 
type.</p><h3 id="ReleaseNotes5.3-Componentdebuggingimprovements">Component 
debugging improvements</h3><p>Because of how Tapestry instruments your pages 
and components, using a debugger has been difficult with Tapestry page and 
component classes; any mutable field shows its default value in the debugger, 
 regardless of what has been written to the field or read out of it. In 
Tapestry 5.3, when in <em>development mode</em>, Tapestry now shadows values 
read from or written to such fields into the fields themselves (this has also 
been fixed in the 5.2.5 maintenance release). This shadowing does not occur in 
production, to avoid potential memory leaks.</p><h3 
id="ReleaseNotes5.3-Reloadingdisabledinproduction">Reloading disabled in 
production</h3><p>Tapestry no longer checks for changes to Tapestry component 
class files, templates, or message catalogs in production mode. It is assumed 
that Tapestry applications are packaged as WAR files in production, and that 
changing the WAR file causes the servlet container to redeploy the entire 
application. This change is to improve throughput and reduce memory consumption 
in production applications.</p><h3 
id="ReleaseNotes5.3-String-to-Enumcoercions">String-to-Enum 
coercions</h3><p>The TypeCoercer service now automatically generates 
String-to-Enum c
 oercions without requiring a specific contribution. This coercion is case 
insensitive. A contribution is still allowed, and will take priority over the 
default coercion, but is only necessary to support "aliases" for enum values 
outside those defined by the enum type itself.</p><h3 
id="ReleaseNotes5.3-JavaScriptandCSSminimization">JavaScript and CSS 
minimization</h3><p>A new optional library, tapestry-yuicompressor, has been 
added. This library adds support for compressing JavaScript libraries and CSS 
files using <a class="external-link" 
href="http://developer.yahoo.com/yui/compressor/"; rel="nofollow">the 
YUICompressor library</a>.</p><h3 
id="ReleaseNotes5.3-ComponentClassTransformWorkerService">ComponentClassTransformWorker
 Service</h3><p>The type of this service has changed from <a 
class="external-link" 
href="http://tapestry.apache.org/5.2/apidocs/org/apache/tapestry5/services/ComponentClassTransformWorker.html";>ComponentClassTransformWorker</a>
 to <a class="external-link" href="h
 
ttp://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/services/transform/ComponentClassTransformWorker2.html">ComponentClassTransformWorker2</a>.
 Contributions of type ComponentClassTransformWorker will automatically be 
coerced to the new ComponentClassTransformWorker2 interface. However, if you 
use the @Contribute annotation to mark the method that makes contributions, you 
will need to update the annotation to indicate the new service interface. If 
you followed the naming convention, and named your method 
<code>contributeComponentClassTransformWorker()</code>, you don't need to 
change anything.</p><h3 
id="ReleaseNotes5.3-AjaxResponseRenderer">AjaxResponseRenderer</h3><p>The <a 
class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/services/ajax/AjaxResponseRenderer.html";>AjaxResponseRenderer</a>
 service makes it easier to customize the partial page response generated when 
updating a <a class="external-link" href="http://tapestry.apache.org/5.3/
 apidocs/org/apache/tapestry5/corelib/components/Zone.html">Zone</a> component, 
replacing the <a class="external-link" 
href="http://tapestry.apache.org/5.2/apidocs/org/apache/tapestry5/ajax/MultiZoneUpdate.html";>MultiZoneUpdate</a>
 object as an event handler method return value.</p><h3 
id="ReleaseNotes5.3-TapestryJavaDoc">Tapestry JavaDoc</h3><p>Tapestry now 
includes a new library, tapestry-javadoc, that replaces the old Maven-based 
component report. Simply by placing a <code>@tapestrydoc</code> annotation into 
your component's JavaDoc, Tapestry will generate complete documentation as part 
of JavaDoc ... no more switching back and forth between JavaDoc and the 
Maven-generated component report, and no more reliance on Maven for component 
documentation.</p><h3 id="ReleaseNotes5.3-Skinning/ThemingSupport">Skinning / 
Theming Support</h3><p>Tapestry now adds the ability to skin and/or theme your 
pages and components. Its an extension of how Tapestry manages pages per 
locale, but adds new 
 application-defined <em>axes</em> along with rules to find the resources. See 
<a class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/services/pageload/ComponentResourceSelector.html";>ComponentResourceSelector</a>
 and <a class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/services/pageload/ComponentRequestSelectorAnalyzer.html";>ComponentRequestSelectorAnalyzer</a>.</p><p>There's
 also a new <a class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/corelib/components/Dynamic.html";>Dynamic</a>
 component, which uses an external template, not a Tapestry template, which can 
be selected at runtime.</p><h3 id="ReleaseNotes5.3-TreeComponent">Tree 
Component</h3><p>Tapestry finally has a proper <a class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/corelib/components/Tree.html";>Tree</a>
 component for navigating hierarchical data. It's efficient and Ajax-en
 abled, and fully customizable.</p><h3 
id="ReleaseNotes5.3-FormCancelledEvent">Form Cancelled Event</h3><p>Form 
components now recognize when the client-side form was cancelled. A new 
"cancelled" event is triggered early in the submission process, which allows 
the page to bypass all property updates and input validations, when 
desired.</p><h3 
id="ReleaseNotes5.3-ImplicitOrderedConfigurationConstraints">Implicit 
OrderedConfiguration Constraints</h3><p>When using <a class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/ioc/OrderedConfiguration.html";>OrderedConfiguration.add()</a>
 with no constraints, Tapestry will now implicitly order the added element 
after the previously added element, within the same method. In prior releases, 
such elements were added with no constraints. This makes it easier to 
contribute a group of related items with an implicit ordering.</p><h3 
id="ReleaseNotes5.3-NewComponentClassValidations">New Component Class 
Validations</h3>
 <p>Tapestry includes new validations of component classes to help cut down on 
many common errors; Tapestry now checks that component ids referenced by an 
event handler method (the <code>From</code><em>component id</em> part of the 
method name) actually matches a component defined in the template ... this 
quickly identifies typos in method names. This check can be disabled with a 
configuration symbol, as existing 5.2 apps may have such errors and still 
operate (that is, they may have <em>dead</em> event handler methods that will 
never be invoked).</p><h3 id="ReleaseNotes5.3-ApplicationFolder">Application 
Folder</h3><p>Tapestry can now be configured to execute inside a folder, which 
can be useful when running Tapestry inside a web application that contains 
other servlets or filters, as a way to prevent conflicts.</p><h3 
id="ReleaseNotes5.3-ImprovedQuickstartArchetype">Improved Quickstart 
Archetype</h3><p>The Maven quickstart archetype has been brought up to date, 
and now demonstrates 
 several new bits of common useful functionality. It also generates support for 
<a class="external-link" href="http://gradle.org/"; rel="nofollow">Gradle</a> as 
the build tool.</p><h3 id="ReleaseNotes5.3-WhitelistedPages">Whitelisted 
Pages</h3><p>The new @<a class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/annotations/WhitelistAccessOnly.html";>WhitelistAccessOnly</a>
 annotation marks a page as accessible only from white-listed clients; the 
rules for the whitelist are <a class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/services/security/ClientWhitelist.html";>extensible</a>.
 The default rule is that only access from localhost is on the white-list. Use 
this annotation on pages that may expose sensitive data, such as built-in 
application dashboards and the like.</p><h3 
id="ReleaseNotes5.3-PageCatalog">Page Catalog</h3><p>Tapestry applications now 
include a built-in "PageCatalog" page, which lists all the loaded 
 pages of the application, with details about construction time and number of 
components. The page requires whitelist access (see above comment), and some 
functionality is only available in development mode. PageCatalog can be used to 
load all pages of your application, which is useful to quickly spot problems in 
your pages ... especially useful when upgrading from a prior release of 
Tapestry.</p><h3 id="ReleaseNotes5.3-Client-SideJavaScriptLogging">Client-Side 
JavaScript Logging</h3><p>The integrated Blackbird client-side console has been 
removed. In its place are the floating console messages combined with logging 
to the Firebug or WebKit console. Tapestry no longer captures JavaScript 
initialization exceptions, so that they may be properly reported to the native 
console. These changes should make debugging client-side JavaScript much 
easier.</p><p>In addition, Tapestry will now display a pop-up window containing 
the full exception report for a server-side error that occurs during 
 an Ajax request, which makes debugging server-side problems that occur as part 
of an Ajax request <em>significantly</em> easier. Note that this logic is tied 
to performing a <a class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/corelib/components/Zone.html";>Zone</a>
 update.</p><h2 id="ReleaseNotes5.3-Sub-tasksCompleted">Sub-tasks 
Completed</h2><p>&#160;<img class="wysiwyg-unknown-macro" 
src="https://cwiki.apache.org/confluence/plugins/servlet/confluence/placeholder/unknown-macro?name=html&amp;locale=en_GB&amp;version=2";>&#160;</p><h2
 id="ReleaseNotes5.3-BugsFixed">Bugs Fixed</h2><p>&#160;<img 
class="wysiwyg-unknown-macro" 
src="https://cwiki.apache.org/confluence/plugins/servlet/confluence/placeholder/unknown-macro?name=html&amp;locale=en_GB&amp;version=2";>&#160;</p><h2
 id="ReleaseNotes5.3-ImprovementsMade">Improvements Made</h2><p>&#160;<img 
class="wysiwyg-unknown-macro" 
src="https://cwiki.apache.org/confluence/plugins/servlet/confluence/placehol
 der/unknown-macro?name=html&amp;locale=en_GB&amp;version=2">&#160;</p><h2 
id="ReleaseNotes5.3-NewFeaturesImplemented">New Features 
Implemented</h2><p>&#160;<img class="wysiwyg-unknown-macro" 
src="https://cwiki.apache.org/confluence/plugins/servlet/confluence/placeholder/unknown-macro?name=html&amp;locale=en_GB&amp;version=2";>&#160;</p><h2
 id="ReleaseNotes5.3-TasksCompleted">Tasks Completed</h2><p>&#160;<img 
class="wysiwyg-unknown-macro" 
src="https://cwiki.apache.org/confluence/plugins/servlet/confluence/placeholder/unknown-macro?name=html&amp;locale=en_GB&amp;version=2";>&#160;</p><p>&#160;<img
 class="wysiwyg-unknown-macro" 
src="https://cwiki.apache.org/confluence/plugins/servlet/confluence/placeholder/unknown-macro?name=html&amp;locale=en_GB&amp;version=2";></p></div>
             </div>
             <!-- /// Content End -->
           </div>
@@ -440,48 +96,7 @@ div.rbtoc1608762058645 li {margin-left:
   </article>
 
   <!-- /// Footer Start -->
-    <div id="footer"><p>Apache Tapestry, Tapestry, Apache, the Apache feather 
logo, and the Apache Tapestry project logo are trademarks of The Apache 
Software Foundation.</p><p><br clear="none"><footer class="py-3">
-  <div class="container-fluid">
-    <div class="container">
-      <div class="row">
-        <div class="col-4 col-lg-2">
-          <span class="font-weight-bold">Apache Tapestry</span>
-          <ul><li><a href="index.html">Home</a></li><li><a 
href="download.html">Download</a></li><li><a 
href="about.html">Team</a></li><li><a 
href="https://www.apache.org/licenses/LICENSE-2.0";>License</a></li></ul>
-          <span class="font-weight-bold">Documentation</span>
-          <ul><li><a href="introduction.html">Introduction</a></li><li><a 
href="principles.html">Principles</a></li><li><i class="fas fa-play"></i> <a 
href="getting-started.html">Getting Started</a></li><li><i class="fas 
fa-play"></i> <a href="user-guide.html">User Guide</a></li><li><i class="fas 
fa-book"></i> <a href="documentation.html">Docs</a></li><li><i class="fas 
fa-book"></i> <a href="component-reference.html">Component 
Reference</a></li><li><i class="fas fa-book"></i> <a 
href="current/apidocs">Apidocs</a></li><li><a 
href="frequently-asked-questions.html">FAQ</a></li></ul>
-        </div>
-        <div class="col-4 col-lg-2">
-          <span class="font-weight-bold">Community</span>
-          <ul><li><i class="fas fa-envelope-open-text"></i> <a 
href="community.html">Mailing Lists</a></li><li><i class="fab 
fa-stack-overflow"> </i> <a 
href="https://stackoverflow.com/questions/tagged/tapestry";>StackOverflow</a></li><li><a
 href="support.html">Support</a></li><li><a href="community.html">Getting 
Involved</a></li><li><a 
href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=27361749";
 title="Edit this page (requires approval, just ask on the mailing list)">Edit 
this page</a></li></ul>
-          <span class="font-weight-bold">Social</span>
-          <ul><li><i class="fab fa-twitter"></i> <a 
href="https://twitter.com/ApacheTapestry";>@ApacheTapestry</a></li><li><i 
class="fas fa-hashtag"></i> <a 
href="https://twitter.com/hashtag/tapestry5";>#tapestry5</a></li></ul>

[... 32 lines stripped ...]

Reply via email to