Scratch pad for changes destined for the 5.5 release notes page.
The minimum Java release required to run apps created with Tapestry 5.5 is Java 8.
With the ASM upgrade, now code compiled with Java 8 to 11 is supported.
With Java 8, we made the switch to servlet-api 3.0. We updated the embedded Tomcat and Jetty containers to the respective versions. Unfortunately, we had to rename Jetty7Runner to JettyRunner and Tomcat6Runner to TomcatRunner in the tapestry-runner package.
A new service, ClasspathAssetProtectionRule
, which receives contributions of ClasspathAssetProtectionRule
instances, was created to you can easily add rules to block requests to classpath assets according to your
security needs. Three rules are added
out-of-the-box and may be overriden:
ClassFile
: blocks access to assets with.class
endings (case insensitive).PropertiesFile
: blocks access to assets with.properties
endings (case insensitive).XMLFile
: blocks access to assets with.xml
endings (case insensitive).
Tapestry's own code to resolve the bound types of generic types and methods, based around GenericsUtils, couldn't handle some cases, as discovered in TAP5-2560. Fixing the code to handle these cases turned out to not be feasible, so we introduced a new JAR, genericsresolver-java, which replaces GenericsUtils with Google Guava's TypeResolver and associated classes. To use it, just add genericsresolver-java, which is versioned in the same way as the other Tapestry JARs, to the classpath of your projects and make sure a not too-old version of Google Guava is also in the classpath.
If you want to enforce that a checkbox is checked or unchecked you can now use the new validators:
- Checkbox must be checked: validator="checked" or @AssertTrue JSR-303 Bean validation annotation
- Checkbox must be unchecked: validator="unchecked" or @AssertFalse JSR-303 Bean validation annotation