This week I had a nice training/presentation of a product call Docato, it’s an XML content management system based on a pure xml database: X-hive. The product is pretty good, it’s pure java and based on open standard.
One of the nice feature is the way you can extend it. With most software products you need to customize them to meet your customer requirements. Most products can be extended and customized by using hooks that are predefined by the vendor.
In the case of Docato they showed us how to extend it using AspectJ an aspect oriented framework. Using AOP means you can define your own hook to extend the product. This is very effective and powerfull. To work well it means that the product has a clean architecture and provide a good documentation of it’s internal API.
I think this a great use of AOP.