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 838f0373ad8d6e7eaab2504e7de5e2a1720b18c7
Author: Rene Cordier <[email protected]>
AuthorDate: Tue Dec 3 14:12:00 2019 +0700

    JAMES-2991 Refactoring message parsing in MessageFullViewFactory
    
    - Move mainTextContent method from MessageFullViewFactory to 
MessageContentExtractor and rename it extractMainContent
    - Remove unnecessary extractContent method
---
 .../org/apache/james/jmap/draft/JMAPModule.java    |  2 +-
 .../apache/james/util/html}/HtmlTextExtractor.java |  2 +-
 .../james/util/mime/MessageContentExtractor.java   |  9 +++++++++
 server/protocols/jmap-draft/pom.xml                |  4 ++++
 .../model/message/view/MessageFullViewFactory.java | 22 +++++++---------------
 .../jmap/draft/utils/JsoupHtmlTextExtractor.java   |  1 +
 .../jmap/draft/utils/MimeMessageBodyGenerator.java |  1 +
 .../jmap/draft/methods/GetMessagesMethodTest.java  |  4 ++--
 .../jmap/draft/methods/MessageSenderTest.java      |  7 ++++---
 .../methods/SetMessagesCreationProcessorTest.java  |  5 +++--
 .../message/view/MessageFastViewFactoryTest.java   |  2 +-
 .../message/view/MessageFullViewFactoryTest.java   |  5 ++---
 .../draft/utils/MimeMessageBodyGeneratorTest.java  |  1 +
 13 files changed, 37 insertions(+), 28 deletions(-)

diff --git 
a/server/container/guice/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/JMAPModule.java
 
b/server/container/guice/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/JMAPModule.java
index d5a1f34..030261e 100644
--- 
a/server/container/guice/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/JMAPModule.java
+++ 
b/server/container/guice/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/JMAPModule.java
@@ -31,7 +31,6 @@ import org.apache.commons.io.FileUtils;
 import org.apache.james.filesystem.api.FileSystem;
 import org.apache.james.jmap.draft.methods.RequestHandler;
 import org.apache.james.jmap.draft.send.PostDequeueDecoratorFactory;
-import org.apache.james.jmap.draft.utils.HtmlTextExtractor;
 import org.apache.james.jmap.draft.utils.JsoupHtmlTextExtractor;
 import org.apache.james.jmap.event.PropagateLookupRightListener;
 import org.apache.james.jmap.mailet.VacationMailet;
@@ -45,6 +44,7 @@ import 
org.apache.james.modules.server.CamelMailetContainerModule;
 import org.apache.james.queue.api.MailQueueItemDecoratorFactory;
 import org.apache.james.server.core.configuration.FileConfigurationProvider;
 import org.apache.james.transport.matchers.RecipientIsLocal;
+import org.apache.james.util.html.HtmlTextExtractor;
 import org.apache.james.utils.PropertiesProvider;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git 
a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/utils/HtmlTextExtractor.java
 
