Ars Machina
Software development isn't just technique, it is an art too

The Ars Machina Project

The Ars Machina Project is a collection of open-source packages, released under the Apache Public License version 2. Its goal is to provide well-written common application building blocks that cut development time and bugs and to suggest some development standards (packages and naming conventions).

To subscribe to the project mailing list, click here. Feel free to send your opinion, positive or negative.

The Ars Machina Project issue tracker is hosted at SourceForge.

All their packages are available to download via Maven through our own repository. Add this XML snippet to the <repositories> tag (if it does not exists, create it) of your pom.xml or $HOME/.m2/settings.xml:

	<name>Ars Machina repository</name>


Ars Machina Example Project
A simple Web application built to be an example of all the above packages and of Tapestry, Hibernate, Hibernate Validator, and Spring themselves.
Generic DAO
Provides some interfaces that define generic DAOs (Data Access Object). This package is completely implementation-independent and has no dependencies.
Generic DAO-Hibernate
Implements all methods of Generic DAO interfaces using Hibernate as ORM framework. It is meant to be used as a superclass for DAO implementations.
Generic Controller
Provides some interfaces that define generic controllers (business rules tier) and an implementation of them. This package is completely implementation-independent and has no dependencies except Generic DAO.
Generic Controller-Spring
Provides a controller implementation class with transaction management using the Spring Framework and annotations.
Generic Authentication
Provides classes and interfaces that implements a generic authentication module: User, Permission, PermissionGroup, Role. This package is completely implementation-independent and has no dependencies except Generic DAO, Generic Controller and the JPA ORM annotations.
Generic Authentication-Hibernate
Implements the Generic Authentication DAOs with Hibernate.
Tapestry CRUD
Provides support for creating CRUD (Create, Retrieve, Update, Delete) pages using Tapestry 5, eliminating most of boilerplate code, providing out-of-the-box AJAX support and providing a standard way of implementing CRUDs. This package also adds some concepts not existing in Tapestry 5, such as the activation context encoder.
Tapestry CRUD-Hibernate-Validator
Adds Hibernate Validator validations into Tapestry CRUD forms.
Tapestry Access Logger
Provides support for easy logging of user accesses (visits) in Tapestry 5 applications. It provides out-of-the-box logging using Sfl4J and the standard output.
Tapestry Access Logger-Hibernate
Logs user accesses (visits) in Tapestry 5 applications using Hibernate to store them in a database.