tapestry-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From conflue...@apache.org
Subject [CONF] Apache Tapestry > Release Notes 5.4
Date Sat, 02 Mar 2013 18:21:00 GMT
<html>
<head>
    <base href="https://cwiki.apache.org/confluence">
            <link rel="stylesheet" href="/confluence/s/2042/9/12/_/styles/combined.css?spaceKey=TAPESTRY&amp;forWysiwyg=true"
type="text/css">
    </head>
<body style="background: white;" bgcolor="white" class="email-body">
<div id="pageContent">
<div id="notificationFormat">
<div class="wiki-content">
<div class="email">
    <h2><a href="https://cwiki.apache.org/confluence/display/TAPESTRY/Release+Notes+5.4">Release
Notes 5.4</a></h2>
    <h4>Page <b>edited</b> by             <a href="https://cwiki.apache.org/confluence/display/~bobharner">Bob
Harner</a>
    </h4>
        <div id="versionComment">
        <b>Comment:</b>
        Added note about breaking change to MarkupWriterFactory interface.<br />
    </div>
        <br/>
                         <h4>Changes (1)</h4>
                                 
    
<div id="page-diffs">
                    <table class="diff" cellpadding="0" cellspacing="0">
    
            <tr><td class="diff-snipped" >...<br></td></tr>
            <tr><td class="diff-unchanged" >Tapestry&#39;s use of the [Javassist|http://www.csg.is.titech.ac.jp/~chiba/javassist/]
bytecode library has been completely removed, along with many related services, such as [ClassFactory|http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/ioc/services/ClassFactory.html],
that were deprecated in 5.3. Use [PlasticProxyFactory|http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/services/PlasticProxyFactory.html]
instead. <br> <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">h3.
MarkupWriterFactory API changed <br> <br>The [MarkupWriterFactory|http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/MarkupWriterFactory.html]
interface has a couple of new methods, added to support the HTML5 rules for element endings.
If you have any classes that _implement_ MarkupWriterFactory (which is rare), they&#39;ll
need to be modified to implement the new methods. <br> <br></td></tr>
            <tr><td class="diff-unchanged" >h3. Injected Scripts at Bottom <br>
<br></td></tr>
            <tr><td class="diff-snipped" >...<br></td></tr>
    
            </table>
    </div>                            <h4>Full Content</h4>
                    <div class="notificationGreySide">
        <style type='text/css'>/*<![CDATA[*/
