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


The following commit(s) were added to refs/heads/master by this push:
     new 52b3542  [REFACTORING] Store: avoid an intermediate collect (#777)
52b3542 is described below

commit 52b3542d7b009c53f617679e854ea97c810c4105
Author: Benoit TELLIER <[email protected]>
AuthorDate: Mon Dec 6 21:13:31 2021 +0700

    [REFACTORING] Store: avoid an intermediate collect (#777)
---
 .../src/main/java/org/apache/james/blob/api/Store.java            | 8 +++-----
 .../main/java/org/apache/james/blob/mail/MimeMessageStore.java    | 6 ++----
 2 files changed, 5 insertions(+), 9 deletions(-)

diff --git 
a/server/blob/blob-common/src/main/java/org/apache/james/blob/api/Store.java 
b/server/blob/blob-common/src/main/java/org/apache/james/blob/api/Store.java
index f987fef..81331ad 100644
--- a/server/blob/blob-common/src/main/java/org/apache/james/blob/api/Store.java
+++ b/server/blob/blob-common/src/main/java/org/apache/james/blob/api/Store.java
@@ -24,7 +24,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.nio.charset.Charset;
-import java.util.Collection;
+import java.util.Map;
 import java.util.stream.Stream;
 
 import org.apache.commons.lang3.tuple.Pair;
@@ -70,7 +70,7 @@ public interface Store<T, I> {
 
         @FunctionalInterface
         public interface Decoder<T> {
-            T decode(Stream<Pair<BlobType, CloseableByteSource>> streams);
+            T decode(Map<BlobType, CloseableByteSource> streams);
         }
 
         private final BlobPartsId.Factory<I> idFactory;
@@ -102,9 +102,7 @@ public interface Store<T, I> {
         public Mono<T> read(I blobIds) {
             return Flux.fromIterable(blobIds.asMap().entrySet())
                 .publishOn(Schedulers.elastic())
-                .map(entry ->  Pair.of(entry.getKey(), 
readByteSource(blobStore.getDefaultBucketName(), entry.getValue(), 
entry.getKey().getStoragePolicy())))
-                .collectList()
-                .map(Collection::stream)
+                .collectMap(Map.Entry::getKey, entry -> 
readByteSource(blobStore.getDefaultBucketName(), entry.getValue(), 
entry.getKey().getStoragePolicy()))
                 .map(decoder::decode);
         }
 
diff --git 
a/server/blob/mail-store/src/main/java/org/apache/james/blob/mail/MimeMessageStore.java
 
b/server/blob/mail-store/src/main/java/org/apache/james/blob/mail/MimeMessageStore.java
index 619ebbf..c590e3f 100644
--- 
a/server/blob/mail-store/src/main/java/org/apache/james/blob/mail/MimeMessageStore.java
+++ 
b/server/blob/mail-store/src/main/java/org/apache/james/blob/mail/MimeMessageStore.java
@@ -46,7 +46,6 @@ import org.apache.james.server.core.MimeMessageSource;
 import org.apache.james.server.core.MimeMessageWrapper;
 
 import com.google.common.base.Preconditions;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.io.ByteSource;
 
 import reactor.core.publisher.Mono;
@@ -111,9 +110,8 @@ public class MimeMessageStore {
 
     static class MimeMessageDecoder implements Store.Impl.Decoder<MimeMessage> 
{
         @Override
-        public MimeMessage decode(Stream<Pair<BlobType, CloseableByteSource>> 
streams) {
-            Preconditions.checkNotNull(streams);
-            Map<BlobType, CloseableByteSource> pairs = 
streams.collect(ImmutableMap.toImmutableMap(Pair::getLeft, Pair::getRight));
+        public MimeMessage decode(Map<BlobType, CloseableByteSource> pairs) {
+            Preconditions.checkNotNull(pairs);
             Preconditions.checkArgument(pairs.containsKey(HEADER_BLOB_TYPE));
             Preconditions.checkArgument(pairs.containsKey(BODY_BLOB_TYPE));
 

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

Reply via email to