b/server/container/util/src/main/java/org/apache/james/util/html/HtmlTextExtractor.java
similarity index 96%
rename from 
server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/utils/HtmlTextExtractor.java
rename to 
server/container/util/src/main/java/org/apache/james/util/html/HtmlTextExtractor.java
index 323ab71..e6e7df2 100644
--- 
a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/utils/HtmlTextExtractor.java
+++ 
b/server/container/util/src/main/java/org/apache/james/util/html/HtmlTextExtractor.java
@@ -17,7 +17,7 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.james.jmap.draft.utils;
+package org.apache.james.util.html;
 
 public interface HtmlTextExtractor {
 
diff --git 
a/server/container/util/src/main/java/org/apache/james/util/mime/MessageContentExtractor.java
 
b/server/container/util/src/main/java/org/apache/james/util/mime/MessageContentExtractor.java
index 74bb660..32b436a 100644
--- 
a/server/container/util/src/main/java/org/apache/james/util/mime/MessageContentExtractor.java
+++ 
b/server/container/util/src/main/java/org/apache/james/util/mime/MessageContentExtractor.java
@@ -34,9 +34,11 @@ import org.apache.james.mime4j.dom.Body;
 import org.apache.james.mime4j.dom.Entity;
 import org.apache.james.mime4j.dom.Multipart;
 import org.apache.james.mime4j.dom.TextBody;
+import org.apache.james.util.html.HtmlTextExtractor;
 
 import com.github.fge.lambdas.Throwing;
 import com.github.fge.lambdas.functions.ThrowingFunction;
+import com.google.common.base.Strings;
 
 public class MessageContentExtractor {
 
@@ -220,6 +222,13 @@ public class MessageContentExtractor {
                     
htmlBody.map(Optional::of).orElse(fromInnerMultipart.getHtmlBody()));
         }
 
+        public Optional<String> extractMainTextContent(HtmlTextExtractor 
htmlTextExtractor) {
+            return htmlBody.map(htmlTextExtractor::toPlainText)
+                .filter(s -> !Strings.isNullOrEmpty(s))
+                .map(Optional::of)
+                .orElse(textBody);
+        }
+
         @Override
         public boolean equals(Object other) {
             if (other == null || !(other instanceof MessageContent)) {
diff --git a/server/protocols/jmap-draft/pom.xml 
b/server/protocols/jmap-draft/pom.xml
index c5734e8..479beed 100644
--- a/server/protocols/jmap-draft/pom.xml
+++ b/server/protocols/jmap-draft/pom.xml
@@ -60,6 +60,10 @@
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
+            <artifactId>apache-james-mailbox-store</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>${james.groupId}</groupId>
             <artifactId>apache-mailet-test</artifactId>
             <scope>test</scope>
         </dependency>
diff --git 
a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageFullViewFactory.java
 
b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageFullViewFactory.java
index e3223db..c806214 100644
--- 
a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageFullViewFactory.java
+++ 
b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageFullViewFactory.java
@@ -38,7 +38,6 @@ import org.apache.james.jmap.draft.model.Attachment;
 import org.apache.james.jmap.draft.model.BlobId;
 import org.apache.james.jmap.draft.model.Emailer;
 import org.apache.james.jmap.draft.model.Keywords;
-import org.apache.james.jmap.draft.utils.HtmlTextExtractor;
 import org.apache.james.mailbox.BlobManager;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageIdManager;
@@ -51,6 +50,7 @@ import org.apache.james.mailbox.model.MessageAttachment;
 import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.model.MessageResult;
 import org.apache.james.mime4j.dom.Message;
+import org.apache.james.util.html.HtmlTextExtractor;
 import org.apache.james.util.mime.MessageContentExtractor;
 import org.apache.james.util.mime.MessageContentExtractor.MessageContent;
 import org.slf4j.Logger;
@@ -91,11 +91,11 @@ public class MessageFullViewFactory implements 
MessageViewFactory<MessageFullVie
         return Helpers.toMessageViews(messages, this::fromMessageResults);
     }
 
-    public MessageFullView fromMetaDataWithContent(MetaDataWithContent 
message) throws MailboxException, IOException {
+    public MessageFullView fromMetaDataWithContent(MetaDataWithContent 
message) throws IOException {
         Message mimeMessage = Helpers.parse(message.getContent());
-        MessageContent messageContent = extractContent(mimeMessage);
+        MessageContent messageContent = 
messageContentExtractor.extract(mimeMessage);
         Optional<String> htmlBody = messageContent.getHtmlBody();
-        Optional<String> mainTextContent = mainTextContent(messageContent);
+        Optional<String> mainTextContent = 
messageContent.extractMainTextContent(htmlTextExtractor);
         Optional<String> textBody = computeTextBodyIfNeeded(messageContent, 
mainTextContent);
 
         MessageFastViewPrecomputedProperties messageProjection = 
retrieveProjection(
@@ -168,11 +168,11 @@ public class MessageFullViewFactory implements 
MessageViewFactory<MessageFullVie
             .orElse(message.getInternalDate());
     }
 
-    MessageFullView fromMessageResults(Collection<MessageResult> 
messageResults) throws MailboxException, IOException {
+    public MessageFullView fromMessageResults(Collection<MessageResult> 
messageResults) throws MailboxException, IOException {
         return fromMetaDataWithContent(toMetaDataWithContent(messageResults));
     }
 
-    MetaDataWithContent toMetaDataWithContent(Collection<MessageResult> 
messageResults) throws MailboxException {
+    private MetaDataWithContent 
toMetaDataWithContent(Collection<MessageResult> messageResults) throws 
MailboxException {
         Helpers.assertOneMessageId(messageResults);
 
         MessageResult firstMessageResult = messageResults.iterator().next();
@@ -192,21 +192,13 @@ public class MessageFullViewFactory implements 
MessageViewFactory<MessageFullVie
             .orElse(mainTextContent);
     }
 
-    Optional<String> mainTextContent(MessageContent messageContent) {
+    private Optional<String> mainTextContent(MessageContent messageContent) {
         return messageContent.getHtmlBody()
             .map(htmlTextExtractor::toPlainText)
             .filter(s -> !Strings.isNullOrEmpty(s))
             .map(Optional::of)
             .orElse(messageContent.getTextBody());
     }
-
-    MessageContent extractContent(Message mimeMessage) throws MailboxException 
{
-        try {
-            return messageContentExtractor.extract(mimeMessage);
-        } catch (IOException e) {
-            throw new MailboxException("Unable to extract content: " + 
e.getMessage(), e);
-        }
-    }
     
     private List<Attachment> getAttachments(List<MessageAttachment> 
attachments) {
         return attachments.stream()
diff --git 
a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/utils/JsoupHtmlTextExtractor.java
 
b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/utils/JsoupHtmlTextExtractor.java
index 79ec3ac..c697c4e 100644
--- 
a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/utils/JsoupHtmlTextExtractor.java
+++ 
b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/utils/JsoupHtmlTextExtractor.java
@@ -23,6 +23,7 @@ import java.util.Optional;
 import java.util.stream.Stream;
 
 import org.apache.commons.lang3.StringUtils;
+import org.apache.james.util.html.HtmlTextExtractor;
 import org.jsoup.Jsoup;
 import org.jsoup.nodes.Document;
 import org.jsoup.nodes.Element;
diff --git 
a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/utils/MimeMessageBodyGenerator.java
 
b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/utils/MimeMessageBodyGenerator.java
index 671c4fb..aebab3e 100644
--- 
a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/utils/MimeMessageBodyGenerator.java
+++ 
b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/utils/MimeMessageBodyGenerator.java
@@ -32,6 +32,7 @@ import javax.mail.internet.MimeMultipart;
 import javax.mail.util.ByteArrayDataSource;
 
 import org.apache.james.mime4j.dom.field.ContentTypeField;
+import org.apache.james.util.html.HtmlTextExtractor;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Preconditions;
diff --git 
a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/GetMessagesMethodTest.java
 
b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/GetMessagesMethodTest.java
index 8b38bd8..d8539b6 100644
--- 
a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/GetMessagesMethodTest.java
+++ 
b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/GetMessagesMethodTest.java
@@ -50,7 +50,6 @@ import 
org.apache.james.jmap.draft.model.message.view.MessageHeaderViewFactory;
 import org.apache.james.jmap.draft.model.message.view.MessageMetadataView;
 import 
org.apache.james.jmap.draft.model.message.view.MessageMetadataViewFactory;
 import org.apache.james.jmap.draft.model.message.view.MetaMessageViewFactory;
-import org.apache.james.jmap.draft.utils.HtmlTextExtractor;
 import org.apache.james.jmap.draft.utils.JsoupHtmlTextExtractor;
 import 
org.apache.james.jmap.memory.projections.MemoryMessageFastViewProjection;
 import org.apache.james.mailbox.BlobManager;
@@ -72,6 +71,7 @@ import org.apache.james.metrics.logger.DefaultMetricFactory;
 import org.apache.james.mime4j.message.BodyPartBuilder;
 import org.apache.james.mime4j.message.MultipartBuilder;
 import org.apache.james.mime4j.stream.RawField;
+import org.apache.james.util.html.HtmlTextExtractor;
 import org.apache.james.util.mime.MessageContentExtractor;
 import org.assertj.core.api.Condition;
 import org.assertj.core.data.MapEntry;
@@ -108,8 +108,8 @@ public class GetMessagesMethodTest {
     @Before
     public void setup() throws Exception {
         methodCallId = MethodCallId.of("#0");
-        HtmlTextExtractor htmlTextExtractor = new JsoupHtmlTextExtractor();
         MessageContentExtractor messageContentExtractor = new 
MessageContentExtractor();
+        HtmlTextExtractor htmlTextExtractor = new JsoupHtmlTextExtractor();
         BlobManager blobManager = mock(BlobManager.class);
         
when(blobManager.toBlobId(any(MessageId.class))).thenReturn(BlobId.fromString("fake"));
         InMemoryIntegrationResources resources = 
InMemoryIntegrationResources.defaultResources();
diff --git 
a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/MessageSenderTest.java
 
b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/MessageSenderTest.java
index 1da53f4..bffb867 100644
--- 
a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/MessageSenderTest.java
+++ 
b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/MessageSenderTest.java
@@ -39,7 +39,7 @@ import org.apache.james.jmap.draft.model.Keywords;
 import org.apache.james.jmap.draft.model.message.view.MessageFullView;
 import org.apache.james.jmap.draft.model.message.view.MessageFullViewFactory;
 import 
org.apache.james.jmap.draft.model.message.view.MessageFullViewFactory.MetaDataWithContent;
-import org.apache.james.jmap.draft.utils.HtmlTextExtractor;
+import org.apache.james.jmap.draft.utils.JsoupHtmlTextExtractor;
 import 
org.apache.james.jmap.memory.projections.MemoryMessageFastViewProjection;
 import org.apache.james.mailbox.BlobManager;
 import org.apache.james.mailbox.MessageIdManager;
@@ -50,6 +50,7 @@ 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.server.core.Envelope;
+import org.apache.james.util.html.HtmlTextExtractor;
 import org.apache.james.util.mime.MessageContentExtractor;
 import org.apache.mailet.Mail;
 import org.junit.jupiter.api.BeforeEach;
@@ -85,9 +86,9 @@ class MessageSenderTest {
             .messageId(TestMessageId.of(2))
             .build();
 
-        HtmlTextExtractor htmlTextExtractor = mock(HtmlTextExtractor.class);
-
         MessageContentExtractor messageContentExtractor = new 
MessageContentExtractor();
+        HtmlTextExtractor htmlTextExtractor = new JsoupHtmlTextExtractor();
+
         BlobManager blobManager = mock(BlobManager.class);
         
when(blobManager.toBlobId(any(MessageId.class))).thenReturn(BlobId.fromString("fake"));
         MessageIdManager messageIdManager = mock(MessageIdManager.class);
diff --git 
a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/SetMessagesCreationProcessorTest.java
 
b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/SetMessagesCreationProcessorTest.java
index f5059d6..f5b8ebb 100644
--- 
a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/SetMessagesCreationProcessorTest.java
+++ 
b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/SetMessagesCreationProcessorTest.java
@@ -42,7 +42,7 @@ import org.apache.james.jmap.draft.model.SetMessagesResponse;
 import org.apache.james.jmap.draft.model.message.view.MessageFullViewFactory;
 import org.apache.james.jmap.draft.send.MailMetadata;
 import org.apache.james.jmap.draft.send.MailSpool;
-import org.apache.james.jmap.draft.utils.HtmlTextExtractor;
+import org.apache.james.jmap.draft.utils.JsoupHtmlTextExtractor;
 import 
org.apache.james.jmap.memory.projections.MemoryMessageFastViewProjection;
 import org.apache.james.mailbox.AttachmentManager;
 import org.apache.james.mailbox.BlobManager;
@@ -65,6 +65,7 @@ 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;
+import org.apache.james.util.html.HtmlTextExtractor;
 import org.apache.james.util.mime.MessageContentExtractor;
 import org.apache.mailet.Mail;
 import org.junit.Before;
@@ -121,8 +122,8 @@ public class SetMessagesCreationProcessorTest {
 
     @Before
     public void setUp() throws MailboxException {
-        HtmlTextExtractor htmlTextExtractor = mock(HtmlTextExtractor.class);
         MessageContentExtractor messageContentExtractor = new 
MessageContentExtractor();
+        HtmlTextExtractor htmlTextExtractor = new JsoupHtmlTextExtractor();
         BlobManager blobManager = mock(BlobManager.class);
         
when(blobManager.toBlobId(any(MessageId.class))).thenReturn(org.apache.james.mailbox.model.BlobId.fromString("fake"));
         MessageIdManager messageIdManager = mock(MessageIdManager.class);
diff --git 
a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageFastViewFactoryTest.java
 
b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageFastViewFactoryTest.java
index 2dcc64c..ccc5bde 100644
--- 
a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageFastViewFactoryTest.java
+++ 
b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageFastViewFactoryTest.java
@@ -42,7 +42,6 @@ import org.apache.james.jmap.draft.model.Keyword;
 import org.apache.james.jmap.draft.model.Keywords;
 import org.apache.james.jmap.draft.model.Number;
 import org.apache.james.jmap.draft.model.PreviewDTO;
-import org.apache.james.jmap.draft.utils.HtmlTextExtractor;
 import org.apache.james.jmap.draft.utils.JsoupHtmlTextExtractor;
 import 
org.apache.james.jmap.memory.projections.MemoryMessageFastViewProjection;
 import org.apache.james.mailbox.MailboxSession;
@@ -57,6 +56,7 @@ import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.store.StoreBlobManager;
 import org.apache.james.metrics.api.NoopMetricFactory;
 import org.apache.james.util.ClassLoaderUtils;
+import org.apache.james.util.html.HtmlTextExtractor;
 import org.apache.james.util.mime.MessageContentExtractor;
 import org.assertj.core.api.SoftAssertions;
 import org.junit.jupiter.api.BeforeEach;
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 b1dd9f8..760d35f 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
@@ -48,7 +48,6 @@ import org.apache.james.jmap.draft.model.Keywords;
 import org.apache.james.jmap.draft.model.Number;
 import org.apache.james.jmap.draft.model.PreviewDTO;
 import 
org.apache.james.jmap.draft.model.message.view.MessageFullViewFactory.MetaDataWithContent;
-import org.apache.james.jmap.draft.utils.HtmlTextExtractor;
 import org.apache.james.jmap.draft.utils.JsoupHtmlTextExtractor;
 import 
org.apache.james.jmap.memory.projections.MemoryMessageFastViewProjection;
 import org.apache.james.mailbox.MailboxSession;
@@ -71,6 +70,7 @@ import org.apache.james.mailbox.model.MessageResult;
 import org.apache.james.mailbox.model.TestMessageId;
 import org.apache.james.metrics.api.NoopMetricFactory;
 import org.apache.james.util.ClassLoaderUtils;
+import org.apache.james.util.html.HtmlTextExtractor;
 import org.apache.james.util.mime.MessageContentExtractor;
 import org.assertj.core.api.SoftAssertions;
 import org.junit.jupiter.api.BeforeEach;
@@ -99,9 +99,8 @@ class MessageFullViewFactoryTest {
 
     @BeforeEach
     void setUp() throws Exception {
-        HtmlTextExtractor htmlTextExtractor = new JsoupHtmlTextExtractor();
-
         MessageContentExtractor messageContentExtractor = new 
MessageContentExtractor();
+        HtmlTextExtractor htmlTextExtractor = new JsoupHtmlTextExtractor();
 
         InMemoryIntegrationResources resources = 
InMemoryIntegrationResources.defaultResources();
         messageIdManager = resources.getMessageIdManager();
diff --git 
a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/utils/MimeMessageBodyGeneratorTest.java
 
b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/utils/MimeMessageBodyGeneratorTest.java
index efd4608..574019f 100644
--- 
a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/utils/MimeMessageBodyGeneratorTest.java
+++ 
b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/utils/MimeMessageBodyGeneratorTest.java
@@ -32,6 +32,7 @@ import javax.mail.internet.MimeMessage;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.james.util.MimeMessageUtil;
+import org.apache.james.util.html.HtmlTextExtractor;
 import org.junit.Before;
 import org.junit.Test;
 


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

Reply via email to