Details
-
Improvement
-
Status: Closed
-
Minor
-
Resolution: Won't Fix
-
None
-
None
-
None
Description
JMAP is available on memory and distributed versions of James. It would be nice to have it on JPA Guice version of James also. But for this, there is some work to do:
- Add missing JPA implementations for some data related layers (state changes, Vacation, Identities, ...
- Proper JMAP Guice bindings (can look at Cassandra and memory versions to have an idea) => do not care about DraftMethodsModule, as JMAP draft is deprecated
- Integration tests
To be reasonable, should do it step by step. Should have a JMAP module for JPA that will get filled more with each step of the implementation. For example, a good POC would consist of:
- starting with a JMAPApiRoutes only serving the Core/Echo method for JPA (should be easy enough, just bindings I think?) and adding JMAP configuration
- having a minimal Mailbox with /get, /set and /query methods -> mailbox data layers have been implemented in JPA, only missing is MailboxChangeRepository. Could make a dummy implementation of it first. Could implement it really for JPA in later steps with states and /changes methods
- having a minimal Email with /get, /set and /query methods -> EmailChangeRepository dummy implementation first, like MailboxChangeRepository. Also careful with MessageFastViewProjection, could be a dummy implementation too, as when we fail to retrieve data from it we fetch data the normal way
Then from there we can start thinking about the rest!