Here's a specific rundown of all the changes from the changelog:
- Integrated WebWork as a web framework choice. To install WebWork (replacing Struts) in a fresh AppFuse project, simply run "ant install-webwork". Read about my experience migrating from Struts to WebWork.
- Refactored to use SiteMesh instead of Tiles. Proposal and feedback at: http://raibledesigns.com/page/rd?anchor=should_i_ditch_tiles_in. Here's a good article on SiteMesh if you're not familiar with this killer tool. I also documented my experience with removing Tiles and adding SiteMesh.
- Re-worked User and Roles relationship to take advantage of Hibernate more. Thanks to Daniel Kibler for the patch.
- Removed UserFormEx and replaced with ability to "merge" methods into an ActionForm using XDoclet. See metadata/web for xdoclet-UserForm.java which now contains methods merged into the generated UserForm.java.
- Modified struts_form.xdt to support nested objects. Moved address information from org.appfuse.model.User to org.appfuse.model.Address to and created NestedFormTest to verify it works. This template will pick up any nested object validations rules.
- Changed "org.appfuse.persistence" package name to "org.appfuse.dao". Moved "*ManagerImpl" classes to "service.impl" package.
- Changed stylesheet colors for Spring MVC option to be green instead of red - allowing you to easily tell which web framework is being used. WebWork uses blue.
- Refactored logging so Base classes contain a "log" variable that children don't need to override. Read more about this decision on my blog.
- Refactored toString(), equals() and hashCode() methods in BaseObject to be abstract so child classes have to implement custom methods [bug]. Commonclipse (http://commonclipse.sf.net) is a great tool to generate the methods for you.
- Added Cargo to simplify starting and stopping Tomcat before running Canoo WebTests. Unfortunately, the 0.2 release doesn't work with Tomcat 5.5.x.
- Refactored all web frameworks to allow for testing out-of-container. This means that "test-web" will now work w/o Cactus or the container running. Learn more.
- Removed MainMenuTest, which was a demonstration of how to write tests using HttpUnit. This test caused more problems than it solved.
- Changed target names in build.xml: define-tasks -> init, init -> prepare. Reworked build.xml so XDoclet tasks don't execute when they don't need to.
- Added translations for French and Spanish.
- Added PasswordHintTest for those controllers and actions that implement this feature.
- Added SimpleMappingExceptionResolver for Spring version to catch DataAccessExceptions and forward the user to dataAccessFailure.jsp. Added this same functionality to the WebWork version.
- Added message to the ReloadAction so users will see a message when reloading options. Message is currently hard-coded to English Spring ReloadController.
- Removed proprietary State and Country Tags. Implemented custom CountryTag (thanks Jens Fischer) and made state into a text box since not all countries have "states".
- Reworked mail support to use Spring's MailSender and changed account information e-mail (for Spring and WebWork options) to use a Velocity template. This was partially motivated by all the questions I get on Sending Velocity-based E-Mail with Spring.
- Consolidated all mail settings to mail.properties (in web/WEB-INF/classes).
- Added support for detecting and configuring Tomcat 5.5.x.
- Renamed "Secure" tag library to "SecureTag" for consistency.
- Added field-level errors (using html:errors) to Struts JSPs and viewgen for Struts.
- Changed column names in User object from camelCase to normal database_names.
- Added fallback locale of 'en' in metadata/web/web-settings.xml in case no bundle is found for the browser's preferred locale.
- Added native2ascii task in copy-resources to encoded to ascii with unicode escapes.
- Added Dumbster (a fake SMTP server) to catch and verify e-mail messages sent during test execution.
- Changed parameter key for indicating methods in Struts Actions from "action" to "method" in order to alleviate conflicts with the "action" attribute in an HTML form.
- Changed name of generated WAR file to *not* include the version number. Having the version number as part of the name seemed to cause more problems than it solved.
- Added forkmode="true" to junit task in "test-module" target - greatly increasing the speed of test execution, particularly on my PowerBook.
- Dependent packages upgraded:
- DbUnit 2.1
- Display Tag 1.0 RC1
- Hibernate 2.1.6
- iBATIS 2.0.7
- JSTL 1.0.6
- MySQL JDBC Driver 3.0.14
- Spring 1.1.1
- Struts 1.2.4
- Struts Menu 2.3
- Struts TestCase 2.1.2
- WebTest build474
- XDoclet 1.2.2 RC1
- WARNING: Running "ant setup test-all" will result in the error: "destDir attribute must be present." Running "ant setup" and then "ant test-all" is an easy workaround. I've entered a bug in XDoclet's JIRA, but haven't been able to figure out a solution yet.
- Dependent packages added:
- Cargo 0.2 - A set of Ant tasks for starting and stopping Java containers.
- Dumbster 1.2 - A fake SMTP server used to catch and verify messages in unit tests.
- SiteMesh 2.2 - A page-decoration package that will work across different web frameworks.
- URL Rewrite Filter 1.2 - Added and included in WAR, but disabled by default. See web/WEB-INF/urlrewrite.xml for more information.
- Dependent packages removed:
- State Tag and Country Tag - required a $75 license for production use.
- Cactus - no longer needed as all tests can be run out-of-container and Cargo can be used to start Tomcat for in-container (JSP) tests.