Skip navigation

Release Notes 2.0.1
Added by Matt Raible, last edited by Matt Raible on May 10, 2008 21:35

Toggle Sidebar

This release contains several bug fixes, improvements to code generation (with AMP) and upgrades Spring to version 2.5. Since this is a minor release, we're not using any of Spring 2.5's features, but there's nothing stopping you from using them. The new annotations are particularly exciting.

To learn more about Spring 2.5's features, see InfoQ's What's New in Spring 2.5: Part 1 article.

Please see the Upgrade Guide below or the QuickStart Guide to get started with this release. If you're upgrading from a previous release, you may be interested in the changelog.

Upgrade Guide

If you're currently using AppFuse 2.0, there's a few things you'll need to change to upgrade to 2.0.1. If you're using a version prior to 2.0, you may want to follow previous upgrade instructions first.

Diff is your friend
The easiest way to make the changes below might be to compare your pom.xml, ApplicationResources.properties, web.xml and web-tests.xml with the ones from a new archetype. Beyond Compare is a fabulous diff tool for Windows users. To do this, create a new project using 2.0.1, then compare the top-level directory of your project with the new one.

The tutorial applications have been upgraded from 2.0 to 2.0.1. Looking at the diffs for these projects may be one of the easiest ways to upgrade.

If you've used war:inplace
If you've used mvn war:inplace in your project, make sure you remove your WEB-INF/classes and re-run war:inplace:

rm -r src/main/webapp/WEB-INF/classes

