From 091c1e324a3ac183da027714177d0ecda87b23f2 Mon Sep 17 00:00:00 2001
From: Matthieu Baechler <matthieu.baechler@gmail.com>
Date: Mon, 27 Apr 2015 16:03:35 +0200
Subject: [PATCH 2/2] JWC-111 update mime4j to 0.8.0-SNAPSHOT

---
 .../james/mailbox/lucene/search/LuceneMessageSearchIndex.java | 11 ++++++-----
 .../james/mailbox/maildir/mail/model/MaildirMessage.java      |  3 +--
 pom.xml                                                       |  2 +-
 .../org/apache/james/mailbox/store/MimeDescriptorImpl.java    |  5 +----
 .../main/java/org/apache/james/mailbox/store/ResultUtils.java |  4 +---
 .../org/apache/james/mailbox/store/StoreMessageManager.java   |  4 +---
 .../apache/james/mailbox/store/search/MessageSearcher.java    |  4 +---
 .../apache/james/mailbox/store/search/MessageSearches.java    |  4 ++--
 .../org/apache/james/mailbox/store/search/SearchUtil.java     |  6 +++---
 .../james/mailbox/store/streaming/PartContentBuilder.java     |  4 +---
 10 files changed, 18 insertions(+), 29 deletions(-)

diff --git a/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java b/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java
index 7062bf6..3e88149 100644
--- a/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java
+++ b/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java
@@ -70,7 +70,7 @@ import org.apache.james.mime4j.dom.address.MailboxList;
 import org.apache.james.mime4j.dom.datetime.DateTime;
 import org.apache.james.mime4j.dom.field.DateTimeField;
 import org.apache.james.mime4j.field.address.AddressFormatter;
-import org.apache.james.mime4j.field.address.LenientAddressBuilder;
+import org.apache.james.mime4j.field.address.LenientAddressParser;
 import org.apache.james.mime4j.field.datetime.parser.DateTimeParser;
 import org.apache.james.mime4j.message.SimpleContentHandler;
 import org.apache.james.mime4j.parser.MimeStreamParser;
