blob: d4c1b9339a1fdb3685ea5bccd724b6f1898335cb [file] [log] [blame]
----
Upgrade Notes
----
Upgrade Notes
This is a quick guide to changes between snapshot releases of Tapestry 5.0. This is meant to provide information
on any additions or changes that developers will face after upgrading to the latest version of Tapestry.
It is always advised to perform a full and complete build after upgrading.
You should also check the {{{release-notes-5.0.html}project-wide release notes}} for information
about bugs fixes and other improvements.
Release 5.0.19
As part of the changes related to
{{{https://issues.apache.org/jira/browse/TAP5-417}TAP5-417: Tapestry 5.0 Performance Improvements}},
you should be aware that Tapestry will now optimize the render phase state machine.
This is only relevant to advanced users who have written a ComponentClassTransformWorker
that adds logic to a render phase: it is necessary to
{{{apidocs/org/apache/tapestry5/model/MutableComponentModel.html#addRenderPhase(Class)}inform
Tapestry that the render phase should be invoked}}.
Release 5.0.16
The client-side class Tapestry.Zone has been renamed to Tapestry.ZoneManager.
Release 5.0.15
Method <<<getElementName()>>> of the
{{{apidocs/org/apache/tapestry5/RadioContainer.html}RadioContainer}} interface was renamed
to <<<getControlName()>>>, to bring it into alignment with the analagous method
of the
{{{apidocs/org/apache/tapestry5/Field.html}Field}} interface.. This should not affect any user code.
* {{{https://issues.apache.org/jira/browse/TAPESTRY-2656}TAPESTRY-2656}}
A method of the interface {{{apidocs/org/apache/tapestry5/grid/GridSortModel.html}GridSortModel}} was renamed
to correct a misspelling.
* {{{https://issues.apache.org/jira/browse/TAPESTRY-2567}TAPESTRY-2567}}
The methods findFields() and findFieldsWithAnnotation() of
{{{apidocs/org/apache/tapestry5/services/ClassTransformation.html}ClassTransformation}}
have been changed to return all fields (regardless of whether they have been claimed). The
method findAllFieldsWithAnnotation() has been removed.
* tapestry.js
Some significant overhauling of Tapestry's client-side validation support has
occurred. If you have created your own validations, or have overriden
how Tapestry decorates fields and presents error messages, you will need
to make some changes to your code.
* {{{https://issues.apache.org/jira/browse/TAPESTRY-2352}TAPESTRY-2352}}
Several API changes related to
{{{apidocs/org/apache/tapestry5/Translator.html}Translator}} have occured, to support
client-side validation of user input.
Release 5.0.14
The signature of the
{{{apidocs/org/apache/tapestry5/services/BeanModelSource.html}BeanModelSource}}.create()
method has changed; the last parameter is now Messages, not ComponentResources.
The Grid, PropertyDisplay, PropertyEditor and BeanEditor components have had their override
parameter changed from ComponentResources to
the new {{{apidocs/org/apache/tapestry5/PropertyOverrides.html}PropertyOverrides}} interface.
No changes should be necessary, as Tapestry can coerce ComponentResources to PropertyOverrides.
Attempting to instantiate a component class will now result in a runtime exception (this is a common
beginner's mistake; pages and components should be injected, not instantiated).
Properties files in message catalogs are now automatically read using the UTF-8 charset. Unlike traditional
Java ResourceBundles, it is <not> necessary to use Java's <<<native2ascii>>> tool.
* {{{https://issues.apache.org/jira/browse/TAPESTRY-2543}TAPESTRY-2543}}
TAPESTRY-2543 simplifies Tapestry's approach to localization, as it pertains to
output and request character encodings. Previously, each page could be configured with a different character
encoding, which causes a number of problems related to Ajax and file upload requests. A single
application-wide character encoding is now used, by default UTF-8.
Release 5.0.13
As part of {{{https://issues.apache.org/jira/browse/TAPESTRY-2311}TAPESTRY-2311}}, there have been
subtle changes to how event handler and render phase methods are invoked, when the methods are
overrides of base class methods.
Release 5.0.12
* ClassFabUtils
Several methods of {{{apidocs/org/apache/tapestry5/ioc/services/ClassFabUtils.html}ClassFabUtils}}
have been removed. The new method {{{castReference()}}} is an improved replacement for the removed
methods. These methods were largely used when decorating services, and the new
{{{apidocs/org/apache/tapestry5/ioc/services/AspectDecorator.html}AspectDecorator}} is even easier.
* JavaScript Changes
Tapestry now organizes JavaScript a bit differently; all JavaScript is at the bottom of the page, just
before the \</body\> tag. This applies to both externally loaded scripts, and to per-page dynamically
generated JavaScript.
This can cause some pages to break, those that included inline \<script\> blocks in their templates.
You should inject the
{{{apidocs/org/apache/tapestry5/RenderSupport.html}RenderSupport}} environmental and use it
to include JavaScript properly.
* ReorderProperties annotation
A new annotation,
{{{apidocs/org/apache/tapestry5/beaneditor/ReorderProperties.html}ReorderProperties}}
(which is placed on a type) has replaced the OrderAfter and OrderBefore annotations
(which were placed on accessor methods).
* {{{https://issues.apache.org/jira/browse/TAPESTRY-2421}TAPESTRY-2421}}
The root package for all Tapestry code was changed from
org.apache.tapestry to org.apache.tapestry<<5>>. This will make it reasonable to deploy Tapestry 3 or Tapestry 4
applications side-by-side with a Tapestry 5 application.
In addition, a number of classes were refactored.
PageRenderSupport has been renamed to just
{{{apidocs/org/apache/tapestry5/RenderSupport.html}RenderSupport}}.
TapestryConstants has been removed, split into a number of new classes (by type), such as
{{{apidocs/org/apache/tapestry5/SymbolConstants.html}SymbolConstants}}.
Likewise, TapestryUtils has been split into
{{{apidocs/org/apache/tapestry5/MarkupUtils.html}MarkupUtils}} and
{{{apidocs/org/apache/tapestry5/VersionUtils.html}VersionUtils}}.
[]
* TapestryModule
Many of the internal services of Tapestry have been split off into their own module,
{{{apidocs/org/apache/tapestry5/internal/services/InternalModule.html}InternalModule}}.
This should not affect any user code.
* Form component
The default {{{apidocs/org/apache/tapestry5/ValidationTracker.html}ValidationTracker}}
built into the Form component now has a persistence strategy of "flash". This means that
if you navigate away from a page with validation errors and return, you will lose the errors.
To support this style of navigation, you will need to bind the Form's tracker parameter
to a field that has the correct persistency (most likely, "session", the previous persistence
strategy).
* Resource.openStream()
The methods <<<exists()>>> and <<<openStream()>>> were added to the
{{{apidocs/org/apache/tapestry5/ioc/Resource.html}Resource}} interface. The semantics
of some of the other methods were slightly alterred.
* Loop element parameter
The Loop component's elementName parameter was renamed to simply element (to be consistent
with element parameters added to the Any and FormInjector components).
Release 5.0.11
* Field.getElementName()
The method <<<getElementName()>>> on interface {{{apidocs/org/apache/tapestry5/Field.html}Field}}
was renamed to <<<getControlName()>>>. This brings the property in alignment with W3C documentation
and terminology, and helps differentiate from the element name (i.e., the tag name used to represent
the element in a component template).
This affects a number of existing components that implement the interface.
Method <<<allocateElementName()>>> on interface {{{apidocs/org/apache/tapestry5/services/FormSupport.html}FormSupport}}
was likewise renamed to <<<allocateControlName()>>>.
* Zone
The show and hide parameters of the {{{ref/org/apache/tapestry5/corelib/components/Zone.html}Zone}}
component now have a default binding prefix of "literal".
In addition, the client-side Tapestry.ZoneEffect object was renamed to Tapestry.ElementEffect to reflect
that it can be used with elements that are not explicitly Zones.
* Validator.invokeIfBlank()
The method <<<invokeIfBlank()>>> on interface {{{apidocs/org/apache/tapestry5/Validator.html}Validator}}
was renamed to <<<isRequired()>>>.
* MetaDataLocator
The <<findMeta()>> method on interface {{{apidocs/org/apache/tapestry5/services/MetaDataLocator.html}MetaDataLocator}}
has changed significantly; it now expands symbols and performs type coercion.
* Grid Interfaces
The {{{apidocs/org/apache/tapestry5/grid/GridModel.html}GridModel}} interface and
the <<<prepare()>>> method of
{{{apidocs/org/apache/tapestry5/grid/GridDataSource.html}GridDataSource}} have changed to accommodate
the ability to sort using multiple columns.
* PropertyModel
The <<<getWidth()>>> method was removed from the
{{{apidocs/org/apache/tapestry5/beaneditor/PropertyModel.java}PropertyModel}} interface; the logic
for deducing the desired field size from the @Width annotation has been moved into AbstractTextField.
* Grid, BeanEditForm, BeanEditor, BeanDisplay
The data type for boolean values has changed from "checkbox" (reflecting how it is rendered in an edit form) to "boolean"
(reflecting what it is). In addition, all numeric types are given the data type "number".
This will only affect your application if you provided an overriding contribution
to the {{{apidocs/org/apache/tapestry5/services/BeanBlockSource.html}BeanBlockSource}} service.
* ExceptionInfo
The return type for <<<getStackTrace()>>> on
{{{apidocs/org/apache/tapestry5/services/ExceptionInfo.html}ExceptionInfo}}
changed from List\<String\> to List\<StackTraceElement\>.
* ApplicationGlobals and RequestGlobals
The <store> methods on these two interfaces were renamed to be more explicit. These are not methods typically
invoked from user code.
* BeanModel
The <<<remove()>>> method of {{{apidocs/org/apache/tapestry5/beaneditor/BeanModel.html}BeanModel}} was renamed
to <<<exclude()>>>, and a new method, <<<include()>>> was added. The <<remove>> parameter of BeanEditForm,
BeanEditor, BeanDisplay and Grid were all renamed to <<exclude>> as well (and a new <<include>> parameter was added
to each).