This directory is a whiteboard area for working on new material related to
a set of training courses based on the MailReader example application.

At this time, the material is being built directly with IDEA, and a standard
build file is not yet available.

For the time being, the dependencies required to build this material may be
downloaded here:

* http://people.apache.org/~husted/sandbox-action2-lib.zip

For more about the materials under construction, visit

* * http://StrutsUniversity.org/MailReader+Training+Course

----------------------------------------------------------------------------

