Danno and Dannotate have been designed to to be customized without the need to touch the actual Java source files. Customization is performed using the Chico customization mechanisms as described in this page.
At the low level, Danno and Dannotate use Spring dependency injection to configure the various servlets in an installation. A site configuration is represented as a number of Spring XML wiring files which specify various configuration parameters and wire up various "beans" to perform tasks such as validation, filtering, persistence and access control.
Building a Danno / Dannotate configuration from scratch would be a daunting task, so the base distribution comes with a set of Spring wiring files that implement the common cases. These configurations are designed use the Chico infrastructure so that simple tailoring can be implemented by setting property values in a couple of properties files.
The Chico documentation describes:
The XML wiring files for Danno and Dannotate may be found in the danno.webapp, dannotate.webapp and danno.common.webapps directories; look in the respective src/main/webapp/WEB-INF directories in the source tree. In addition, there are three "demosite" directories that serve as templates for site-specific customization.
While the Chico site customization approach deals with simple cases, a major customization of Danno and Dannotate is likely to require a degree of understanding of Spring wiring files, and of the way that Spring IoC, Spring MVC, and Spring Security work. If you are not familiar with Spring, we recommend that you read (at least) the IoC and MVC chapters of the online Spring Framework Reference, and the relevant parts of the Spring Security Reference.