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]