table.ScrollbarTable  {border: none;padding: 3px;width: 100%;padding: 3px;margin: 0px;background-color:
#f0f0f0}
table.ScrollbarTable td.ScrollbarPrevIcon {text-align: center;width: 16px;border: none;}
table.ScrollbarTable td.ScrollbarPrevName {text-align: left;border: none;}
table.ScrollbarTable td.ScrollbarParent {text-align: center;border: none;}
table.ScrollbarTable td.ScrollbarNextName {text-align: right;border: none;}
table.ScrollbarTable td.ScrollbarNextIcon {text-align: center;width: 16px;border: none;}

/*]]>*/</style><div class="Scrollbar"><table class='ScrollbarTable'><tr><td
class='ScrollbarPrevIcon'><a href="/confluence/display/TAPESTRY/Release+Notes+5.3.6"><img
border='0' align='middle' src='/confluence/images/icons/back_16.gif' width='16' height='16'></a></td><td
width='33%' class='ScrollbarPrevName'><a href="/confluence/display/TAPESTRY/Release+Notes+5.3.6">Release
Notes 5.3.6</a>&nbsp;</td><td width='33%' class='ScrollbarParent'><sup><a
href="/confluence/display/TAPESTRY/Release+Notes"><img border='0' align='middle' src='/confluence/images/icons/up_16.gif'
width='8' height='8'></a></sup><a href="/confluence/display/TAPESTRY/Release+Notes">Release
Notes</a></td><td width='33%' class='ScrollbarNextName'>&nbsp;</td></tr></table></div>


<p>This is the consolidated list of changes between Tapestry versions 5.3 and 5.4. To
upgrade to 5.4, most users who are not using deprecated features will be able to just update
the dependency version in their Maven POM file or Gradle build script (or <a href="/confluence/display/TAPESTRY/Download"
title="Download">download</a> the new JAR files) and the new version will just work.
However, please read carefully below before upgrading, and also review the <a href="/confluence/display/TAPESTRY/How+to+Upgrade"
title="How to Upgrade">How to Upgrade</a> instructions.</p>

<h2><a name="ReleaseNotes5.4-IncompatibleAPIs"></a>Incompatible APIs</h2>

<h3><a name="ReleaseNotes5.4-JavaScriptSupport"></a>JavaScriptSupport</h3>

<p>Some existing methods of JavaScriptSupport were changed from returning void, to returning
the JavaScriptSupport instance, to allow for chaining of calls. This interface is consumed
by end-user code, but not generally implemented by end-user code.</p>

<h2><a name="ReleaseNotes5.4-BreakingFeatures"></a>Breaking Features</h2>

<h3><a name="ReleaseNotes5.4-ClassFactoryRemoved"></a>ClassFactory Removed</h3>

<p>Tapestry's use of the <a href="http://www.csg.is.titech.ac.jp/~chiba/javassist/"
class="external-link" rel="nofollow">Javassist</a> bytecode library has been completely
removed, along with many related services, such as <a href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/ioc/services/ClassFactory.html"
class="external-link" rel="nofollow">ClassFactory</a>, that were deprecated in 5.3.
Use <a href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/services/PlasticProxyFactory.html"
class="external-link" rel="nofollow">PlasticProxyFactory</a> instead.</p>

<h3><a name="ReleaseNotes5.4-MarkupWriterFactoryAPIchanged"></a>MarkupWriterFactory
API changed</h3>

<p>The <a href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/MarkupWriterFactory.html"
class="external-link" rel="nofollow">MarkupWriterFactory</a> interface has a couple
of new methods, added to support the HTML5 rules for element endings. If you have any classes
that <em>implement</em> MarkupWriterFactory (which is rare), they'll need to be
modified to implement the new methods.</p>

<h3><a name="ReleaseNotes5.4-InjectedScriptsatBottom"></a>Injected Scripts
at Bottom</h3>

<p>In prior versions of Tapestry, JavaScript libraries injected into the page (via the
@<a href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/Import.html"
class="external-link" rel="nofollow">Import</a> annotation, or via <a href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/javascript/JavaScriptSupport.html"
class="external-link" rel="nofollow">JavaScriptSupport</a>), were injected into the
&lt;head&gt; element of the HTML page, either at the end of the element, or before
any existing &lt;script&gt; element.</p>

<p>With this release, the Tapestry integrates with <a href="http://requirejs.org/"
class="external-link" rel="nofollow">RequireJS</a> to dynamically load libraries.
This may affect a small number of JavaScript libraries, such as <a href="http://www.google.com/analytics/"
class="external-link" rel="nofollow">Google Analytics</a> that need to be placed
at the top of the page; in those cases, the library should be added to the template of your
application's main layout component, instead of relying on @Import and JavaScriptSupport.</p>

<h3><a name="ReleaseNotes5.4-NoRedirectOnFormValidationErrors"></a>No Redirect
On Form Validation Errors</h3>

<p>In prior releases of Tapestry, when a client-side form was submitted and there were
server-side validation errors, Tapestry would perform a redirect-after-post to re-render the
page; this meant that the <a href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ValidationTracker.html"
class="external-link" rel="nofollow">ValidationTracker</a> object that stores validation
errors would, itself, need to persist to the new render request, causing a server-side session
to be created. Starting in 5.4, the default behavior for server-side validation exceptions
is to re-render the page content immediately, within the same request; this obviates the need
to use a persistent field to store the tracker.</p>

<h2><a name="ReleaseNotes5.4-NewFeatures"></a>New Features</h2>

<h3><a name="ReleaseNotes5.4-Componentfieldvisibility"></a>Component field
visibility</h3>

<p>In prior versions of Tapestry, all instance fields of components had to be visibility
private; starting with versions 5.3.2 and 5.4, this has been relaxed. Component fields may
be protected, or package private (that is, no visibility modifier). Fields that are final,
or annotated with @<a href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/Retain.html"
class="external-link" rel="nofollow">Retain</a> may even be public.  In any case,
this makes it easier for pages to work with other pages in the same package, and for subclasses
to more easily access the fields (including parameter fields, or injections) provided by base
classes. This feature should be used with care, as it can lead to designs that are more difficult
to maintain.</p>

<h3><a name="ReleaseNotes5.4-JavaScriptModules"></a>JavaScript Modules</h3>

<p>Prior releases of Tapestry primarily organized client-side logic in terms of JavaScript
libraries. These libraries can be declaratively imported into the page (either during a full-page
render, or during an Ajax partial page update). In addition, libraries can be combined together
into <em>stacks</em>, which (in a production application) are combined into a
single virtual asset.</p>

<p>The library approach is <a href="/confluence/display/TAPESTRY/JavaScript+Rewrite"
title="JavaScript Rewrite">fundamentally limited in a number of ways</a>, including
namespace pollution and dealing with dependencies between libraries.  Tapestry 5.4 introduces
a parallel mechanism, based on <a href="http://requirejs.org" class="external-link" rel="nofollow">RequireJS</a>
and the <a href="https://github.com/amdjs/amdjs-api/wiki/AMD" class="external-link" rel="nofollow">Asynchronous
Module Definition</a> as a way to speed up initial page load and organize client-side
JavaScript in a more expressive and maintainable way.</p>

<style type='text/css'>/*<![CDATA[*/
table.ScrollbarTable  {border: none;padding: 3px;width: 100%;padding: 3px;margin: 0px;background-color:
#f0f0f0}
table.ScrollbarTable td.ScrollbarPrevIcon {text-align: center;width: 16px;border: none;}
table.ScrollbarTable td.ScrollbarPrevName {text-align: left;border: none;}
table.ScrollbarTable td.ScrollbarParent {text-align: center;border: none;}
table.ScrollbarTable td.ScrollbarNextName {text-align: right;border: none;}
table.ScrollbarTable td.ScrollbarNextIcon {text-align: center;width: 16px;border: none;}

/*]]>*/</style><div class="Scrollbar"><table class='ScrollbarTable'><tr><td
class='ScrollbarPrevIcon'><a href="/confluence/display/TAPESTRY/Release+Notes+5.3.6"><img
border='0' align='middle' src='/confluence/images/icons/back_16.gif' width='16' height='16'></a></td><td
width='33%' class='ScrollbarPrevName'><a href="/confluence/display/TAPESTRY/Release+Notes+5.3.6">Release
Notes 5.3.6</a>&nbsp;</td><td width='33%' class='ScrollbarParent'><sup><a
href="/confluence/display/TAPESTRY/Release+Notes"><img border='0' align='middle' src='/confluence/images/icons/up_16.gif'
width='8' height='8'></a></sup><a href="/confluence/display/TAPESTRY/Release+Notes">Release
Notes</a></td><td width='33%' class='ScrollbarNextName'>&nbsp;</td></tr></table></div>
    </div>
        <div id="commentsSection" class="wiki-content pageSection">
        <div style="float: right;">
            <a href="https://cwiki.apache.org/confluence/users/viewnotifications.action"
class="grey">Change Notification Preferences</a>
        </div>
        <a href="https://cwiki.apache.org/confluence/display/TAPESTRY/Release+Notes+5.4">View
Online</a>
        |
        <a href="https://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=27834361&revisedVersion=12&originalVersion=11">View
Changes</a>
            </div>
</div>
</div>
</div>
</div>
</body>
</html>

Mime
View raw message