We introduced an Event sourcing implementation in James, allowing us to build complex features in a generic manner. Currently, OverQuota mailing, as well as DLP rule storage relies on an Event sourcing system. More features might rely on this mechanism. The cool thing is that the only thing a back-end need to do to support these features is to implement its own EventStore.
JPA implementation is currently missing. We can:
- Generify Cassandra's Event serialization DTO & DTO modules (in a event-store-dto maven module)
- Introduce a *event-store-jpa* module with a JPA implementation of it.
- And finally add the missing Guice bindings in jpa-common & jpa-guice guice project to bind event-store and support related features.
Link to the event-sourcing implementation: https://github.com/apache/james-project/tree/master/event-sourcing
If you want to handle this issue, and need guidance, please reach us on Gitter: https://gitter.im/apache/james-project