Morph is a Java framework that eases the internal interoperability of an application. As information flows through an application, it undergoes multiple transformations. Morph provides a standard way to implement these transformations. For example, when a user submits data using an HTML form in a J2EE application, the data typically goes through three transformations. First, HTTP request parameters are converted to presentation-tier command objects. Second, the command objects are converted into business objects. Finally, the business objects are persisted to a database.

In addition to providing a framework for performing transformations like those described above, Morph provides implementations of many common transformations, including all three of the transformations in the example above (1 is partly done now, 2 and 3 are done). As you can see, Morph is surprisingly powerful out-of-the-box, but it can't solve every problem. Instead, it provides a simple API you can use to harness its power for your particular situation. It has been built from the ground up for flexibility and extensibility, and integrates seamlessly with dependency injection frameworks such as Spring, PicoContainer and Hivemind.

Many of the ideas in Morph were inspired by the Apache Jakarta Commons BeanUtils project, the Apache Jakarta Commons sandbox component called Convert and the Context notion of the Apache Jakarta Commons Chain project. Morph synthesizes ideas from these various areas into one consistent API. Implementations are be provided that solve many common problems such as mapping HTTP request parameters to POJOs and converting a SQL statement into Java objects.

Special thanks to the developers of Hibernate and the Spring framework. This methods for generating this documentation were taken from Spring, which was in turn adapted from Hibernate.