Emmet Implementation Notes


Maven module roadmap

The Emmet codebase is split into a number of interdependent Maven modules. The structure is intended to foster reuse, and to allow us to separate Emmet functionality for the case where the system integrator wants to deploy them separately.

The modules are as follows:

  • ...

The project's parent POM file has the following embedded properties:

  • The emmet-version POM property is the master version number for all Emmet artifacts.
  • The chico-version POM property gived the version number of Chico to be used.
  • The spring-version POM property gives the version of Spring to be used.
  • The spring-security-version POM property gives the version of SpringSecurity to be used.

The emmet-version POM property is injected into the file emmet.webapp/src/main/resources/build.properties using Maven resource filtering. Other build-time properties could potentially be injected there if there was a need to do this.

The Emmet servlet

EmmetUserDetailsService

The EmmetUserDetailsService is a custom User Details Service that supports a richer model of user details than the default store, without going to the extent of a full-blown LDAP service. The key features will include:

  • Support for users with multiple "identity" URLs.
  • Support for one-time passwords, password expiry and password reuse restrictions.
  • Support for extensible user profile information and preference storage.
  • Persistence in a local RDBMs.
  • The ability to populate a test details store by Spring DI using bean wiring files.

The initial version is MySQL specific, and stores raw passwords in the database. We know the latter is a really bad idea ...

EmmetController

The EmmetController is a Spring MVC bean that implements the Emmet user management subsystem. When completed, it will be RESTful and will provide web APIs for user account administration.

The current version is mostly complete, with only self registration and "user profile" support missing.