@@ -519,7 +519,7 @@ public class LuceneMessageSearchIndex<Id> extends ListeningMessageSearchIndex<Id
                         if (field != null) {
                                 // not sure if we really should reparse it. It maybe be better to check just for the right type.
                                 // But this impl was easier in the first place
-                                AddressList aList = LenientAddressBuilder.DEFAULT.parseAddressList(MimeUtil.unfold(f.getBody()));
+                                AddressList aList = LenientAddressParser.DEFAULT.parseAddressList(MimeUtil.unfold(f.getBody()));
                                 for (int i = 0; i < aList.size(); i++) {
                                     Address address = aList.get(i);
                                     if (address instanceof org.apache.james.mime4j.dom.address.Mailbox) {
@@ -625,10 +625,11 @@ public class LuceneMessageSearchIndex<Id> extends ListeningMessageSearchIndex<Id
             }
  
         };
-        MimeConfig config = new MimeConfig();
-        config.setMaxLineLen(-1);
+        MimeConfig config = MimeConfig.custom()
+                .setMaxLineLen(-1)
+                .setMaxContentLen(-1)
+                .build();
         //config.setStrictParsing(false);
-        config.setMaxContentLen(-1);
         MimeStreamParser parser = new MimeStreamParser(config);
         parser.setContentDecoding(true);
         parser.setContentHandler(handler);
diff --git a/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/model/MaildirMessage.java b/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/model/MaildirMessage.java
index aafed31..9df8e75 100644
--- a/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/model/MaildirMessage.java
+++ b/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/model/MaildirMessage.java
@@ -227,8 +227,7 @@ public class MaildirMessage extends AbstractMessage<Integer> {
             // Disable line length... This should be handled by the smtp server
             // component and not the parser itself
             // https://issues.apache.org/jira/browse/IMAP-122
-            MimeConfig config = new MimeConfig();
-            config.setMaxLineLen(-1);
+            MimeConfig config = MimeConfig.custom().setMaxLineLen(-1).build();
             final MimeTokenStream parser = new MimeTokenStream(config, new DefaultBodyDescriptorBuilder());
             parser.setRecursionMode(RecursionMode.M_NO_RECURSE);
             parser.parse(tmpMsgIn.newStream(0, -1));
diff --git a/pom.xml b/pom.xml
index 4941832..fd3dea5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -89,7 +89,7 @@
         <openjpa.version>2.2.1</openjpa.version>
         <javax.persistence.version>1.0.2</javax.persistence.version>
         <javax.inject.version>1</javax.inject.version>
-        <apache-mime4j.version>0.7.2</apache-mime4j.version>
+        <apache-mime4j.version>0.8.0-SNAPSHOT</apache-mime4j.version>
         <javax.mail.version>1.4.1</javax.mail.version>
         <activation.version>1.1.1</activation.version>
         <jmock.version>2.5.1</jmock.version>
diff --git a/store/src/main/java/org/apache/james/mailbox/store/MimeDescriptorImpl.java b/store/src/main/java/org/apache/james/mailbox/store/MimeDescriptorImpl.java
index 232e5cb..1f58dbf 100644
--- a/store/src/main/java/org/apache/james/mailbox/store/MimeDescriptorImpl.java
+++ b/store/src/main/java/org/apache/james/mailbox/store/MimeDescriptorImpl.java
@@ -62,10 +62,7 @@ public class MimeDescriptorImpl implements MimeDescriptor {
     public static MimeDescriptorImpl build(final InputStream stream) throws IOException, MimeException {
         // Disable line length limit
         // See https://issues.apache.org/jira/browse/IMAP-132
-        MimeConfig config = new MimeConfig();
-        config.setMaxLineLen(-1);
-        config.setMaxHeaderLen(-1);
-
+        MimeConfig config = MimeConfig.custom().setMaxLineLen(-1).setMaxHeaderLen(-1).build();
         //
         final MimeTokenStream parser = new MimeTokenStream(config, new DefaultBodyDescriptorBuilder());
         
diff --git a/store/src/main/java/org/apache/james/mailbox/store/ResultUtils.java b/store/src/main/java/org/apache/james/mailbox/store/ResultUtils.java
index 33db193..c6f7599 100644
--- a/store/src/main/java/org/apache/james/mailbox/store/ResultUtils.java
+++ b/store/src/main/java/org/apache/james/mailbox/store/ResultUtils.java
@@ -55,9 +55,7 @@ public class ResultUtils {
 
     public static List<MessageResult.Header> createHeaders(final Message<?> document) throws IOException {
         final List<MessageResult.Header> results = new ArrayList<MessageResult.Header>();
-        MimeConfig config = new MimeConfig();
-        config.setMaxLineLen(-1);
-        config.setMaxHeaderLen(-1);
+        MimeConfig config = MimeConfig.custom().setMaxLineLen(-1).setMaxHeaderLen(-1).build();
         final MimeStreamParser parser = new MimeStreamParser(config);
         parser.setContentHandler(new AbstractContentHandler() {
             @Override
diff --git a/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java b/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
index 700ab2c..0353f85 100644
--- a/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
+++ b/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
@@ -266,9 +266,7 @@ public class StoreMessageManager<Id> implements org.apache.james.mailbox.Message
             // Disable line length... This should be handled by the smtp server
             // component and not the parser itself
             // https://issues.apache.org/jira/browse/IMAP-122
-            MimeConfig config = new MimeConfig();
-            config.setMaxLineLen(-1);
-            config.setMaxHeaderLen(-1);
+            MimeConfig config = MimeConfig.custom().setMaxLineLen(-1).setMaxHeaderLen(-1).build();
 
             final MimeTokenStream parser = new MimeTokenStream(config, new DefaultBodyDescriptorBuilder());
 
diff --git a/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearcher.java b/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearcher.java
index 53b7974..a42429c 100644
--- a/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearcher.java
+++ b/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearcher.java
@@ -155,9 +155,7 @@ public class MessageSearcher {
             final CharBuffer buffer) throws IOException, MimeException {
         try {
             boolean result = false;
-            MimeConfig config = new MimeConfig();
-            config.setMaxLineLen(-1);
-            config.setMaxHeaderLen(-1);
+            MimeConfig config = MimeConfig.custom().setMaxLineLen(-1).setMaxHeaderLen(-1).build();
 
             MimeTokenStream parser = new MimeTokenStream(config);            parser.parse(input);
             while (!result && parser.next() != EntityState.T_END_OF_STREAM) {
diff --git a/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearches.java b/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearches.java
index c73e4af..102284f 100644
--- a/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearches.java
+++ b/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearches.java
@@ -54,7 +54,7 @@ import org.apache.james.mime4j.dom.address.Mailbox;
 import org.apache.james.mime4j.dom.address.MailboxList;
 import org.apache.james.mime4j.dom.datetime.DateTime;
 import org.apache.james.mime4j.field.address.AddressFormatter;
-import org.apache.james.mime4j.field.address.LenientAddressBuilder;
+import org.apache.james.mime4j.field.address.LenientAddressParser;
 import org.apache.james.mime4j.field.datetime.parser.DateTimeParser;
 import org.apache.james.mime4j.field.datetime.parser.ParseException;
 import org.slf4j.Logger;
@@ -367,7 +367,7 @@ public class MessageSearches implements Iterable<Long> {
             final String name = header.getName();
             if (headerName.equalsIgnoreCase(name)) {
                 final String value = header.getValue();
-                AddressList aList = LenientAddressBuilder.DEFAULT.parseAddressList(value);
+                AddressList aList = LenientAddressParser.DEFAULT.parseAddressList(value);
                 for (int i = 0; i < aList.size(); i++) {
                     Address address = aList.get(i);
                     if (address instanceof Mailbox) {
diff --git a/store/src/main/java/org/apache/james/mailbox/store/search/SearchUtil.java b/store/src/main/java/org/apache/james/mailbox/store/search/SearchUtil.java
index c5d176b..bf9e337 100644
--- a/store/src/main/java/org/apache/james/mailbox/store/search/SearchUtil.java
+++ b/store/src/main/java/org/apache/james/mailbox/store/search/SearchUtil.java
@@ -28,7 +28,7 @@ import org.apache.james.mime4j.dom.address.AddressList;
 import org.apache.james.mime4j.dom.address.Group;
 import org.apache.james.mime4j.dom.address.Mailbox;
 import org.apache.james.mime4j.dom.address.MailboxList;
-import org.apache.james.mime4j.field.address.LenientAddressBuilder;
+import org.apache.james.mime4j.field.address.LenientAddressParser;
 import org.apache.james.mime4j.util.MimeUtil;
 
 /**
@@ -107,7 +107,7 @@ public class SearchUtil {
      * @return display
      */
     public static String getDisplayAddress(String headerValue) {
-        AddressList addressList = LenientAddressBuilder.DEFAULT.parseAddressList(MimeUtil.unfold(headerValue));
+        AddressList addressList = LenientAddressParser.DEFAULT.parseAddressList(MimeUtil.unfold(headerValue));
         if (addressList != null && addressList.isEmpty() == false) {
             Address address = addressList.get(0);
             if (address instanceof Mailbox) {
@@ -149,7 +149,7 @@ public class SearchUtil {
      * @return mailbox
      */
     public static String getMailboxAddress(String headerValue) {
-        AddressList aList = LenientAddressBuilder.DEFAULT.parseAddressList(headerValue);
+        AddressList aList = LenientAddressParser.DEFAULT.parseAddressList(headerValue);
         for (int i = 0; i < aList.size(); i++) {
             Address address = aList.get(i);
             if (address instanceof Mailbox) {
diff --git a/store/src/main/java/org/apache/james/mailbox/store/streaming/PartContentBuilder.java b/store/src/main/java/org/apache/james/mailbox/store/streaming/PartContentBuilder.java
index da89da3..b4c6ad0 100644
--- a/store/src/main/java/org/apache/james/mailbox/store/streaming/PartContentBuilder.java
+++ b/store/src/main/java/org/apache/james/mailbox/store/streaming/PartContentBuilder.java
@@ -49,9 +49,7 @@ public class PartContentBuilder {
     private boolean topLevel = true;
 
     public PartContentBuilder() {
-        MimeConfig config = new MimeConfig();
-        config.setMaxLineLen(-1);
-        config.setMaxHeaderLen(-1);
+        MimeConfig config = MimeConfig.custom().setMaxLineLen(-1).setMaxHeaderLen(-1).build();
 
         parser = new MimeTokenStream(config);
     }
-- 
2.1.4

