JAMES-2418 Rely on Stream rather than on collections for getUrls
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/87b3b185 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/87b3b185 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/87b3b185 Branch: refs/heads/master Commit: 87b3b1850d5365240289887568505ff266e9aa23 Parents: fb4e7c6 Author: benwa <btell...@linagora.com> Authored: Tue Jun 12 09:52:58 2018 +0700 Committer: benwa <btell...@linagora.com> Committed: Thu Jun 14 15:16:59 2018 +0700 ---------------------------------------------------------------------- .../org/apache/james/utils/InMemoryMailRepositoryStore.java | 5 +++-- .../org/apache/james/utils/MailRepositoryProbeImpl.java | 4 +++- .../mailrepositorystore/MailRepositoryStoreBeanFactory.java | 6 +++--- .../james/mailrepository/api/MailRepositoryStore.java | 3 ++- .../james/mailrepository/api/MailRepositoryUrlStore.java | 4 ++-- .../cassandra/CassandraMailRepositoryUrlStore.java | 9 +++------ .../james/mailrepository/jpa/JPAMailRepositoryUrlStore.java | 9 +++------ .../james/mailrepository/mock/MockMailRepositoryStore.java | 7 +++---- .../mailrepository/memory/MemoryMailRepositoryUrlStore.java | 6 +++--- .../james/webadmin/service/MailRepositoryStoreService.java | 1 - .../james/webadmin/routes/MailRepositoriesRoutesTest.java | 7 +++++-- .../webadmin/service/MailRepositoryStoreServiceTest.java | 9 +++++---- 12 files changed, 35 insertions(+), 35 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/87b3b185/server/container/guice/guice-common/src/main/java/org/apache/james/utils/InMemoryMailRepositoryStore.java ---------------------------------------------------------------------- diff --git a/server/container/guice/guice-common/src/main/java/org/apache/james/utils/InMemoryMailRepositoryStore.java b/server/container/guice/guice-common/src/main/java/org/apache/james/utils/InMemoryMailRepositoryStore.java index 6ec37a4..1d809f5 100644 --- a/server/container/guice/guice-common/src/main/java/org/apache/james/utils/InMemoryMailRepositoryStore.java +++ b/server/container/guice/guice-common/src/main/java/org/apache/james/utils/InMemoryMailRepositoryStore.java @@ -26,6 +26,7 @@ import java.util.Optional; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; +import java.util.stream.Stream; import org.apache.commons.configuration.CombinedConfiguration; import org.apache.commons.configuration.ConfigurationException; @@ -65,8 +66,8 @@ public class InMemoryMailRepositoryStore implements MailRepositoryStore, Configu } @Override - public List<MailRepositoryUrl> getUrls() { - return ImmutableList.copyOf(urlStore.list()); + public Stream<MailRepositoryUrl> getUrls() { + return urlStore.list(); } @Override http://git-wip-us.apache.org/repos/asf/james-project/blob/87b3b185/server/container/guice/guice-common/src/main/java/org/apache/james/utils/MailRepositoryProbeImpl.java ---------------------------------------------------------------------- diff --git a/server/container/guice/guice-common/src/main/java/org/apache/james/utils/MailRepositoryProbeImpl.java b/server/container/guice/guice-common/src/main/java/org/apache/james/utils/MailRepositoryProbeImpl.java index 71f7dec..b908450 100644 --- a/server/container/guice/guice-common/src/main/java/org/apache/james/utils/MailRepositoryProbeImpl.java +++ b/server/container/guice/guice-common/src/main/java/org/apache/james/utils/MailRepositoryProbeImpl.java @@ -27,6 +27,7 @@ import org.apache.james.mailrepository.api.MailKey; import org.apache.james.mailrepository.api.MailRepositoryStore; import org.apache.james.mailrepository.api.MailRepositoryUrl; +import com.github.steveash.guavate.Guavate; import com.google.common.collect.ImmutableList; public class MailRepositoryProbeImpl implements GuiceProbe { @@ -56,7 +57,8 @@ public class MailRepositoryProbeImpl implements GuiceProbe { } public List<MailRepositoryUrl> listRepositoryUrls() { - return ImmutableList.copyOf(repositoryStore.getUrls()); + return repositoryStore.getUrls() + .collect(Guavate.toImmutableList()); } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/james-project/blob/87b3b185/server/container/spring/src/main/java/org/apache/james/container/spring/bean/factory/mailrepositorystore/MailRepositoryStoreBeanFactory.java ---------------------------------------------------------------------- diff --git a/server/container/spring/src/main/java/org/apache/james/container/spring/bean/factory/mailrepositorystore/MailRepositoryStoreBeanFactory.java b/server/container/spring/src/main/java/org/apache/james/container/spring/bean/factory/mailrepositorystore/MailRepositoryStoreBeanFactory.java index b83af66..a05b3ca 100644 --- a/server/container/spring/src/main/java/org/apache/james/container/spring/bean/factory/mailrepositorystore/MailRepositoryStoreBeanFactory.java +++ b/server/container/spring/src/main/java/org/apache/james/container/spring/bean/factory/mailrepositorystore/MailRepositoryStoreBeanFactory.java @@ -18,11 +18,11 @@ ****************************************************************/ package org.apache.james.container.spring.bean.factory.mailrepositorystore; -import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.stream.Stream; import javax.annotation.PostConstruct; @@ -201,8 +201,8 @@ public class MailRepositoryStoreBeanFactory extends AbstractBeanFactory implemen } @Override - public synchronized List<MailRepositoryUrl> getUrls() { - return new ArrayList<>(repositories.keySet()); + public synchronized Stream<MailRepositoryUrl> getUrls() { + return repositories.keySet().stream(); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/87b3b185/server/data/data-api/src/main/java/org/apache/james/mailrepository/api/MailRepositoryStore.java ---------------------------------------------------------------------- diff --git a/server/data/data-api/src/main/java/org/apache/james/mailrepository/api/MailRepositoryStore.java b/server/data/data-api/src/main/java/org/apache/james/mailrepository/api/MailRepositoryStore.java index e13c31c..1ae2b5d 100644 --- a/server/data/data-api/src/main/java/org/apache/james/mailrepository/api/MailRepositoryStore.java +++ b/server/data/data-api/src/main/java/org/apache/james/mailrepository/api/MailRepositoryStore.java @@ -21,6 +21,7 @@ package org.apache.james.mailrepository.api; import java.util.List; import java.util.Optional; +import java.util.stream.Stream; public interface MailRepositoryStore { @@ -53,7 +54,7 @@ public interface MailRepositoryStore { * * @return urls */ - List<MailRepositoryUrl> getUrls(); + Stream<MailRepositoryUrl> getUrls(); class MailRepositoryStoreException extends Exception { public MailRepositoryStoreException(String msg, Throwable t) { http://git-wip-us.apache.org/repos/asf/james-project/blob/87b3b185/server/data/data-api/src/main/java/org/apache/james/mailrepository/api/MailRepositoryUrlStore.java ---------------------------------------------------------------------- diff --git a/server/data/data-api/src/main/java/org/apache/james/mailrepository/api/MailRepositoryUrlStore.java b/server/data/data-api/src/main/java/org/apache/james/mailrepository/api/MailRepositoryUrlStore.java index d16232a..f30b332 100644 --- a/server/data/data-api/src/main/java/org/apache/james/mailrepository/api/MailRepositoryUrlStore.java +++ b/server/data/data-api/src/main/java/org/apache/james/mailrepository/api/MailRepositoryUrlStore.java @@ -19,13 +19,13 @@ package org.apache.james.mailrepository.api; -import java.util.Set; +import java.util.stream.Stream; public interface MailRepositoryUrlStore { void add(MailRepositoryUrl url); - Set<MailRepositoryUrl> list(); + Stream<MailRepositoryUrl> list(); boolean contains(MailRepositoryUrl url); } http://git-wip-us.apache.org/repos/asf/james-project/blob/87b3b185/server/data/data-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlStore.java ---------------------------------------------------------------------- diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlStore.java b/server/data/data-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlStore.java index 65296fc..9d9fc02 100644 --- a/server/data/data-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlStore.java +++ b/server/data/data-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlStore.java @@ -19,15 +19,13 @@ package org.apache.james.mailrepository.cassandra; -import java.util.Set; +import java.util.stream.Stream; import javax.inject.Inject; import org.apache.james.mailrepository.api.MailRepositoryUrl; import org.apache.james.mailrepository.api.MailRepositoryUrlStore; -import com.github.steveash.guavate.Guavate; - public class CassandraMailRepositoryUrlStore implements MailRepositoryUrlStore { private final UrlsDao urlsDao; @@ -43,10 +41,9 @@ public class CassandraMailRepositoryUrlStore implements MailRepositoryUrlStore { } @Override - public Set<MailRepositoryUrl> list() { + public Stream<MailRepositoryUrl> list() { return urlsDao.retrieveUsedUrls() - .join() - .collect(Guavate.toImmutableSet()); + .join(); } @Override http://git-wip-us.apache.org/repos/asf/james-project/blob/87b3b185/server/data/data-jpa/src/main/java/org/apache/james/mailrepository/jpa/JPAMailRepositoryUrlStore.java ---------------------------------------------------------------------- diff --git a/server/data/data-jpa/src/main/java/org/apache/james/mailrepository/jpa/JPAMailRepositoryUrlStore.java b/server/data/data-jpa/src/main/java/org/apache/james/mailrepository/jpa/JPAMailRepositoryUrlStore.java index 576b774..068c4f6 100644 --- a/server/data/data-jpa/src/main/java/org/apache/james/mailrepository/jpa/JPAMailRepositoryUrlStore.java +++ b/server/data/data-jpa/src/main/java/org/apache/james/mailrepository/jpa/JPAMailRepositoryUrlStore.java @@ -19,7 +19,7 @@ package org.apache.james.mailrepository.jpa; -import java.util.Set; +import java.util.stream.Stream; import javax.inject.Inject; import javax.persistence.EntityManagerFactory; @@ -28,8 +28,6 @@ import org.apache.james.backends.jpa.TransactionRunner; import org.apache.james.mailrepository.api.MailRepositoryUrl; import org.apache.james.mailrepository.api.MailRepositoryUrlStore; -import com.github.steveash.guavate.Guavate; - public class JPAMailRepositoryUrlStore implements MailRepositoryUrlStore { private final TransactionRunner transactionRunner; @@ -45,14 +43,13 @@ public class JPAMailRepositoryUrlStore implements MailRepositoryUrlStore { } @Override - public Set<MailRepositoryUrl> list() { + public Stream<MailRepositoryUrl> list() { return transactionRunner.runAndRetrieveResult(entityManager -> entityManager .createNamedQuery("listUrls", JPAUrl.class) .getResultList() .stream() - .map(JPAUrl::toMailRepositoryUrl) - .collect(Guavate.toImmutableSet())); + .map(JPAUrl::toMailRepositoryUrl)); } @Override http://git-wip-us.apache.org/repos/asf/james-project/blob/87b3b185/server/data/data-library/src/test/java/org/apache/james/mailrepository/mock/MockMailRepositoryStore.java ---------------------------------------------------------------------- diff --git a/server/data/data-library/src/test/java/org/apache/james/mailrepository/mock/MockMailRepositoryStore.java b/server/data/data-library/src/test/java/org/apache/james/mailrepository/mock/MockMailRepositoryStore.java index f232e43..dc3e1d9 100644 --- a/server/data/data-library/src/test/java/org/apache/james/mailrepository/mock/MockMailRepositoryStore.java +++ b/server/data/data-library/src/test/java/org/apache/james/mailrepository/mock/MockMailRepositoryStore.java @@ -19,11 +19,10 @@ package org.apache.james.mailrepository.mock; -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.stream.Stream; import org.apache.james.mailrepository.api.MailRepository; import org.apache.james.mailrepository.api.MailRepositoryStore; @@ -48,8 +47,8 @@ public class MockMailRepositoryStore implements MailRepositoryStore { } @Override - public List<MailRepositoryUrl> getUrls() { - return new ArrayList<>(storedObjectMap.keySet()); + public Stream<MailRepositoryUrl> getUrls() { + return storedObjectMap.keySet().stream(); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/87b3b185/server/data/data-memory/src/main/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryUrlStore.java ---------------------------------------------------------------------- diff --git a/server/data/data-memory/src/main/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryUrlStore.java b/server/data/data-memory/src/main/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryUrlStore.java index c6ab960..130bd5d 100644 --- a/server/data/data-memory/src/main/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryUrlStore.java +++ b/server/data/data-memory/src/main/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryUrlStore.java @@ -20,11 +20,11 @@ package org.apache.james.mailrepository.memory; import java.util.Set; +import java.util.stream.Stream; import org.apache.james.mailrepository.api.MailRepositoryUrl; import org.apache.james.mailrepository.api.MailRepositoryUrlStore; -import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; public class MemoryMailRepositoryUrlStore implements MailRepositoryUrlStore { @@ -40,8 +40,8 @@ public class MemoryMailRepositoryUrlStore implements MailRepositoryUrlStore { } @Override - public Set<MailRepositoryUrl> list() { - return ImmutableSet.copyOf(urls); + public Stream<MailRepositoryUrl> list() { + return urls.stream(); } @Override http://git-wip-us.apache.org/repos/asf/james-project/blob/87b3b185/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/MailRepositoryStoreService.java ---------------------------------------------------------------------- diff --git a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/MailRepositoryStoreService.java b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/MailRepositoryStoreService.java index 7a0d691..d8e0e95 100644 --- a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/MailRepositoryStoreService.java +++ b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/MailRepositoryStoreService.java @@ -55,7 +55,6 @@ public class MailRepositoryStoreService { public List<MailRepositoryResponse> listMailRepositories() { return mailRepositoryStore.getUrls() - .stream() .map(MailRepositoryResponse::new) .collect(Guavate.toImmutableList()); } http://git-wip-us.apache.org/repos/asf/james-project/blob/87b3b185/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/routes/MailRepositoriesRoutesTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/routes/MailRepositoriesRoutesTest.java b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/routes/MailRepositoriesRoutesTest.java index 73f8539..2fdcea3 100644 --- a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/routes/MailRepositoriesRoutesTest.java +++ b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/routes/MailRepositoriesRoutesTest.java @@ -42,6 +42,7 @@ import static org.mockito.Mockito.when; import java.nio.charset.StandardCharsets; import java.util.List; import java.util.Optional; +import java.util.stream.Stream; import org.apache.james.mailrepository.api.MailKey; import org.apache.james.mailrepository.api.MailRepositoryStore; @@ -170,6 +171,8 @@ public class MailRepositoriesRoutesTest { @Test public void getMailRepositoriesShouldReturnEmptyWhenEmpty() { + when(mailRepositoryStore.getUrls()).thenReturn(Stream.empty()); + List<Object> mailRepositories = when() .get() @@ -187,7 +190,7 @@ public class MailRepositoriesRoutesTest { @Test public void getMailRepositoriesShouldReturnRepositoryWhenOne() { when(mailRepositoryStore.getUrls()) - .thenReturn(ImmutableList.of(URL_MY_REPO)); + .thenReturn(Stream.of(URL_MY_REPO)); when() .get() @@ -202,7 +205,7 @@ public class MailRepositoriesRoutesTest { public void getMailRepositoriesShouldReturnTwoRepositoriesWhenTwo() { ImmutableList<MailRepositoryUrl> myRepositories = ImmutableList.of(URL_MY_REPO, MailRepositoryUrl.from("url://mySecondRepo")); when(mailRepositoryStore.getUrls()) - .thenReturn(myRepositories); + .thenReturn(myRepositories.stream()); List<String> mailRepositories = when() http://git-wip-us.apache.org/repos/asf/james-project/blob/87b3b185/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/MailRepositoryStoreServiceTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/MailRepositoryStoreServiceTest.java b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/MailRepositoryStoreServiceTest.java index 927c5136..b505244 100644 --- a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/MailRepositoryStoreServiceTest.java +++ b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/MailRepositoryStoreServiceTest.java @@ -25,6 +25,7 @@ import static org.mockito.Mockito.when; import java.nio.charset.StandardCharsets; import java.util.Optional; +import java.util.stream.Stream; import javax.mail.internet.MimeMessage; @@ -43,8 +44,6 @@ import org.apache.mailet.base.test.FakeMail; import org.junit.Before; import org.junit.Test; -import com.google.common.collect.ImmutableList; - public class MailRepositoryStoreServiceTest { private static final MailRepositoryUrl FIRST_REPOSITORY = MailRepositoryUrl.from("url://repository"); private static final MailRepositoryUrl SECOND_REPOSITORY = MailRepositoryUrl.from("url://repository2"); @@ -64,13 +63,15 @@ public class MailRepositoryStoreServiceTest { @Test public void listMailRepositoriesShouldReturnEmptyWhenEmpty() { + when(mailRepositoryStore.getUrls()).thenReturn(Stream.empty()); + assertThat(testee.listMailRepositories()).isEmpty(); } @Test public void listMailRepositoriesShouldReturnOneRepositoryWhenOne() { when(mailRepositoryStore.getUrls()) - .thenReturn(ImmutableList.of(FIRST_REPOSITORY)); + .thenReturn(Stream.of(FIRST_REPOSITORY)); assertThat(testee.listMailRepositories()) .extracting(MailRepositoryResponse::getRepository) .containsOnly(FIRST_REPOSITORY.asString()); @@ -79,7 +80,7 @@ public class MailRepositoryStoreServiceTest { @Test public void listMailRepositoriesShouldReturnTwoRepositoriesWhentwo() { when(mailRepositoryStore.getUrls()) - .thenReturn(ImmutableList.of(FIRST_REPOSITORY, SECOND_REPOSITORY)); + .thenReturn(Stream.of(FIRST_REPOSITORY, SECOND_REPOSITORY)); assertThat(testee.listMailRepositories()) .extracting(MailRepositoryResponse::getRepository) .containsOnly(FIRST_REPOSITORY.asString(), SECOND_REPOSITORY.asString()); --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org