This is a simple refactoring exercise that is meant to teach something about dependency inversion and dependency injection.
The documentation is in this blog bost and in the presentation in the doc directory.
To import the project in Eclipse: select
File -> Import -> Existing Project into Workspace
To import the project in Idea: run
mvn idea:idea
Run all the tests. One test will fail. Change production code so that all tests pass.
Read the blog post and/or the included presentation.
On Windows, the tests with the fake smtp server do not work. If you are on Windows, then comment or delete the AcceptanceTest.java file. If you are on Linux, Mac or other Unix, then delete the AcceptanceForWindowsTest.java