Jean Helou created JAMES-3836: --------------------------------- Summary: Proposal: Improved mail repository loading Key: JAMES-3836 URL: https://issues.apache.org/jira/browse/JAMES-3836 Project: James Server Issue Type: Improvement Reporter: Jean Helou
At the moment we have 2 approaches to instanciating mail repositories: * constructor based instantiation with technical dependencies and the MailRepositoryUrl as a constructor argument ( MemoryMailRepository, CassandraMailRepository) * constructor based instantiation with technical dependencies. The MailRepositoryUrl is used in a PostConstruct through Configurable to isolate instances from one another (FileMailRepository, JDBCMailRepository, JPAMailRepository) The former instantiation technique requires hacking around the guice loader in order to create a subcontext for the correct url when loading the mail repository instance ( see org.apache.james.modules.mailrepository.guice.GuiceMailRepositoryLoader#load ) The second technique creates an invalid instance which becomes valid only once the configure method has been called. We were faced with this when building BlobMailRepository and tried to find a better way. We propose a factory based approach where factories capture the technical requirements of the mail repository implementation, are bound to the general context using a @ProvideIntoSet The loader then selects the appropriate factory and uses it to build the requested instance. This requires no custom hacking of the guice context while allowing for pure constructor based instantiation. We propose a corresponding pull request which * implements and demonstrates the new loading mechanism * provides factories and bindings all used repository implementations (memory, blob, cassandra, jpa) Creating the corresponding factories for the remaining implementations should be fairly straightforward. -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org