This document contains release notes for current release of Tapestry, release 5.1.
There are alsorelease notes for Tapestry 5.0.
Release Notes - Tapestry 5 - Version 5.1.0.5
Bug
- [TAP5-604] -
ValidationMessages_da.properties contains invalid format strings
- [TAP5-664] - Incorrect "legacy"
URI specified in the templates documentation
- [TAP5-665] - IE 6 on a tapestry SSL page
complains about non-secure items (caused by blackbird js-logging component)
- [TAP5-666] - Property expression can not
pass a boolean constant into a method
- [TAP5-668] - BeanModel documentation should
be more clear that a property must exist when using add(String).
- [TAP5-670] - ParallelExecutorTest can't be
compiled due to cast errors
Improvement
- [TAP5-214] - Document use of asset: and
context: to reference assets directly from a template file
- [TAP5-506] - Italian localization for
DateField component
- [TAP5-531] - Add cookbook documentation to
show how to use the delegate component for switch-like behaviour
- [TAP5-579] - Finnish internationalization
is missing some of the keys in 5.1
- [TAP5-651] - If component documentation:
identify the use of the p: namespace
New Feature
- [TAP5-223] - Allow properties files (on
classpath or in the context) to be used as SymbolProviders
- [TAP5-580] - Add get() method to TestBase
to allow read access to private fields of objects via reflection
- [TAP5-601] - Add German translation for
client-side JavaScript messages
Release Notes - Tapestry 5 - Version 5.1.0.4
Bug
- [TAP5-130] - Tapestry component report
fails if the project's path name contains spaces
- [TAP5-353] - Description of volatile
parameter for the Grid component is misleading, should be clear that application is responsible for the
tracking the row
- [TAP5-500] - Small typo in javadoc comments
for Cookies service.
- [TAP5-501] - In the Component interface
javadoc the sentence "This interface is likely to change without notice." should be deleted or
the interface be moved to an internal package
- [TAP5-524] - Published parameters exposed
from embedded components not included in Component Reference
- [TAP5-571] - Misplaced <t:parameter>
results in an inscrutable exception
- [TAP5-613] - Returning a Link to a secure
page from an ajax event handler method causes the redirect to be invalid if the event is sent from an
insecure page
- [TAP5-622] - Client ids should not contain
the ':' character, as that can confuse WebKit-based browsers
- [TAP5-631] - Contributed
ApplicationInitializer not always executed when using tapestry-spring
- [TAP5-640] - DOM manipulation during
rendering can NPE
- [TAP5-641] - Inherited parameters that are
themselves inherited will appear null
- [TAP5-644] - When using PageTester, an
exception in the page is hidden by an exception rendering the exception report page (pt. 2)
- [TAP5-646] - When Tapestry is combining
JavaScript files, it should check for a JS file that ends with an unterminated comment, and add the
comment terminator
- [TAP5-647] - Quickstart archetype should
not include the tapestry-test dependency, as the Jetty embedded inside Selenium gets in the way of
RunJettyRun inside Eclipse
- [TAP5-648] - Tapestry should be more
careful about where, inside the <head>, it adds new elements
- [TAP5-649] - Forms containing loop
components which contain no form elements still encode into t:formdata hidden field
- [TAP5-652] - Script tag is missing required
attribute type
- [TAP5-653] - Appending a context to an URL
of the Index page results in too many slashes
- [TAP5-659] - In some servlet containers,
access to virtual assets can result in a GZIP-related exception
- [TAP5-660] - Type coercion from String to
DateFormat will always coerce using the server's default locale, rather than the current per-thread
locale
Improvement
- [TAP5-274] - Application State Object is a
misleading term; rename @ApplicationState to @SessionState
- [TAP5-612] - URLRewriting should
distinguish between incoming and outgoing requests
- [TAP5-629] - Ensure blackbird console
appears on top of other page elements
- [TAP5-654] - Improve component classes
documentation to be clearer about relationship between @Component and t:id
- [TAP5-655] - Quickstart archetype should
set the application version number to match the module version number
- [TAP5-657] - The FieldFocusPriority enum
should include an additional value, OVERRIDE, to indicate a manually focused field (with highest
priority)
- [TAP5-661] - A number of minor
documentation typos
New Feature
- [TAP5-624] - Support for javascript
callbacks on zone update
- [TAP5-642] - Document how to configure
Glassfish 2.1 to deploy Tapestry applications
- [TAP5-662] - Component documentation should
identify the events that may be triggered by a component
Release Notes - Tapestry 5 - Version 5.1.0.3
Bug
- [TAP5-469] - ResponseCompressionAnalyzer:
application/json responses should be uncompressable by default
- [TAP5-596] - Misleading description of
allowNull parameter of Parameter annotation in javadoc
- [TAP5-602] - Contributing to TypeCoercer
with service fails even with @InjectService
- [TAP5-603] - BeanEditForm ordering
behaviour inconsistent with documentation
- [TAP5-608] - Quickstart archetype is broken
for 5.1.0.2: missing META-INF/maven/archetype.xml
- [TAP5-610] - URLs are not being fully
optimized, "/index" is not being stripped off when it should
- [TAP5-615] - Tapestry template parse should
ignore the case of any Tapestry-specific elements (such as t:body, t:content, etc.)
- [TAP5-616] - Hidden component does not
properly decode submitted data
- [TAP5-621] - When using PageTester, an
exception in the page is hidden by an exception rendering the exception report page
- [TAP5-625] - The quickstart archetype
should not put the Apache copyright into the web.xml (or other files)
- [TAP5-626] - The copyright message in
Layout.tml is "groupid" not the expanded groupId value
- [TAP5-630] - Blackbird error console class
names are too generic and can easily conflict
- [TAP5-636] - Using Element.forceAttribute()
with a null value can cause a later NPE during rendering under some circumstances
Improvement
- [TAP5-432] - Allow setting the id of a
FormFragment component
- [TAP5-483] - Maven warning in build:
[WARNING] Using platform encoding (MacRoman actually) to copy filtered resources, i.e. build is platform
dependent!
- [TAP5-614] - Spacer image should have a
blank alt attribute to meet w3c accessability standards
- [TAP5-634] - Google App Engine Support:
ability to disable code that creates new threads
New Feature
- [TAP5-548] - Textual messages inside
tapestry.js should be split out into a seperate .js file that is localizable
Task
- [TAP5-617] - Move cobertura from
2.2-SNAPSHOT to 2.2
Wish
- [TAP5-619] - Add parameter to
PropertyEditor to allow custom BeanBlockSource to be used in place of the default one
Release Notes - Tapestry 5 - Version 5.1.0.2
Bug
- [TAP5-39] - Add JSON support for literals
(often, inline function definitions) that are used to configure some client-side objects (even if they
aren't truly JSON)
- [TAP5-573] - NullPointerException during
AJAX form submit
- [TAP5-578] - If a component class is
abstract, trying to instantiate it (by including it in a template) yields an inscrutable
InstantiationError
- [TAP5-590] - A JavaScript error for
non-required fields will force Ajax form submits to be handled as a full-page request instead
- [TAP5-593] - Calling
ApplicationStateManager.exists() will throw an exception when the session has been invalidated
- [TAP5-598] - Hard-coded messages inside
tapestry.js are not localized
- [TAP5-600] - The new Blackbird console
makes Safari JavaScript completely non-functional
Improvement
- [TAP5-265] - Add a Hidden component, used
to synchronize a value between the server and the client
- [TAP5-398] - Tapestry should check that the
service scope is consistent with the service (throwing an exception if the scope requires a service
interface and the service doesn't provide one)
- [TAP5-566] - TextField documentation should
explain why the required value parameter is not bound in the example
- [TAP5-581] - Quickstart archetype should
include testng.xml and webdefault.xml
- [TAP5-584] - Omit generator meta (from head
element) when root element is not html
- [TAP5-586] - The JavaScript waitForPage()
handler does not need to be added when rendering a partial Ajax response
- [TAP5-589] - Add a method to DOM Element
class to allow the collection of Attributes to be obtained
- [TAP5-591] - FAQ: Creating a page render
Link from a service
- [TAP5-605] - There should be a simple way
to override automatic JavaScript libraries and Stylesheets
New Feature
- [TAP5-288] - Replace JavaScript client-side
logging with Blackbird
- [TAP5-549] - JavaScript libraries should be
combined into a single request
- [TAP5-557] - Provide support for URL
rewriting
- [TAP5-562] - tapestry-hibernate should
provide a built-in status page to show basic Hibernate statistics inlcuding cache hits, etc.
- [TAP5-594] - Add simple
PageRenderLinkSource service to allow services to create Links to pages
Task
- [TAP5-510] - Improve code coverage of JSON
unit tests
- [TAP5-575] - Add svn:eol-style=native to
source files
Release Notes - Tapestry 5 - Version 5.1.0.1
Bug
- [TAP5-211] - Client-side validation of
numeric user input does not take into account the user's locale which causes spurious client- and
server-side exceptions when users enter numbers "naturally"
- [TAP5-374] - Persistent (@Persist) fields
not set correctly between requests if they are initialised from pageAttached() method
- [TAP5-512] - Documentation on how to secure
pages contains errors in the sample code
- [TAP5-520] - Using regular expressions with
the @Validate annotation causes odd parse errors if the regexp includes common characters (including
commas)
- [TAP5-530] - Documentation should identify
how to boot-strap the quickstart archetype from the Tapestry360 Maven repository (not snapshot
repository)
- [TAP5-535] - PageTester should use
overrides of FactoryDefaults, not contributions to ApplicationDefaults
- [TAP5-537] - PersistentLocale.setLocale()
allows the application to set a locale that isn't supported, and the subsequent URL may not be
interpreted correctly
- [TAP5-552] - Common compressed image files
should be configured to not re-compress when sent to client: GIF, PNG
- [TAP5-555] -
Tapestry.ScriptManager.contains throws error if <script> tag in <head> has no href
- [TAP5-559] - Informal parameters have
started to overwrite previously rendered attributes
Improvement
- [TAP5-84] - Change proxy generation to use
volatile fields rather than synchronized blocks
- [TAP5-108] - A component event handler for
Ajax requests should have a mechanism to update mutiple zones on the client
- [TAP5-345] - AjaxFormLoop should be able to
deduce a default ValueEncoder from the type of its value parameter
- [TAP5-367] - The Grid component's "There
is no data to display." message should come from a message catalog, to support global overrides and
localization
- [TAP5-418] - Control over creation of page
render and component event requests should be encapsulated into an overridable service
- [TAP5-502] - Improve the description of
parameter passing and binding in the documentation
- [TAP5-525] - The Component Report should
indicate in which Tapestry version a parameter or a component was introduced
- [TAP5-527] - Input validation documentation
is missing clear list of available validators and their correct notation to use.
- [TAP5-536] - Move ClientBehaviorSupport to
the public services package
- [TAP5-540] - Allow exact parsing of numeric
client input by creating a BigDecimal Translator and enabling parseBigDecimal in DecimalFormat
- [TAP5-543] - ProgressiveDisplay component
should support a context parameter and fire an event to inform the container what data is to be
displayed
- [TAP5-544] - Improve JavaScript handling to
prevent the user from clicking Ajax-oriented links and forms before the page is "ready"
- [TAP5-545] - Upgrade to Scriptaculous 1.8.2
(released Nov 2008)
- [TAP5-547] - In the exception report page,
JVM system property org.apache.catalina.jsp_classpath should be displayed as a list, like other .path
value
- [TAP5-550] - Reduce eden space memory
footprint by avoiding Lists and Maps within Elements
- [TAP5-564] - Add StringPropertySelectModel
New Feature
- [TAP5-43] - Add configuration to turn off
@Secure when in development
- [TAP5-74] - Provide a way that a component
sub-class can merge its template with that of its container
- [TAP5-92] - Add new element, t:remove, that
removes a portion of a template
- [TAP5-236] - Implement a progressive
enhancement component that loads its content via Ajax
- [TAP5-485] - Tracking issue for changes
required by com.formos.tapestry:tapestry-template
- [TAP5-542] - Add ParallelExecutor service
to allow operations to be performed asynchronously in a thread pool
- [TAP5-560] - Add a service responsible for
encoding client data (as gzipp'ed base 64) and decoding that data
- [TAP5-563] - Ability to limit the
template's effective content to just a small section (similar to Tapestry 4's $content$ marker)
Release Notes - Tapestry 5 - Version 5.1.0.0
Bug
- [TAP5-217] - Warnings related to service
configuration validations should be escalated to exceptions
- [TAP5-292] - Field injection does not
support injecting configurations or other service resources, only dependencies
- [TAP5-298] - JS error in Palette for
disabled options
- [TAP5-330] - Property expressions do not
recognize methods inherted from java.lang.Object such as toString()
- [TAP5-334] - Component fields should allow
@InjectService annotation, as well as @Inject
- [TAP5-341] - When a contribute method
requests the wrong configuration interface (say, Configuration instead of OrderedConfiguration) the
error message is confusing: "No service implements the Configuration interface"
- [TAP5-349] - Tapestry silently allows a
MarkupWriter to set a series of root elements, ignoring all but the last. A document should only have a
single root element and this situation should be an immediate exception.
- [TAP5-355] - TapestrySpring does not
support injection of Spring FactoryBeans
- [TAP5-357] - Tapestry documentation should
clearly/boldly identify the release number
- [TAP5-359] - Use of the email validator
with client-side validation displays a pop-up error message about client-side validator "email"
being missing
- [TAP5-370] - Error from DocumentLinker
about missing <html> tag, even for XML document w/o JavaScript
- [TAP5-373] - When JavaScript libraries are
moved to the "top" of the document, they should be added to the <head>, not the <body>
- [TAP5-377] - Broken links inside on project
site to pipeline description and to JIRA
- [TAP5-378] - Missing i18n files for
Brazilian Portuguese
- [TAP5-385] - Tapestry 5 often renders empty
elements incorrectly
- [TAP5-391] - Link from Form page to
checkbox page (on website) is incorrect
- [TAP5-399] - Modified application state
objects are not persisted back to the session at the end of the request
- [TAP5-402] - BeanDisplay properties that
render nothing cause layout errors (they should render a )
- [TAP5-403] - OneShotLock tests fail under
JDK 1.6 because of JVM differences
- [TAP5-405] - Documentation should reference
Index instead of Start page
- [TAP5-407] - DocumentLinker should not use
the deprecated practice of HTML commenting out the <script> block
- [TAP5-408] - Objects that persist in the
session should automatically re-store themselves into the session at the end of the request
- [TAP5-413] - Invalidating the session may
cause an exception at the end of the request if there is a "dirty" ASO
- [TAP5-416] - Javascript error with IE and
Window Prototype
- [TAP5-419] - Logging of component class
transformations has typo in prefix
- [TAP5-425] - When attempting to reference a
property whose name is a single letter, Tapestry fails with a wierd exception
- [TAP5-428] - It should be possible to use
tapestry-spring in an environment where the Spring ApplicationContext is created externally (as was the
case in Tapestry 5.0)
- [TAP5-431] - When using an externally
configuration Spring ApplicationContext, beans of the context should be registered as services (as was
the case in Tapestry 5.0)
- [TAP5-441] - Tapestry should be using
ServletContext.getMimeType() to map from file extensions to MIME types
- [TAP5-443] - Clicking an action link when
using tapestry-upload always throws an exception
- [TAP5-444] - ToStringService uses @Override
annotation improperly
- [TAP5-449] - @CleanupRender Render phase
methods not always invoked
- [TAP5-454] - All classpath assets should
automatically have a version number (the application version number) in the URL
- [TAP5-457] - Illegal prefix for XML
namespace
- [TAP5-464] - The Invokable interface should
be moved to a public package (it is currently internal, even though some public interfaces reference it)
- [TAP5-467] -
ResponseCompressionAnalyzerImpl should trim spaces before comparing accepted-encoding to "gzip"
- [TAP5-468] - ResponseCompressionAnalyzer
should disregard the charset when comparing configured exluded mime types
- [TAP5-470] - The exception report should
only split system properties whose name ends in ".path"
- [TAP5-471] - MetaDataLocator throws an
exception if meta-data not found and no symbol provides a value; this should be documented
- [TAP5-478] - If you use Grid's add and
include parameters, the new column added with add must be also be mentioned in include
- [TAP5-484] - Quickstart should include a
test scope dependency on EasyMock
- [TAP5-488] - Typo in error message when
contributing to unknown service
- [TAP5-489] - The comment inside
AssetBinding concerning invariant is out of date, in that all Assets now use complete URLs
- [TAP5-490] - Link from Ajax guide page to
component reference is broken
- [TAP5-505] - JettyRunner is not able to
start on Windows machine if the web application path is absolute
- [TAP5-507] - Comments between the DOCTYPE
and the root element now cause render errors
- [TAP5-528] - The new quickstart layout
should be simplified to remove "lorem ipson" text
Improvement
- [TAP5-24] - Document changing the
(persisted) locale
- [TAP5-60] - Provide an alternate approach to
decorating services based on aspects
- [TAP5-79] - Improve Tapestry's property
expression language to include OGNL-like features
- [TAP5-100] - When rendering a partial
markup response, Tapestry should quote attributes with single quotes (so that each quote doesn't have to
be escaped in the JSON)
- [TAP5-165] - Components which use
PrimaryKeyEncoder should be changed to use ValueEncoder, and PrimaryKeyEncoder should be deprecated
- [TAP5-181] - Highlight duplicated IDs.
- [TAP5-194] - Handler method of Submit
component should accept a context
- [TAP5-209] - quickstart archetype should
provide a sample page .properties file
- [TAP5-216] - Many methods of the Page
interface could be moved to PageResources (which should be renamed to ComponentPageElementResources)
- [TAP5-346] - Maven resource filtering
pre-expands some Tapestry expansions: docs should warn of this
- [TAP5-364] - BeanEditForm should include
the same autofocus parameter that Form has
- [TAP5-365] - Localization support for
Japanese
- [TAP5-371] - Service contribution methods
should be able to include a parameter of type Logger (the service's logger), so as to give contributions
the option to log with the service
- [TAP5-380] - Add localization support for
Greek
- [TAP5-382] - PersistenceConstants should
have all persistence field strategies
- [TAP5-383] - Expose a LinkCreationHub
service to allow for listeners that wish to observe (and modify) new Link instances
- [TAP5-386] - Tapestry IoC documentation
improvements
- [TAP5-390] - Improve component reports by
providing links to javadocs of tapestry classes
- [TAP5-392] - tapestry-hibernate should be
split into two parts: tapestry-hibernate-core and tapestry-hibernate, with tapestry-hibernate-core being
usable outside of a Tapestry web application
- [TAP5-393] - Tapestry IOC should log the
names of any loaded module classes and clearly indicate module classes that could not be loaded
- [TAP5-406] - Remove IDEA and Eclipse
control files from the source tree
- [TAP5-417] - Tapestry Performance
Improvements
- [TAP5-422] - Tapestry should encode the
user's locale into the URL rather than as an HTTP cookie
- [TAP5-429] - Tapestry should throw an
exception when a contribute method of a module class does not match a known service
- [TAP5-435] - AjaxFormLoop does not include
a parameter for specifying the animation on adding a new element
- [TAP5-442] - Add a context: binding prefix
to make it super-easy to reference context assets from templates
- [TAP5-445] - Add ability to turn off GZIP
compression easily, for both static assets and dynamic page renders
- [TAP5-447] - ExceptionDisplay should render
uninteresting stack frames but include a client-side control to toggle their visibility
- [TAP5-448] - Assets should no longer
attempt to generate relative URIs
- [TAP5-451] - Upgrade Selenium dependencies
to new beta (which supports FireFox 3)
- [TAP5-458] - Tapestry quickstart should
include a basic, but visually pleasing, Layout component
- [TAP5-459] - Quickstart should include
provided scope dependency on the servlet API
- [TAP5-462] - FAQ: The Hibernate startup
question now has a really easy answer
- [TAP5-465] - Add a LazyAdvisor service that
can allow method invocations on services to be lazily evaluated
- [TAP5-479] - Quickstart archetype should
include a basic site.xml and index.apt
- [TAP5-481] - Quickstart archetype should
include a test scope dependency on tapestry-test
- [TAP5-482] - Maven repository location
http://archiva.openqa.org/repository/releases has a unwanted trailing slash in the master pom.xml
- [TAP5-487] - Easier way to expose
parameters of an embedded component in a containing component
- [TAP5-496] - Change If and Unless to render
thier template element if provided (i.e., when using t:type) as well as informal parameters
- [TAP5-498] - Upgrade Javassist dependency
to latest version, 3.9.0.GA
- [TAP5-499] - Cleanup and simplfy PageTester
to remove ComponentInvocation, InvocationTarget, etc.
- [TAP5-503] - Make Live Class and Template
Reloading feature work in OSGi
- [TAP5-516] - When rendering a PageLink, it
should not be necessary to load the target page instance just to see if there's a page activation
context
- [TAP5-522] - Reduce memory footprint by
sharing binding descriptions
- [TAP5-523] - Submit component should be
able to render an input field of type image
New Feature
- [TAP5-66] - Use namespaces in templates to
reference components in libraries
- [TAP5-70] - Tapestry should automatically
compress content sent to the client, if the client supports it
- [TAP5-90] - Context assets should be
versioned and provided with a far future expires header, just like classpath assets
- [TAP5-95] - Optimize page construction for
repeated construction of the same page
- [TAP5-106] - When filtering out stack
frames in ExceptionAnalyzer, frames for sun.reflect could easily be omitted
- [TAP5-112] - Define new namespace, p:, for
block parameters
- [TAP5-139] - @Autobuild annotation for
parameters, implicitly invokes ObjectLocator.autobuild()
- [TAP5-140] - The services used to handle
live reloading should be made public
- [TAP5-215] - Configuration interface should
support contributing a class (which is autobuilt) in addition to an instance
- [TAP5-291] - Now that field injection is
supported, we need an annotation for methods to invoke after the component is fully constructed
- [TAP5-295] - Option to startup Hibernate
early, rather than lazily on first request
- [TAP5-316] - Add service overriding
capabilities to tapestry-ioc, similar to what tapestry-core has (the Alias service)
- [TAP5-427] - Allow injection of Tapestry
services into Spring beans
- [TAP5-430] - Annotation for services to
indicate that the service should not be decorated
- [TAP5-434] - Add documentation about using
PersistentLocale service to effect a change in locale
- [TAP5-436] - Tapestry should verify that
all public methods of a module class are meaningful to Tapestry (build, decorate, contribute or bind),
other methods should cause an exception to be thrown as a likely typo in the name
- [TAP5-437] - The OrderedConfiguration and
MappedConfiguration interfaces should allow for override() methods (similar to add())
- [TAP5-439] - Add annotation, @ServiceId,
that can be placed on a builder method or service class to identify the service id to use
- [TAP5-446] - Tapestry should output a <meta>
tag to identify Tapestry as the generator (with an option to turn this off for applications that don't
want to advertise their technology)
- [TAP5-472] - Make it possible and easy to
use a content delivery network
- [TAP5-476] - Have a common handler/filter
pipeline for both component event and page render requests, to make it easier to add filters that apply
to both types of requests
- [TAP5-491] - Quickstart archetype build
should generate an archetype-catalog.xml into Tapestry360's maven-repository or
maven-snapshot-repository, to faciliate the use of the mvn archetype:generate goal
Task
- [TAP5-372] - Merge changes from 5.0.16 -->
5.0.17 into trunk (5.1)
- [TAP5-379] - Add the Ars Machina Project to
the list of Tapestry 5-related packages
- [TAP5-381] - Documentation talks about a
"tapestry.charset" when there's no such configuration documented
- [TAP5-480] - Upgrade Surefire Plugin and
TestNG dependencies to latest version (2.4.3 and 5.8, respectively)
- [TAP5-493] - Translate
StructureStrings#original-child-component
- [TAP5-494] - Downgrade maven-site-plugin
from 2.0-beta-6 to 2.0-beta-5 because we prefer a site that actually works