Benoit Tellier created JAMES-3499:
-------------------------------------

             Summary: Separate Guice modules from Cassandr* apps for better 
reuse
                 Key: JAMES-3499
                 URL: https://issues.apache.org/jira/browse/JAMES-3499
             Project: James Server
          Issue Type: Improvement
          Components: guice
            Reporter: Benoit Tellier


I do love JAMES-3492 contribution effort however I do have to maintain several 
James deployments relying on ElasticSearch (version 6) that - sadly - I can not 
migrate quickly.

As such, I consider backporting ES6 support in a third party repository not to 
delay in any way this ElasticSearch V7 migration work, and without altering my 
ability to deploy new releases.

However current project structure do not allow me today to do that, as 
ElasticSearch guice modules are mixed with Cassandra guice modules and do pull 
the ES7 dependency in all downstream maven modules - clashing with the ES6 
dependency I plan to use on my backports.

A simple solution to this is to better split our maven modules:

 - Have a dedicated maven module for Cassandra guice modules
 - Have a dedicated maven module for ElasticSearch guice modules - that I gonna 
overide in my backport
 - Preserve the cassandra-guice module assembling the server - but with no 
modules
 - Have a dedicated maven module for the distributed modules (event-bus, 
mailqueue, task manager, blobstore module chooser)

Basically the directory structure I propose would look like:

{code:java}
server/container/guice/cassandra  # Guice modules for Cassandra
server/container/guice/elasticsearch  # Guice modules for ElasticSearch
server/container/guice/distributed  # Guice modules reusing RabbitMQ
{code}

Definition of done: 
 - No guice module are defined next to a cassandra* JamesServerMain.




--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to