Release Notes 5.1

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 &nbsp;)
  • 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