You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2019/03/04 09:23:00 UTC
[james-project] 03/04: MAILBOX-381 Improve
MemoryMailRepositoryStore code style
This is an automated email from the ASF dual-hosted git repository.
btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 0c02cc50b70b6ba517868810ec73fd80135d64f5
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Thu Feb 28 11:30:54 2019 +0700
MAILBOX-381 Improve MemoryMailRepositoryStore code style
- Use Map::computeIfAbsent
- Use more functional programming style
- Avoid variable re-allocation
- Group public methods together
---
.../memory/MemoryMailRepositoryStore.java | 69 ++++++++++------------
1 file changed, 31 insertions(+), 38 deletions(-)
diff --git a/server/data/data-memory/src/main/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryStore.java b/server/data/data-memory/src/main/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryStore.java
index a7b39bd..63d8d97 100644
--- a/server/data/data-memory/src/main/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryStore.java
+++ b/server/data/data-memory/src/main/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryStore.java
@@ -67,13 +67,8 @@ public class MemoryMailRepositoryStore implements MailRepositoryStore, Configura
}
@Override
- public Stream<MailRepositoryUrl> getUrls() {
- return urlStore.listDistinct();
- }
-
- @Override
public void configure(HierarchicalConfiguration configuration) {
- this.configuration = MailRepositoryStoreConfiguration.parse(configuration);
+ configure(MailRepositoryStoreConfiguration.parse(configuration));
}
public void configure(MailRepositoryStoreConfiguration configuration) {
@@ -88,13 +83,30 @@ public class MemoryMailRepositoryStore implements MailRepositoryStore, Configura
}
}
+ private void initEntry(MailRepositoryStoreConfiguration.Item item) throws ConfigurationException {
+ String className = item.getClassFqdn();
+
+ MailRepositoryProvider usedMailRepository = mailRepositories.stream()
+ .filter(mailRepositoryProvider -> mailRepositoryProvider.canonicalName().equals(className))
+ .findAny()
+ .orElseThrow(() -> new ConfigurationException("MailRepository " + className + " has not been registered"));
+
+ for (Protocol protocol : item.getProtocols()) {
+ protocolToRepositoryProvider.put(protocol, usedMailRepository);
+ perProtocolMailRepositoryDefaultConfiguration.put(protocol, item.getConfiguration());
+ }
+ }
+
+ @Override
+ public Stream<MailRepositoryUrl> getUrls() {
+ return urlStore.listDistinct();
+ }
@Override
public Optional<MailRepository> get(MailRepositoryUrl url) {
- if (urlStore.contains(url)) {
- return Optional.of(select(url));
- }
- return Optional.empty();
+ return Optional.of(url)
+ .filter(urlStore::contains)
+ .map(this::select);
}
@Override
@@ -106,48 +118,31 @@ public class MemoryMailRepositoryStore implements MailRepositoryStore, Configura
@Override
public MailRepository select(MailRepositoryUrl mailRepositoryUrl) {
- return Optional.ofNullable(destinationToRepositoryAssociations.get(mailRepositoryUrl))
- .orElseGet(Throwing.supplier(
- () -> createNewMailRepository(mailRepositoryUrl))
- .sneakyThrow());
+ return destinationToRepositoryAssociations.computeIfAbsent(mailRepositoryUrl,
+ Throwing.function(this::createNewMailRepository).sneakyThrow());
}
private MailRepository createNewMailRepository(MailRepositoryUrl mailRepositoryUrl) throws MailRepositoryStoreException {
MailRepository newMailRepository = retrieveMailRepository(mailRepositoryUrl);
+ initializeNewRepository(newMailRepository, createRepositoryCombinedConfig(mailRepositoryUrl));
urlStore.add(mailRepositoryUrl);
- newMailRepository = initializeNewRepository(newMailRepository, createRepositoryCombinedConfig(mailRepositoryUrl));
- MailRepository previousRepository = destinationToRepositoryAssociations.putIfAbsent(mailRepositoryUrl, newMailRepository);
- return Optional.ofNullable(previousRepository)
- .orElse(newMailRepository);
- }
- private void initEntry(MailRepositoryStoreConfiguration.Item item) throws ConfigurationException {
- String className = item.getClassFqdn();
-
- MailRepositoryProvider usedMailRepository = mailRepositories.stream()
- .filter(mailRepositoryProvider -> mailRepositoryProvider.canonicalName().equals(className))
- .findAny()
- .orElseThrow(() -> new ConfigurationException("MailRepository " + className + " has not been registered"));
-
- for (Protocol protocol : item.getProtocols()) {
- protocolToRepositoryProvider.put(protocol, usedMailRepository);
- perProtocolMailRepositoryDefaultConfiguration.put(protocol, item.getConfiguration());
- }
+ return newMailRepository;
}
private CombinedConfiguration createRepositoryCombinedConfig(MailRepositoryUrl mailRepositoryUrl) {
CombinedConfiguration config = new CombinedConfiguration();
- HierarchicalConfiguration defaultProtocolConfig = perProtocolMailRepositoryDefaultConfiguration.get(mailRepositoryUrl.getProtocol());
- if (defaultProtocolConfig != null) {
- config.addConfiguration(defaultProtocolConfig);
- }
+
+ Optional.ofNullable(perProtocolMailRepositoryDefaultConfiguration.get(mailRepositoryUrl.getProtocol()))
+ .ifPresent(config::addConfiguration);
+
DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
builder.addProperty("[@destinationURL]", mailRepositoryUrl.asString());
config.addConfiguration(builder);
return config;
}
- private MailRepository initializeNewRepository(MailRepository mailRepository, CombinedConfiguration config) throws MailRepositoryStoreException {
+ private void initializeNewRepository(MailRepository mailRepository, CombinedConfiguration config) throws MailRepositoryStoreException {
try {
if (mailRepository instanceof Configurable) {
((Configurable) mailRepository).configure(config);
@@ -155,7 +150,6 @@ public class MemoryMailRepositoryStore implements MailRepositoryStore, Configura
if (mailRepository instanceof Initializable) {
((Initializable) mailRepository).init();
}
- return mailRepository;
} catch (Exception e) {
throw new MailRepositoryStoreException("Cannot init mail repository", e);
}
@@ -167,5 +161,4 @@ public class MemoryMailRepositoryStore implements MailRepositoryStore, Configura
.orElseThrow(() -> new MailRepositoryStoreException("No Mail Repository associated with " + protocol.getValue()))
.provide(mailRepositoryUrl);
}
-
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org