The following are a detailed set of steps you'll need to do if you're manually upgrading your project from a previous 2.x version.

  1. Backup your project on your local file system or (even better) in your source control system.
  2. In your pom.xml, change <appfuse.version> to 2.0.1 and <spring.version> to 2.5.
  3. Maven's war overlay feature is based on timestamps. If you've overridden AppFuse files in your project, you'll need to "touch" them in order to give them a newer timestamp. Here's a sample of what you might run:
    touch src/main/webapp/*
    touch src/main/webapp/scripts/*
    touch src/main/webapp/WEB-INF/*
    touch src/main/webapp/WEB-INF/pages/*
    Alternatively, you could touch all files in src/main:
    find src/main -print0 | xargs -r0 touch

    Another, more permanent, solution is to use <dependentWarExcludes> to prevent the files from being overlayed.
  4. Upgrade the maven-jetty-plugin to version 6.1.6.
  5. Change any spring-mock dependencies to spring-test.
  6. If you're using Hibernate, change the <hibernate.dialect> property to MySQL5InnoDBDialect.
  7. Remove any HTML markup from your i18n bundles (ApplicationResources*.properties) since XML is escaped in messages.jsp. [APF-880]
  8. Check your JSPs for any JSTL "${}" expressions inside Struts 2 tags. These will need to be converted to equivalent OGNL expressions. APF-941 has more details and references.

About the AppFuse Maven Plugin

This plugin currently does two things: 1) code generation for CRUD and 2) allows you to convert your project to use AppFuse's source instead of using its binary dependencies.

Generating CRUD with AMP

You can run the following command to generate CRUD screens/classes for a POJO:

mvn appfuse:gen -Dentity=Name

If you don't specify the entity name, you will be prompted for it. Currently, if a @Column has "nullable = false", a "required field" validation rule will be generated as part of the web framework's validation configuration. This command will also install the generated code, unless you specify -DdisableInstallation=true.

If your entity is not defined in hibernate.cfg.xml, it will be added.

In a modular project, these commands must be run in the "core" and "web" modules. The plugin is smart enough to figure out when it should/should not generate stuff based on the packaging type (jar vs. war). If you want to generate specific code in a "war" project, you can use gen-core or gen-web.

Removing Code
You can run mvn appfuse:remove to remove the artifacts installed by appfuse:gen.

There's also a goal that allows you to generate model objects from database tables.

appfuse:gen-model

This goal will install the generated files into your source tree, unless you specify -DdisableInstallation=true. After running this command, you can use appfuse:gen to generate CRUD classes/tests/screens for this object.

Installing AppFuse's source into your project

The good news is creating an "old style" project is now pretty easy. After you've create a new project using 2.x, you can run the following command:

mvn appfuse:full-source

This goal will convert your project to use all of AppFuse's source and remove all dependencies on AppFuse.

What the full-source plugin does:

  1. Exports all sources from Subversion into your project. It reads the dao.framework and web.framework properties to determine what you need.
  2. Removes warpath plugin from pom.xml.
  3. Calculates dependencies by reading pom.xml files form the various AppFuse modules. It replaces your dependencies with these new ones. The order of the dependencies added is alphabetical based on groupId.
  4. Reads properties from the root AppFuse pom.xml and adds the ones that don't exist to your project. The order of the properties added is alphabetical.
  5. Renames packages from org.appfuse to your project's groupId.

If you have issues developing AppFuse in Eclipse or NetBeans because of the WarPath plugin, running appfuse:full-source should fix that problem. It removes the warpath plugin as part of its installation process.

Detailed Changelog

AppFuse JIRA (51 issues)
T Key Summary Status Res
Bug APF-1006 bug Acegi security and authenticated user without any application roles ResolvedResolved CANNOT REPRODUCE
Improvement APF-961 Upgrade to Maven Jetty Plugin 6.1.6 ResolvedResolved FIXED
Bug APF-959 Possible fix/workaround for this issue: "Problem with jetty:run in Tapestry basic archetype" ResolvedResolved FIXED
Improvement APF-958 Upgrade to Spring 2.5 ResolvedResolved FIXED
Bug APF-956 No encryption after validation error ResolvedResolved FIXED
Bug APF-955 <s:checkbox/> not decorated with leading <li> ResolvedResolved FIXED
Bug APF-951 Two intro web-pages need clarification ResolvedResolved FIXED
Improvement APF-945 Upgrade to Spring 2.5 RC2 ResolvedResolved FIXED
Improvement APF-942 Upgrade to Acegi-JSF 1.1.3 ResolvedResolved FIXED
Improvement APF-941 Upgrade to Struts 2.0.11 ResolvedResolved FIXED
Bug APF-940 Attempting to access a restricted resource (as per security.xml) results in NullPointerException ResolvedResolved FIXED
Improvement APF-938 Hibernate tutorial should explain OpenSessionInViewFilter ResolvedResolved FIXED
Improvement APF-932 Upgrade to Struts 2.0.10 ResolvedResolved FIXED
Improvement APF-931 Change to use MySQL5InnoDBDialect to remove JDBC warnings ResolvedResolved FIXED
Bug APF-930 default.From not working for SMTP (new MailEngine.sendMessage method) ResolvedResolved FIXED
Bug APF-928 Basic JSF fails to deploy on Glassfish ResolvedResolved FIXED
Bug APF-927 Ugly edit profile page ResolvedResolved FIXED
Improvement APF-926 Upgrade to Spring 2.0.7 ResolvedResolved FIXED
Bug APF-925 full-source JPA spring-modular: some tomcat tests failing and 'View Users' and "Current Users" pages blank ResolvedResolved FIXED
Bug APF-923 Italian Localization errors ResolvedResolved FIXED
Improvement APF-922 set "maxlength" attribute for input text fields when length is set for a @Column annotation ResolvedResolved FIXED
Bug APF-921 generated sample data does not fit string columns when they are less than 10 characters long ResolvedResolved FIXED
Bug APF-919 Tapestry form generation doesn't work when POJO has Integers ResolvedResolved FIXED
Improvement APF-918 Change aspectj.version to match the version that's in Maven's central repo ResolvedResolved FIXED
Bug APF-917 ApplicationResources.properties are overriden by war dependency if war dependency has newer timestamp on i18n files ResolvedResolved CANNOT REPRODUCE
Bug APF-916 Typo on Page Not Found - 'your' should be 'you' ResolvedResolved FIXED
Bug APF-915 Build Error for Spring MVC QuickStart projects ResolvedResolved WON'T FIX
Bug APF-913 JSF List page only works when POJO uses "id" as @Id property ResolvedResolved FIXED
Bug APF-911 Running appfuse:gen in a modular project's "web" directory results doesn't work ResolvedResolved FIXED
Bug APF-910 Creating a modular Spring MVC project, changing it to JPA and running full-source results in two persistence.xml files ResolvedResolved FIXED
Bug APF-909 Remember Me warning has HTML (<strong> tags) in its text ResolvedResolved FIXED
Bug APF-907 appfuse:full-source fatal error: couldn't rename temporary file ResolvedResolved FIXED
Bug APF-906 Running full-source results in couldn't rename temporary file error ResolvedResolved FIXED
Bug APF-905 JSF's BasePageTestCase does not use AUTOWIRE_BY_NAME ResolvedResolved FIXED
Bug APF-904 Web services do not work ResolvedResolved FIXED
Bug APF-903 Navigation buttons not visible fully in IE6 ResolvedResolved FIXED
Bug APF-902 AMP 2.0 seems to ignore revengfile property in the plugin configuration ResolvedResolved FIXED
Bug APF-900 Using appfuse:full-source on modular Struts project throws java.lang.OutOfMemoryError: Java heap space ResolvedResolved FIXED
Bug APF-899 Generated Hibernate POJO's include Set's in hashCode ResolvedResolved FIXED
Bug APF-896 Field validators missing open tag when type = number ResolvedResolved FIXED
Bug APF-894 SecurityContext in session required to log user in automatically ResolvedResolved CANNOT REPRODUCE
Bug APF-868 ModelGeneratorMojo - JDBC Driver can't be loaded from project's dependencies ResolvedResolved WON'T FIX
Bug APF-863 GZipFilter prevents XFire services listing from showing ResolvedResolved FIXED
Bug APF-850 Data Access Failure Object of class [org.appfuse.model.User] with identifier [4]: optimistic locking failed; nested exception is ResolvedResolved FIXED
Bug APF-809 Some bad url's does not display the "Page not found" page but the "Yikes!" page.... ResolvedResolved FIXED
Bug APF-681 Turkish Language Integration-test bug ResolvedResolved CANNOT REPRODUCE
Improvement APF-666 Patch for rationalisation of password encryption ResolvedResolved FIXED
Task APF-661 Use Snippet Plugin to sync tutorials with source code ResolvedResolved WON'T FIX
Task APF-560 Create tutorial showing how to migrate a 1.9.x application to a 2.0 Maven-based structure ResolvedResolved FIXED
Bug APF-333 webtest failes on html entities from ApplicationRessource.properties ResolvedResolved CANNOT REPRODUCE
Bug APF-92 Error not displayed when an email server is NOT attached and user attempts to send PasswordHint ResolvedResolved FIXED


Adaptavist Theme Builder Powered by Atlassian Confluence