This is the consolidated list of changes between Tapestry versions 5.0 and 5.1. Before upgrading, be sure to review the How to Upgrade instructions.
Contents
Tapestry Version 5.1.0.5
Bugs Fixed
- 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
Improvements Made
- 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 Features Added
- 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
Tapestry Version 5.1.0.4
Bugs Fixed
- 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
Improvements Made
- 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 Features Added
- 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
Tapestry Version 5.1.0.3
Bugs Fixed
- 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
Improvements Made
- 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 Features Added
- TAP5-548 – Textual messages inside tapestry.js should be split out into a seperate .js file that is localizable
Tasks Completed
- 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
Tapestry Version 5.1.0.2
Bugs Fixed
- 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
Improvements Made
- 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 Features Added
- 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
Tasks Completed
- TAP5-510 – Improve code coverage of JSON unit tests
- TAP5-575 – Add svn:eol-style=native to source files
Tapestry Version 5.1.0.1
Bugs Fixed
- 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
Improvements Made
- 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 Features Added
- 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)
Tapestry Version 5.1.0.0
Bugs Fixed
- 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
Improvements Made
- 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 Features Added
- 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
Tasks Completed
- 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