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 2020/04/22 02:31:53 UTC
[james-project] 13/37: JAMES-2997 step #11 Remove bytes from
attachment
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 06d3b79ec3fc9ccc2009923d03bf53278e88de06
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Fri Jan 17 16:05:14 2020 +0700
JAMES-2997 step #11 Remove bytes from attachment
---
.../org/apache/james/mailbox/model/Attachment.java | 42 ++++++---------------
.../james/mailbox/model/ParsedAttachment.java | 44 ++++++++++++++--------
.../james/mailbox/model/MessageAttachmentTest.java | 24 ++++++------
.../cassandra/mail/CassandraAttachmentDAOV2.java | 4 +-
.../cassandra/mail/CassandraAttachmentMapper.java | 10 ++---
.../cassandra/mail/AttachmentLoaderTest.java | 10 ++---
.../mail/CassandraAttachmentDAOV2Test.java | 3 +-
...asticSearchListeningMessageSearchIndexTest.java | 2 +-
.../model/openjpa/AbstractJPAMailboxMessage.java | 6 ++-
.../mailbox/maildir/mail/model/MaildirMessage.java | 6 ++-
.../inmemory/mail/InMemoryAttachmentMapper.java | 28 +++++++-------
.../james/vault/DeletedMessageConverterTest.java | 3 +-
.../james/mailbox/store/StoreMessageManager.java | 14 ++-----
.../mailbox/store/StoreAttachmentManagerTest.java | 6 +--
.../mail/model/impl/SimpleMailboxMessageTest.java | 2 +-
.../apache/james/util/io/InputStreamConsummer.java | 32 ++++++++++++++++
.../message/view/MessageFullViewFactoryTest.java | 2 +-
17 files changed, 127 insertions(+), 111 deletions(-)
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/Attachment.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/Attachment.java
index eb017c9..934d044 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/Attachment.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/Attachment.java
@@ -19,15 +19,12 @@
package org.apache.james.mailbox.model;
-import java.util.Arrays;
-
import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
public class Attachment {
-
public static Builder builder() {
return new Builder();
}
@@ -35,7 +32,7 @@ public class Attachment {
public static class Builder {
private AttachmentId attachmentId;
- private byte[] bytes;
+ private Long size;
private String type;
public Builder attachmentId(AttachmentId attachmentId) {
@@ -44,24 +41,24 @@ public class Attachment {
return this;
}
- public Builder bytes(byte[] bytes) {
- Preconditions.checkArgument(bytes != null);
- this.bytes = bytes;
- return this;
- }
-
public Builder type(String type) {
Preconditions.checkArgument(!Strings.isNullOrEmpty(type));
this.type = type;
return this;
}
+ public Builder size(long size) {
+ Preconditions.checkArgument(size >= 0, "'size' must be positive");
+ this.size = size;
+ return this;
+ }
+
public Attachment build() {
- Preconditions.checkState(bytes != null, "'bytes' is mandatory");
Preconditions.checkState(type != null, "'type' is mandatory");
+ Preconditions.checkState(size != null, "'size' is mandatory");
AttachmentId builtAttachmentId = attachmentId();
Preconditions.checkState(builtAttachmentId != null, "'attachmentId' is mandatory");
- return new Attachment(bytes, builtAttachmentId, type, size());
+ return new Attachment(builtAttachmentId, type, size);
}
private AttachmentId attachmentId() {
@@ -70,19 +67,13 @@ public class Attachment {
}
return AttachmentId.random();
}
-
- private long size() {
- return bytes.length;
- }
}
- private final byte[] bytes;
private final AttachmentId attachmentId;
private final String type;
private final long size;
- private Attachment(byte[] bytes, AttachmentId attachmentId, String type, long size) {
- this.bytes = bytes;
+ private Attachment(AttachmentId attachmentId, String type, long size) {
this.attachmentId = attachmentId;
this.type = type;
this.size = size;
@@ -100,22 +91,12 @@ public class Attachment {
return size;
}
- /**
- * Be careful the returned array is not a copy of the attachment byte array.
- * Mutating it will mutate the attachment!
- * @return the attachment content
- */
- public byte[] getBytes() {
- return bytes;
- }
-
@Override
public boolean equals(Object obj) {
if (obj instanceof Attachment) {
Attachment other = (Attachment) obj;
return Objects.equal(attachmentId, other.attachmentId)
- && Arrays.equals(bytes, other.bytes)
&& Objects.equal(type, other.type)
&& Objects.equal(size, other.size);
}
@@ -124,7 +105,7 @@ public class Attachment {
@Override
public int hashCode() {
- return Objects.hashCode(attachmentId, bytes, type, size);
+ return Objects.hashCode(attachmentId, type, size);
}
@Override
@@ -132,7 +113,6 @@ public class Attachment {
return MoreObjects
.toStringHelper(this)
.add("attachmentId", attachmentId)
- .add("bytes", bytes)
.add("type", type)
.add("size", size)
.toString();
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/ParsedAttachment.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/ParsedAttachment.java
index 649b034..96dd66d 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/ParsedAttachment.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/ParsedAttachment.java
@@ -23,7 +23,8 @@ import java.io.IOException;
import java.io.InputStream;
import java.util.Optional;
-import org.apache.commons.io.IOUtils;
+import org.apache.james.util.io.InputStreamConsummer;
+import org.apache.james.util.io.SizeInputStream;
public class ParsedAttachment {
interface Builder {
@@ -111,20 +112,31 @@ public class ParsedAttachment {
return isInline;
}
- public MessageAttachment asMessageAttachment(AttachmentId attachmentId) {
- try {
- return MessageAttachment.builder()
- .attachment(Attachment.builder()
- .attachmentId(attachmentId)
- .type(contentType)
- .bytes(IOUtils.toByteArray(content))
- .build())
- .name(name)
- .cid(cid)
- .isInline(isInline)
- .build();
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
+ public MessageAttachment asMessageAttachment(AttachmentId attachmentId, long size) {
+ return MessageAttachment.builder()
+ .attachment(Attachment.builder()
+ .attachmentId(attachmentId)
+ .type(contentType)
+ .size(size)
+ .build())
+ .name(name)
+ .cid(cid)
+ .isInline(isInline)
+ .build();
+ }
+
+ public MessageAttachment asMessageAttachment(AttachmentId attachmentId) throws IOException {
+ SizeInputStream sizeInputStream = new SizeInputStream(content);
+ InputStreamConsummer.consume(sizeInputStream);
+ return MessageAttachment.builder()
+ .attachment(Attachment.builder()
+ .attachmentId(attachmentId)
+ .type(contentType)
+ .size(sizeInputStream.getSize())
+ .build())
+ .name(name)
+ .cid(cid)
+ .isInline(isInline)
+ .build();
}
}
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/model/MessageAttachmentTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MessageAttachmentTest.java
index edbc673..d501c30 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/model/MessageAttachmentTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MessageAttachmentTest.java
@@ -45,9 +45,9 @@ class MessageAttachmentTest {
@Test
void buildShouldWorkWhenMandatoryAttributesAreGiven() {
Attachment attachment = Attachment.builder()
- .bytes("content".getBytes())
- .type("type")
- .build();
+ .size(36)
+ .type("type")
+ .build();
MessageAttachment expectedMessageAttachment = new MessageAttachment(attachment, Optional.empty(), Optional.empty(), false);
MessageAttachment messageAttachment = MessageAttachment.builder()
@@ -60,9 +60,9 @@ class MessageAttachmentTest {
@Test
void buildShouldAcceptIsInlineAndNoCid() {
Attachment attachment = Attachment.builder()
- .bytes("content".getBytes())
- .type("type")
- .build();
+ .size(36)
+ .type("type")
+ .build();
MessageAttachment messageAttachment = MessageAttachment.builder()
.attachment(attachment)
@@ -75,9 +75,9 @@ class MessageAttachmentTest {
@Test
void buildShouldSetAttributesWhenAllAreGiven() {
Attachment attachment = Attachment.builder()
- .bytes("content".getBytes())
- .type("type")
- .build();
+ .size(36)
+ .type("type")
+ .build();
MessageAttachment expectedMessageAttachment = new MessageAttachment(attachment, Optional.of("name"), Optional.of(Cid.from("cid")), true);
MessageAttachment messageAttachment = MessageAttachment.builder()
@@ -93,7 +93,7 @@ class MessageAttachmentTest {
@Test
void isInlinedWithCidShouldReturnTrueWhenIsInlineAndHasCid() throws Exception {
Attachment attachment = Attachment.builder()
- .bytes("content".getBytes())
+ .size(36)
.type("type")
.build();
@@ -110,7 +110,7 @@ class MessageAttachmentTest {
@Test
void isInlinedWithCidShouldReturnFalseWhenIsNotInline() throws Exception {
Attachment attachment = Attachment.builder()
- .bytes("content".getBytes())
+ .size(36)
.type("type")
.build();
@@ -127,7 +127,7 @@ class MessageAttachmentTest {
@Test
void isInlinedWithCidShouldReturnFalseWhenIsInlineButNoCid() throws Exception {
Attachment attachment = Attachment.builder()
- .bytes("content".getBytes())
+ .size(36)
.type("type")
.build();
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOV2.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOV2.java
index d846f91..226b40a 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOV2.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOV2.java
@@ -78,11 +78,11 @@ public class CassandraAttachmentDAOV2 {
return size;
}
- public Attachment toAttachment(byte[] data) {
+ public Attachment toAttachment() {
return Attachment.builder()
.attachmentId(attachmentId)
.type(type)
- .bytes(data)
+ .size(size)
.build();
}
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentMapper.java
index dced0a0..7cd1484 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentMapper.java
@@ -83,11 +83,6 @@ public class CassandraAttachmentMapper implements AttachmentMapper {
.orElseThrow(() -> new AttachmentNotFoundException(attachmentId.getId()));
}
- private Mono<Attachment> retrievePayload(DAOAttachment daoAttachment) {
- return Mono.from(blobStore.readBytes(blobStore.getDefaultBucketName(), daoAttachment.getBlobId()))
- .map(daoAttachment::toAttachment);
- }
-
@Override
public List<Attachment> getAttachments(Collection<AttachmentId> attachmentIds) {
Preconditions.checkArgument(attachmentIds != null);
@@ -112,7 +107,7 @@ public class CassandraAttachmentMapper implements AttachmentMapper {
private Mono<Attachment> getAttachmentInternal(AttachmentId id) {
return attachmentDAOV2.getAttachment(id)
- .flatMap(this::retrievePayload);
+ .map(DAOAttachment::toAttachment);
}
@Override
@@ -127,6 +122,7 @@ public class CassandraAttachmentMapper implements AttachmentMapper {
.map(any -> Attachment.builder()
.attachmentId(attachmentId)
.type(contentType)
+ .size(sizeInputStream.getSize())
.build());
}
@@ -156,7 +152,7 @@ public class CassandraAttachmentMapper implements AttachmentMapper {
return Mono.from(blobStore.save(blobStore.getDefaultBucketName(), content, LOW_COST))
.map(blobId -> new DAOAttachment(attachmentId, blobId, parsedAttachment.getContentType(), content.getSize()))
.flatMap(daoAttachment -> storeAttachmentWithIndex(daoAttachment, ownerMessageId))
- .then(Mono.just(parsedAttachment.asMessageAttachment(attachmentId)));
+ .then(Mono.defer(() -> Mono.just(parsedAttachment.asMessageAttachment(attachmentId, content.getSize()))));
}
private Mono<Void> storeAttachmentWithIndex(DAOAttachment daoAttachment, MessageId ownerMessageId) {
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/AttachmentLoaderTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/AttachmentLoaderTest.java
index c536650..cc23204 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/AttachmentLoaderTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/AttachmentLoaderTest.java
@@ -53,7 +53,7 @@ class AttachmentLoaderTest {
Attachment attachment = Attachment.builder()
.attachmentId(attachmentId)
- .bytes("attachment".getBytes())
+ .size(11)
.type("type")
.build();
@@ -79,7 +79,7 @@ class AttachmentLoaderTest {
Attachment attachment = Attachment.builder()
.attachmentId(attachmentId)
- .bytes("attachment".getBytes())
+ .size(11)
.type("type")
.build();
@@ -108,12 +108,12 @@ class AttachmentLoaderTest {
Attachment attachment1 = Attachment.builder()
.attachmentId(attachmentId1)
- .bytes("attachment1".getBytes())
+ .size(12)
.type("type")
.build();
Attachment attachment2 = Attachment.builder()
.attachmentId(attachmentId2)
- .bytes("attachment2".getBytes())
+ .size(13)
.type("type")
.build();
@@ -143,7 +143,7 @@ class AttachmentLoaderTest {
Attachment attachment = Attachment.builder()
.attachmentId(attachmentId)
- .bytes("attachment".getBytes())
+ .size(11)
.type("type")
.build();
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOV2Test.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOV2Test.java
index 2bf90c7..e9cbec6 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOV2Test.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOV2Test.java
@@ -21,7 +21,6 @@ package org.apache.james.mailbox.cassandra.mail;
import static org.assertj.core.api.Assertions.assertThat;
-import java.nio.charset.StandardCharsets;
import java.util.Optional;
import org.apache.james.backends.cassandra.CassandraCluster;
@@ -62,7 +61,7 @@ class CassandraAttachmentDAOV2Test {
Attachment attachment = Attachment.builder()
.attachmentId(ATTACHMENT_ID)
.type("application/json")
- .bytes("{\"property\":`\"value\"}".getBytes(StandardCharsets.UTF_8))
+ .size(4)
.build();
BlobId blobId = BLOB_ID_FACTORY.from("blobId");
DAOAttachment daoAttachment = CassandraAttachmentDAOV2.from(attachment, blobId);
diff --git a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java
index 95b67f8..73a6b0c 100644
--- a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java
+++ b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java
@@ -114,8 +114,8 @@ class ElasticSearchListeningMessageSearchIndexTest {
static final MessageAttachment MESSAGE_ATTACHMENT = MessageAttachment.builder()
.attachment(Attachment.builder()
- .bytes("".getBytes(StandardCharsets.UTF_8))
.type("type")
+ .size(523)
.build())
.name("name")
.isInline(false)
diff --git a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/AbstractJPAMailboxMessage.java b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/AbstractJPAMailboxMessage.java
index f174fe6..68afe5d 100644
--- a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/AbstractJPAMailboxMessage.java
+++ b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/AbstractJPAMailboxMessage.java
@@ -53,6 +53,7 @@ import org.apache.james.mailbox.model.ComposedMessageId;
import org.apache.james.mailbox.model.ComposedMessageIdWithMetaData;
import org.apache.james.mailbox.model.MessageAttachment;
import org.apache.james.mailbox.model.MessageId;
+import org.apache.james.mailbox.model.ParsedAttachment;
import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
import org.apache.james.mailbox.store.mail.model.DelegatingMailboxMessage;
import org.apache.james.mailbox.store.mail.model.FlagsFactory;
@@ -64,6 +65,7 @@ import org.apache.openjpa.persistence.jdbc.ElementJoinColumn;
import org.apache.openjpa.persistence.jdbc.ElementJoinColumns;
import org.apache.openjpa.persistence.jdbc.Index;
+import com.github.fge.lambdas.Throwing;
import com.github.steveash.guavate.Guavate;
import com.google.common.base.Objects;
@@ -507,7 +509,9 @@ public abstract class AbstractJPAMailboxMessage implements MailboxMessage {
try {
return new MessageParser().retrieveAttachments(getFullContent())
.stream()
- .map(attachmentMetadata -> attachmentMetadata.asMessageAttachment(AttachmentId.random()))
+ .map(Throwing.<ParsedAttachment, MessageAttachment>function(
+ attachmentMetadata -> attachmentMetadata.asMessageAttachment(AttachmentId.random()))
+ .sneakyThrow())
.collect(Guavate.toImmutableList());
} catch (IOException e) {
throw new RuntimeException(e);
diff --git a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/model/MaildirMessage.java b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/model/MaildirMessage.java
index c2a0b01..b2b4725 100644
--- a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/model/MaildirMessage.java
+++ b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/model/MaildirMessage.java
@@ -33,6 +33,7 @@ import org.apache.james.mailbox.maildir.MaildirMessageName;
import org.apache.james.mailbox.model.AttachmentId;
import org.apache.james.mailbox.model.MessageAttachment;
import org.apache.james.mailbox.model.MessageId;
+import org.apache.james.mailbox.model.ParsedAttachment;
import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
import org.apache.james.mailbox.store.mail.model.Message;
import org.apache.james.mailbox.store.mail.model.Property;
@@ -47,6 +48,7 @@ import org.apache.james.mime4j.stream.MimeConfig;
import org.apache.james.mime4j.stream.MimeTokenStream;
import org.apache.james.mime4j.stream.RecursionMode;
+import com.github.fge.lambdas.Throwing;
import com.github.steveash.guavate.Guavate;
import com.google.common.io.ByteStreams;
@@ -275,7 +277,9 @@ public class MaildirMessage implements Message {
try {
return new MessageParser().retrieveAttachments(getFullContent())
.stream()
- .map(attachmentMetadata -> attachmentMetadata.asMessageAttachment(AttachmentId.random()))
+ .map(Throwing.<ParsedAttachment, MessageAttachment>function(
+ attachmentMetadata -> attachmentMetadata.asMessageAttachment(AttachmentId.random()))
+ .sneakyThrow())
.collect(Guavate.toImmutableList());
} catch (IOException e) {
throw new RuntimeException(e);
diff --git a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryAttachmentMapper.java b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryAttachmentMapper.java
index 331c60f..ac192f8 100644
--- a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryAttachmentMapper.java
+++ b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryAttachmentMapper.java
@@ -87,18 +87,18 @@ public class InMemoryAttachmentMapper implements AttachmentMapper {
@Override
public Mono<Attachment> storeAttachmentForOwner(String contentType, InputStream inputStream, Username owner) {
- return Mono.fromCallable(() -> {
- byte[] bytes = toByteArray(inputStream);
- Attachment attachment = Attachment.builder()
- .bytes(bytes)
- .type(contentType)
- .attachmentId(AttachmentId.random())
- .build();
- attachmentsById.put(attachment.getAttachmentId(), attachment);
- attachmentsRawContentById.put(attachment.getAttachmentId(), bytes);
- ownersByAttachmentId.put(attachment.getAttachmentId(), owner);
- return attachment;
- });
+ return Mono.fromCallable(() -> {
+ byte[] bytes = toByteArray(inputStream);
+ Attachment attachment = Attachment.builder()
+ .type(contentType)
+ .attachmentId(AttachmentId.random())
+ .size(bytes.length)
+ .build();
+ attachmentsById.put(attachment.getAttachmentId(), attachment);
+ attachmentsRawContentById.put(attachment.getAttachmentId(), bytes);
+ ownersByAttachmentId.put(attachment.getAttachmentId(), owner);
+ return attachment;
+ });
}
private byte[] toByteArray(InputStream inputStream) {
@@ -136,11 +136,11 @@ public class InMemoryAttachmentMapper implements AttachmentMapper {
attachmentsById.put(attachmentId, Attachment.builder()
.attachmentId(attachmentId)
.type(parsedAttachment.getContentType())
- .bytes(bytes)
+ .size(bytes.length)
.build());
attachmentsRawContentById.put(attachmentId, bytes);
messageIdsByAttachmentId.put(attachmentId, ownerMessageId);
- return parsedAttachment.asMessageAttachment(attachmentId);
+ return parsedAttachment.asMessageAttachment(attachmentId, bytes.length);
} catch (IOException e) {
throw new MailboxException(String.format("Failed to persist attachment %s of message %s", attachmentId, ownerMessageId.serialize()), e);
}
diff --git a/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/DeletedMessageConverterTest.java b/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/DeletedMessageConverterTest.java
index e22c8e8..eeb6a1c 100644
--- a/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/DeletedMessageConverterTest.java
+++ b/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/DeletedMessageConverterTest.java
@@ -35,7 +35,6 @@ import static org.apache.mailet.base.MailAddressFixture.SENDER;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
-import java.nio.charset.StandardCharsets;
import java.util.Collection;
import java.util.Date;
import java.util.List;
@@ -73,8 +72,8 @@ class DeletedMessageConverterTest {
private static final Collection<MessageAttachment> NO_ATTACHMENT = ImmutableList.of();
private static final Collection<MessageAttachment> ATTACHMENTS = ImmutableList.of(MessageAttachment.builder()
.attachment(Attachment.builder()
- .bytes("content".getBytes(StandardCharsets.UTF_8))
.type("type")
+ .size(48)
.build())
.build());
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
index 1cb207e..19d2106 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
@@ -99,6 +99,7 @@ import org.apache.james.mime4j.stream.MimeTokenStream;
import org.apache.james.mime4j.stream.RecursionMode;
import org.apache.james.util.IteratorWrapper;
import org.apache.james.util.io.BodyOffsetInputStream;
+import org.apache.james.util.io.InputStreamConsummer;
import org.apache.james.util.streams.Iterators;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -342,7 +343,8 @@ public class StoreMessageManager implements MessageManager {
if (internalDate == null) {
internalDate = new Date();
}
- consumeStream(bufferedOut, tmpMsgIn);
+ InputStreamConsummer.consume(tmpMsgIn);
+ bufferedOut.flush();
int bodyStartOctet = getBodyStartOctet(bIn);
return createAndDispatchMessage(internalDate, mailboxSession, file, propertyBuilder, flags, bodyStartOctet);
}
@@ -426,16 +428,6 @@ public class StoreMessageManager implements MessageManager {
}
}
- private void consumeStream(BufferedOutputStream bufferedOut, BufferedInputStream tmpMsgIn) throws IOException {
- byte[] discard = new byte[4096];
- while (tmpMsgIn.read(discard) != -1) {
- // consume the rest of the stream so everything get copied to
- // the file now
- // via the TeeInputStream
- }
- bufferedOut.flush();
- }
-
private int getBodyStartOctet(BodyOffsetInputStream bIn) {
int bodyStartOctet = (int) bIn.getBodyStartOffset();
if (bodyStartOctet == -1) {
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreAttachmentManagerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreAttachmentManagerTest.java
index 9e129a1..66131d0 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreAttachmentManagerTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreAttachmentManagerTest.java
@@ -24,8 +24,6 @@ import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-import java.nio.charset.StandardCharsets;
-
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.MessageIdManager;
import org.apache.james.mailbox.exception.AttachmentNotFoundException;
@@ -47,8 +45,8 @@ class StoreAttachmentManagerTest {
static final AttachmentId ATTACHMENT_ID = AttachmentId.from("1");
static final Attachment ATTACHMENT = Attachment.builder()
.attachmentId(ATTACHMENT_ID)
+ .size(48)
.type("type")
- .bytes("Any".getBytes(StandardCharsets.UTF_8))
.build();
StoreAttachmentManager testee;
@@ -56,7 +54,7 @@ class StoreAttachmentManagerTest {
MessageIdManager messageIdManager;
@BeforeEach
- void setup() throws Exception {
+ void setup() {
attachmentMapper = mock(AttachmentMapper.class);
AttachmentMapperFactory attachmentMapperFactory = mock(AttachmentMapperFactory.class);
when(attachmentMapperFactory.getAttachmentMapper(any(MailboxSession.class)))
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMailboxMessageTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMailboxMessageTest.java
index 4d1ff30..0e13f97 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMailboxMessageTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMailboxMessageTest.java
@@ -177,8 +177,8 @@ class SimpleMailboxMessageTest {
MessageUid uid = MessageUid.of(45);
MessageAttachment messageAttachment = MessageAttachment.builder()
.attachment(Attachment.builder()
- .bytes("".getBytes(StandardCharsets.UTF_8))
.type("type")
+ .size(485)
.build())
.name("name")
.isInline(false)
diff --git a/server/container/util/src/main/java/org/apache/james/util/io/InputStreamConsummer.java b/server/container/util/src/main/java/org/apache/james/util/io/InputStreamConsummer.java
new file mode 100644
index 0000000..77a7365
--- /dev/null
+++ b/server/container/util/src/main/java/org/apache/james/util/io/InputStreamConsummer.java
@@ -0,0 +1,32 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+package org.apache.james.util.io;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+public class InputStreamConsummer {
+ public static void consume(InputStream inputStream) throws IOException {
+ byte[] discard = new byte[4096];
+ while (inputStream.read(discard) != -1) {
+ // consume the rest of the stream
+ }
+ }
+}
diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageFullViewFactoryTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageFullViewFactoryTest.java
index 14f7221..4805f1e 100644
--- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageFullViewFactoryTest.java
+++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageFullViewFactoryTest.java
@@ -496,7 +496,7 @@ class MessageFullViewFactoryTest {
.attachments(ImmutableList.of(MessageAttachment.builder()
.attachment(org.apache.james.mailbox.model.Attachment.builder()
.attachmentId(AttachmentId.from(blodId.getRawValue()))
- .bytes(payload.getBytes())
+ .size(payload.length())
.type(type)
.build())
.cid(Cid.from("cid"))
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org