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 ad...@apache.org on 2017/09/13 10:57:31 UTC
[05/24] james-project git commit: JAMES-2143 Setting JMAP blobId
Message property
JAMES-2143 Setting JMAP blobId Message property
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/0024a0c7
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/0024a0c7
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/0024a0c7
Branch: refs/heads/master
Commit: 0024a0c76582bc90a64c7412d7de05f91739940d
Parents: 4e0e860
Author: benwa <bt...@linagora.com>
Authored: Mon Sep 11 17:34:51 2017 +0700
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Wed Sep 13 10:19:53 2017 +0200
----------------------------------------------------------------------
.../org/apache/james/mailbox/BlobManager.java | 3 +++
.../james/mailbox/store/StoreBlobManager.java | 5 ++++
.../mailbox/store/StoreBlobManagerTest.java | 6 +++++
.../org/apache/james/jmap/model/BlobId.java | 11 +++++++++
.../apache/james/jmap/model/MessageFactory.java | 8 +++++--
.../jmap/methods/GetMessagesMethodTest.java | 21 ++++++++++-------
.../SetMessagesCreationProcessorTest.java | 8 ++++++-
.../org/apache/james/jmap/model/BlobIdTest.java | 2 +-
.../james/jmap/model/MessageFactoryTest.java | 24 +++++++++++++-------
.../apache/james/jmap/send/MailFactoryTest.java | 9 ++++++--
10 files changed, 75 insertions(+), 22 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/0024a0c7/mailbox/api/src/main/java/org/apache/james/mailbox/BlobManager.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/BlobManager.java b/mailbox/api/src/main/java/org/apache/james/mailbox/BlobManager.java
index ad453b7..e41b30b 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/BlobManager.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/BlobManager.java
@@ -23,7 +23,10 @@ import org.apache.james.mailbox.exception.BlobNotFoundException;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.Blob;
import org.apache.james.mailbox.model.BlobId;
+import org.apache.james.mailbox.model.MessageId;
public interface BlobManager {
+ BlobId toBlobId(MessageId messageId);
+
Blob retrieve(BlobId blobId, MailboxSession mailboxSession) throws MailboxException, BlobNotFoundException;
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/0024a0c7/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreBlobManager.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreBlobManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreBlobManager.java
index 2869354..c70d479 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreBlobManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreBlobManager.java
@@ -57,6 +57,11 @@ public class StoreBlobManager implements BlobManager {
}
@Override
+ public BlobId toBlobId(MessageId messageId) {
+ return BlobId.fromString(messageId.serialize());
+ }
+
+ @Override
public Blob retrieve(BlobId blobId, MailboxSession mailboxSession) throws MailboxException, BlobNotFoundException {
return getBlobFromAttachment(blobId, mailboxSession)
.orElseGet(() -> getBlobFromMessage(blobId, mailboxSession)
http://git-wip-us.apache.org/repos/asf/james-project/blob/0024a0c7/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreBlobManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreBlobManagerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreBlobManagerTest.java
index 366bc76..197d8d7 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreBlobManagerTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreBlobManagerTest.java
@@ -221,4 +221,10 @@ public class StoreBlobManagerTest {
.isInstanceOf(RuntimeException.class);
}
+ @Test
+ public void toBlobIdShouldReturnBlobIdCorrespondingToAMessageId() {
+ assertThat(blobManager.toBlobId(MESSAGE_ID))
+ .isEqualTo(BlobId.fromString("125"));
+ }
+
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/0024a0c7/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/BlobId.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/BlobId.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/BlobId.java
index 578c09f..9c4b8df 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/BlobId.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/BlobId.java
@@ -31,6 +31,10 @@ public class BlobId {
return new BlobId(rawValue);
}
+ public static BlobId of(org.apache.james.mailbox.model.BlobId blobId) {
+ return new BlobId(blobId.asString());
+ }
+
private final String rawValue;
private BlobId(String rawValue) {
@@ -55,4 +59,11 @@ public class BlobId {
public final int hashCode() {
return Objects.hashCode(this.rawValue);
}
+
+ @Override
+ public String toString() {
+ return "BlobId{" +
+ "rawValue='" + rawValue + '\'' +
+ '}';
+ }
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/0024a0c7/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageFactory.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageFactory.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageFactory.java
index 1533637..236be87 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageFactory.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageFactory.java
@@ -30,11 +30,13 @@ import java.util.Optional;
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collectors;
+
import javax.inject.Inject;
import javax.mail.Flags;
import javax.mail.internet.SharedInputStream;
import org.apache.james.jmap.utils.HtmlTextExtractor;
+import org.apache.james.mailbox.BlobManager;
import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.Cid;
@@ -69,12 +71,14 @@ public class MessageFactory {
.setMaxLineLen(-1)
.build();
+ private final BlobManager blobManager;
private final MessagePreviewGenerator messagePreview;
private final MessageContentExtractor messageContentExtractor;
private final HtmlTextExtractor htmlTextExtractor;
@Inject
- public MessageFactory(MessagePreviewGenerator messagePreview, MessageContentExtractor messageContentExtractor, HtmlTextExtractor htmlTextExtractor) {
+ public MessageFactory(BlobManager blobManager, MessagePreviewGenerator messagePreview, MessageContentExtractor messageContentExtractor, HtmlTextExtractor htmlTextExtractor) {
+ this.blobManager = blobManager;
this.messagePreview = messagePreview;
this.messageContentExtractor = messageContentExtractor;
this.htmlTextExtractor = htmlTextExtractor;
@@ -89,7 +93,7 @@ public class MessageFactory {
String preview = messagePreview.compute(mainTextContent);
return Message.builder()
.id(message.getMessageId())
- .blobId(BlobId.of(String.valueOf(message.getUid().asLong())))
+ .blobId(BlobId.of(blobManager.toBlobId(message.getMessageId())))
.threadId(message.getMessageId().serialize())
.mailboxIds(message.getMailboxIds())
.inReplyToMessageId(getHeader(mimeMessage, "in-reply-to"))
http://git-wip-us.apache.org/repos/asf/james-project/blob/0024a0c7/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java
index fb1353b..36e4348 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java
@@ -23,6 +23,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
+
import java.io.ByteArrayInputStream;
import java.util.Date;
import java.util.List;
@@ -35,7 +36,6 @@ import java.util.stream.Collectors;
import javax.mail.Flags;
import javax.mail.Flags.Flag;
-import com.google.common.collect.ImmutableSet;
import org.apache.commons.lang.NotImplementedException;
import org.apache.james.jmap.model.ClientId;
import org.apache.james.jmap.model.GetMessagesRequest;
@@ -46,6 +46,7 @@ import org.apache.james.jmap.model.MessagePreviewGenerator;
import org.apache.james.jmap.model.MessageProperties.MessageProperty;
import org.apache.james.jmap.utils.HtmlTextExtractor;
import org.apache.james.jmap.utils.JsoupHtmlTextExtractor;
+import org.apache.james.mailbox.BlobManager;
import org.apache.james.mailbox.FlagsBuilder;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
@@ -56,11 +57,18 @@ import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.inmemory.InMemoryMessageIdManager;
import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
import org.apache.james.mailbox.mock.MockMailboxSession;
+import org.apache.james.mailbox.model.BlobId;
import org.apache.james.mailbox.model.ComposedMessageId;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.MessageId;
import org.apache.james.metrics.logger.DefaultMetricFactory;
import org.apache.james.util.mime.MessageContentExtractor;
+import org.assertj.core.api.Condition;
+import org.assertj.core.data.MapEntry;
+import org.assertj.core.groups.Tuple;
+import org.junit.Before;
+import org.junit.Test;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter;
@@ -69,15 +77,10 @@ import com.github.steveash.guavate.Guavate;
import com.google.common.base.Charsets;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets;
import com.jayway.jsonpath.JsonPath;
-import org.assertj.core.api.Condition;
-import org.assertj.core.data.MapEntry;
-import org.assertj.core.groups.Tuple;
-import org.junit.Before;
-import org.junit.Test;
-
public class GetMessagesMethodTest {
private final static String FORWARDED = "forwarded";
public static final Flags FLAGS = null;
@@ -130,7 +133,9 @@ public class GetMessagesMethodTest {
HtmlTextExtractor htmlTextExtractor = new JsoupHtmlTextExtractor();
MessagePreviewGenerator messagePreview = new MessagePreviewGenerator();
MessageContentExtractor messageContentExtractor = new MessageContentExtractor();
- MessageFactory messageFactory = new MessageFactory(messagePreview, messageContentExtractor, htmlTextExtractor);
+ BlobManager blobManager = mock(BlobManager.class);
+ when(blobManager.toBlobId(any(MessageId.class))).thenReturn(BlobId.fromString("fake"));
+ MessageFactory messageFactory = new MessageFactory(blobManager, messagePreview, messageContentExtractor, htmlTextExtractor);
InMemoryIntegrationResources inMemoryIntegrationResources = new InMemoryIntegrationResources();
GroupMembershipResolver groupMembershipResolver = inMemoryIntegrationResources.createGroupMembershipResolver();
mailboxManager = inMemoryIntegrationResources.createMailboxManager(groupMembershipResolver);
http://git-wip-us.apache.org/repos/asf/james-project/blob/0024a0c7/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java
index 84bf14d..8f15c63 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java
@@ -26,11 +26,13 @@ import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+
import java.io.InputStream;
import java.sql.Date;
import java.util.Optional;
import java.util.function.Supplier;
import java.util.stream.Stream;
+
import javax.mail.Flags;
import org.apache.james.jmap.exceptions.AttachmentsNotFoundException;
@@ -53,6 +55,7 @@ import org.apache.james.jmap.send.MailSpool;
import org.apache.james.jmap.utils.HtmlTextExtractor;
import org.apache.james.jmap.utils.SystemMailboxesProvider;
import org.apache.james.mailbox.AttachmentManager;
+import org.apache.james.mailbox.BlobManager;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.MessageManager;
import org.apache.james.mailbox.MessageUid;
@@ -63,6 +66,7 @@ import org.apache.james.mailbox.mock.MockMailboxSession;
import org.apache.james.mailbox.model.AttachmentId;
import org.apache.james.mailbox.model.ComposedMessageId;
import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.model.TestMessageId;
import org.apache.james.metrics.api.NoopMetricFactory;
import org.apache.james.util.OptionalUtils;
@@ -124,7 +128,9 @@ public class SetMessagesCreationProcessorTest {
MessagePreviewGenerator messagePreview = mock(MessagePreviewGenerator.class);
MessageContentExtractor messageContentExtractor = new MessageContentExtractor();
when(messagePreview.compute(any())).thenReturn("text preview");
- messageFactory = new MessageFactory(messagePreview, messageContentExtractor, htmlTextExtractor);
+ BlobManager blobManager = mock(BlobManager.class);
+ when(blobManager.toBlobId(any(MessageId.class))).thenReturn(org.apache.james.mailbox.model.BlobId.fromString("fake"));
+ messageFactory = new MessageFactory(blobManager, messagePreview, messageContentExtractor, htmlTextExtractor);
mockedMailSpool = mock(MailSpool.class);
mockedMailFactory = mock(MailFactory.class);
mockedAttachmentManager = mock(AttachmentManager.class);
http://git-wip-us.apache.org/repos/asf/james-project/blob/0024a0c7/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/BlobIdTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/BlobIdTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/BlobIdTest.java
index bf04a1e..1fb256e 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/BlobIdTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/BlobIdTest.java
@@ -34,7 +34,7 @@ public class BlobIdTest {
@Test
public void shouldNotAllowNullInput() {
- assertThatThrownBy(() -> BlobId.of(null)).isInstanceOf(IllegalArgumentException.class);
+ assertThatThrownBy(() -> BlobId.of((String) null)).isInstanceOf(IllegalArgumentException.class);
}
@Test
http://git-wip-us.apache.org/repos/asf/james-project/blob/0024a0c7/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MessageFactoryTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MessageFactoryTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MessageFactoryTest.java
index 76a5e14..2d86294 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MessageFactoryTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MessageFactoryTest.java
@@ -19,33 +19,39 @@
package org.apache.james.jmap.model;
import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
import java.io.ByteArrayInputStream;
import java.time.Instant;
import java.util.Optional;
+
import javax.mail.Flags;
import javax.mail.Flags.Flag;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.james.jmap.model.MessageFactory.MetaDataWithContent;
import org.apache.james.jmap.utils.HtmlTextExtractor;
import org.apache.james.jmap.utils.JsoupHtmlTextExtractor;
+import org.apache.james.mailbox.BlobManager;
import org.apache.james.mailbox.FlagsBuilder;
import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.inmemory.InMemoryId;
import org.apache.james.mailbox.model.AttachmentId;
import org.apache.james.mailbox.model.Cid;
import org.apache.james.mailbox.model.MessageAttachment;
+import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.model.TestMessageId;
import org.apache.james.util.mime.MessageContentExtractor;
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang3.StringUtils;
+import org.junit.Before;
+import org.junit.Test;
import com.google.common.base.Charsets;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
-import org.junit.Before;
-import org.junit.Test;
-
public class MessageFactoryTest {
private static final String FORWARDED = "forwarded";
private static final InMemoryId MAILBOX_ID = InMemoryId.of(18L);
@@ -62,7 +68,9 @@ public class MessageFactoryTest {
messagePreview = new MessagePreviewGenerator();
MessageContentExtractor messageContentExtractor = new MessageContentExtractor();
- messageFactory = new MessageFactory(messagePreview, messageContentExtractor, htmlTextExtractor);
+ BlobManager blobManager = mock(BlobManager.class);
+ when(blobManager.toBlobId(any(MessageId.class))).thenReturn(org.apache.james.mailbox.model.BlobId.fromString("blobId"));
+ messageFactory = new MessageFactory(blobManager, messagePreview, messageContentExtractor, htmlTextExtractor);
}
@Test
@@ -151,7 +159,7 @@ public class MessageFactoryTest {
Message testee = messageFactory.fromMetaDataWithContent(testMail);
Message expected = Message.builder()
.id(TestMessageId.of(2))
- .blobId(BlobId.of("2"))
+ .blobId(BlobId.of("blobId"))
.threadId("2")
.mailboxId(MAILBOX_ID)
.inReplyToMessageId("<SN...@phx.gbl>")
@@ -205,7 +213,7 @@ public class MessageFactoryTest {
Message testee = messageFactory.fromMetaDataWithContent(testMail);
Message expected = Message.builder()
.id(TestMessageId.of(2))
- .blobId(BlobId.of("2"))
+ .blobId(BlobId.of("blobId"))
.threadId("2")
.mailboxId(MAILBOX_ID)
.headers(headersMap)
http://git-wip-us.apache.org/repos/asf/james-project/blob/0024a0c7/server/protocols/jmap/src/test/java/org/apache/james/jmap/send/MailFactoryTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/send/MailFactoryTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/send/MailFactoryTest.java
index bec084b..dd5e0f7 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/send/MailFactoryTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/send/MailFactoryTest.java
@@ -29,19 +29,22 @@ import java.util.Collection;
import javax.mail.Flags;
import javax.mail.util.SharedByteArrayInputStream;
+import org.apache.james.core.MailAddress;
import org.apache.james.jmap.model.Message;
import org.apache.james.jmap.model.MessageFactory;
import org.apache.james.jmap.model.MessageFactory.MetaDataWithContent;
import org.apache.james.jmap.model.MessagePreviewGenerator;
import org.apache.james.jmap.utils.HtmlTextExtractor;
+import org.apache.james.mailbox.BlobManager;
import org.apache.james.mailbox.FlagsBuilder;
import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.inmemory.InMemoryId;
+import org.apache.james.mailbox.model.BlobId;
+import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.model.TestMessageId;
import org.apache.james.util.mime.MessageContentExtractor;
import org.apache.mailet.Mail;
-import org.apache.james.core.MailAddress;
import org.junit.Before;
import org.junit.Test;
@@ -81,7 +84,9 @@ public class MailFactoryTest {
when(messagePreview.compute(any())).thenReturn("text preview");
MessageContentExtractor messageContentExtractor = new MessageContentExtractor();
- MessageFactory messageFactory = new MessageFactory(messagePreview, messageContentExtractor, htmlTextExtractor);
+ BlobManager blobManager = mock(BlobManager.class);
+ when(blobManager.toBlobId(any(MessageId.class))).thenReturn(BlobId.fromString("fake"));
+ MessageFactory messageFactory = new MessageFactory(blobManager, messagePreview, messageContentExtractor, htmlTextExtractor);
jmapMessage = messageFactory.fromMetaDataWithContent(message);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org