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 2017/05/05 01:59:12 UTC

[1/3] james-project git commit: JAMES-1900 Re-indent HeaderCollectionTest

Repository: james-project
Updated Branches:
  refs/heads/master 4ca681621 -> 900fd9d36


JAMES-1900 Re-indent HeaderCollectionTest


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/ff33b0cf
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/ff33b0cf
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/ff33b0cf

Branch: refs/heads/master
Commit: ff33b0cfada9f17ce3217853ddc8c0ef6d608cf0
Parents: 4ca6816
Author: benwa <bt...@linagora.com>
Authored: Thu May 4 14:58:01 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu May 4 16:36:58 2017 +0700

----------------------------------------------------------------------
 .../json/HeaderCollectionTest.java              | 93 ++++++++++++++++----
 1 file changed, 74 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/ff33b0cf/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/HeaderCollectionTest.java
----------------------------------------------------------------------
diff --git a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/HeaderCollectionTest.java b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/HeaderCollectionTest.java
index dbea3c5..69ebc6f 100644
--- a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/HeaderCollectionTest.java
+++ b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/HeaderCollectionTest.java
@@ -31,14 +31,20 @@ public class HeaderCollectionTest {
 
     @Test
     public void simpleValueAddressHeaderShouldBeAddedToTheAddressSet() {
-        HeaderCollection headerCollection = HeaderCollection.builder().add(new FieldImpl("To", "btellier@linagora.com")).build();
+        HeaderCollection headerCollection = HeaderCollection.builder()
+            .add(new FieldImpl("To", "btellier@linagora.com"))
+            .build();
+
         assertThat(headerCollection.getToAddressSet())
             .containsOnly(new EMailer("btellier@linagora.com", "btellier@linagora.com"));
     }
 
     @Test
     public void comaSeparatedAddressShouldBeBothAddedToTheAddressSet() {
-        HeaderCollection headerCollection = HeaderCollection.builder().add(new FieldImpl("To", "btellier@linagora.com, benwa@minet.net")).build();
+        HeaderCollection headerCollection = HeaderCollection.builder()
+            .add(new FieldImpl("To", "btellier@linagora.com, benwa@minet.net"))
+            .build();
+
         assertThat(headerCollection.getToAddressSet())
             .containsOnly(
                 new EMailer("btellier@linagora.com", "btellier@linagora.com"),
@@ -47,7 +53,11 @@ public class HeaderCollectionTest {
 
     @Test
     public void addressesOfTwoFieldsHavingTheSameNameShouldBeMerged() {
-        HeaderCollection headerCollection = HeaderCollection.builder().add(new FieldImpl("To", "btellier@linagora.com")).add(new FieldImpl("To", "btellier@linagora.com, benwa@minet.net")).build();
+        HeaderCollection headerCollection = HeaderCollection.builder()
+            .add(new FieldImpl("To", "btellier@linagora.com"))
+            .add(new FieldImpl("To", "btellier@linagora.com, benwa@minet.net"))
+            .build();
+
         assertThat(headerCollection.getToAddressSet())
             .containsOnly(
                 new EMailer("btellier@linagora.com", "btellier@linagora.com"),
@@ -56,14 +66,20 @@ public class HeaderCollectionTest {
 
     @Test
     public void displayNamesShouldBeRetreived() {
-        HeaderCollection headerCollection = HeaderCollection.builder().add(new FieldImpl("To", "Christophe Hamerling <ch...@linagora.com>")).build();
+        HeaderCollection headerCollection = HeaderCollection.builder()
+            .add(new FieldImpl("To", "Christophe Hamerling <ch...@linagora.com>"))
+            .build();
+
         assertThat(headerCollection.getToAddressSet())
             .containsOnly(new EMailer("Christophe Hamerling", "chamerling@linagora.com"));
     }
 
     @Test
     public void displayNamesShouldBeRetrievedWhenEncodedWord() {
-        HeaderCollection headerCollection = HeaderCollection.builder().add(new FieldImpl("From", "=?UTF-8?B?RnLDqWTDqXJpYyBNQVJUSU4=?= <fm...@linagora.com>, Graham CROSMARIE <gc...@linagora.com>")).build();
+        HeaderCollection headerCollection = HeaderCollection.builder()
+            .add(new FieldImpl("From", "=?UTF-8?B?RnLDqWTDqXJpYyBNQVJUSU4=?= <fm...@linagora.com>, Graham CROSMARIE <gc...@linagora.com>"))
+            .build();
+
         assertThat(headerCollection.getFromAddressSet())
             .extracting(EMailer::getName)
             .contains("Frédéric MARTIN");
@@ -71,7 +87,10 @@ public class HeaderCollectionTest {
 
     @Test
     public void addressWithTwoDisplayNamesOnTheSameFieldShouldBeRetrieved() {
-        HeaderCollection headerCollection = HeaderCollection.builder().add(new FieldImpl("From", "Christophe Hamerling <ch...@linagora.com>, Graham CROSMARIE <gc...@linagora.com>")).build();
+        HeaderCollection headerCollection = HeaderCollection.builder()
+            .add(new FieldImpl("From", "Christophe Hamerling <ch...@linagora.com>, Graham CROSMARIE <gc...@linagora.com>"))
+            .build();
+
         assertThat(headerCollection.getFromAddressSet())
             .containsOnly(new EMailer("Christophe Hamerling", "chamerling@linagora.com"),
                 new EMailer("Graham CROSMARIE", "gcrosmarie@linagora.com"));
@@ -80,7 +99,10 @@ public class HeaderCollectionTest {
 
     @Test
     public void mixingAddressWithDisplayNamesWithOthersShouldBeAllowed() {
-        HeaderCollection headerCollection = HeaderCollection.builder().add(new FieldImpl("To", "Christophe Hamerling <ch...@linagora.com>, gcrosmarie@linagora.com")).build();
+        HeaderCollection headerCollection = HeaderCollection.builder()
+            .add(new FieldImpl("To", "Christophe Hamerling <ch...@linagora.com>, gcrosmarie@linagora.com"))
+            .build();
+
         assertThat(headerCollection.getToAddressSet())
             .containsOnly(new EMailer("Christophe Hamerling", "chamerling@linagora.com"),
                 new EMailer("gcrosmarie@linagora.com", "gcrosmarie@linagora.com"));
@@ -88,50 +110,71 @@ public class HeaderCollectionTest {
 
     @Test
     public void displayNamesShouldBeRetreivedOnCc() {
-        HeaderCollection headerCollection = HeaderCollection.builder().add(new FieldImpl("Cc", "Christophe Hamerling <ch...@linagora.com>")).build();
+        HeaderCollection headerCollection = HeaderCollection.builder()
+            .add(new FieldImpl("Cc", "Christophe Hamerling <ch...@linagora.com>"))
+            .build();
+
         assertThat(headerCollection.getCcAddressSet())
             .containsOnly(new EMailer("Christophe Hamerling", "chamerling@linagora.com"));
     }
 
     @Test
     public void displayNamesShouldBeRetreivedOnReplyTo() {
-        HeaderCollection headerCollection = HeaderCollection.builder().add(new FieldImpl("Reply-To", "Christophe Hamerling <ch...@linagora.com>")).build();
+        HeaderCollection headerCollection = HeaderCollection.builder()
+            .add(new FieldImpl("Reply-To", "Christophe Hamerling <ch...@linagora.com>"))
+            .build();
+
         assertThat(headerCollection.getReplyToAddressSet())
             .containsOnly(new EMailer("Christophe Hamerling", "chamerling@linagora.com"));
     }
 
     @Test
     public void displayNamesShouldBeRetreivedOnBcc() {
-        HeaderCollection headerCollection = HeaderCollection.builder().add(new FieldImpl("Bcc", "Christophe Hamerling <ch...@linagora.com>")).build();
+        HeaderCollection headerCollection = HeaderCollection.builder()
+            .add(new FieldImpl("Bcc", "Christophe Hamerling <ch...@linagora.com>"))
+            .build();
+
         assertThat(headerCollection.getBccAddressSet())
             .containsOnly(new EMailer("Christophe Hamerling", "chamerling@linagora.com"));
     }
 
     @Test
     public void headerContaingNoAddressShouldBeConsideredBothAsNameAndAddress() {
-        HeaderCollection headerCollection = HeaderCollection.builder().add(new FieldImpl("Bcc", "Not an address")).build();
+        HeaderCollection headerCollection = HeaderCollection.builder()
+            .add(new FieldImpl("Bcc", "Not an address"))
+            .build();
+
         assertThat(headerCollection.getBccAddressSet())
             .containsOnly(new EMailer("Not an address", "Not an address"));
     }
 
     @Test
     public void unclosedAddressSubpartShouldBeWellHandled() {
-        HeaderCollection headerCollection = HeaderCollection.builder().add(new FieldImpl("Bcc", "Mickey <tricky@mouse.com")).build();
+        HeaderCollection headerCollection = HeaderCollection.builder()
+            .add(new FieldImpl("Bcc", "Mickey <tricky@mouse.com"))
+            .build();
+
         assertThat(headerCollection.getBccAddressSet())
             .containsOnly(new EMailer("Mickey", "tricky@mouse.com"));
     }
 
     @Test
     public void notComaSeparatedAddressSubpartShouldBeWellHandled() {
-        HeaderCollection headerCollection = HeaderCollection.builder().add(new FieldImpl("Bcc", "Mickey <tr...@mouse.com> Miny<he...@polo.com>")).build();
+        HeaderCollection headerCollection = HeaderCollection.builder()
+            .add(new FieldImpl("Bcc", "Mickey <tr...@mouse.com> Miny<he...@polo.com>"))
+            .build();
+
         assertThat(headerCollection.getBccAddressSet())
             .containsOnly(new EMailer("Mickey", "tricky@mouse.com"),
                 new EMailer("Miny", "hello@polo.com"));
     }
 
     @Test
-    public void notSeparatedAddressSubpartShouldBeWellHandled1() {
-        HeaderCollection headerCollection = HeaderCollection.builder().add(new FieldImpl("Bcc", "Mickey <tr...@polo.com>")).build();
+    public void notSeparatedAddressSubpartShouldBeWellHandled() {
+        HeaderCollection headerCollection = HeaderCollection.builder()
+            .add(new FieldImpl("Bcc", "Mickey <tr...@polo.com>"))
+            .build();
+
         assertThat(headerCollection.getBccAddressSet())
             .containsOnly(new EMailer("Mickey", "tricky@mouse.com"),
                 new EMailer("Miny", "hello@polo.com"));
@@ -139,21 +182,30 @@ public class HeaderCollectionTest {
 
     @Test
     public void dateShouldBeRetreived() {
-        HeaderCollection headerCollection = HeaderCollection.builder().add(new FieldImpl("Date", "Thu, 4 Jun 2015 06:08:41 +0200")).build();
+        HeaderCollection headerCollection = HeaderCollection.builder()
+            .add(new FieldImpl("Date", "Thu, 4 Jun 2015 06:08:41 +0200"))
+            .build();
+
         assertThat(DATE_TIME_FORMATTER.format(headerCollection.getSentDate().get()))
             .isEqualTo("2015/06/04 06:08:41");
     }
 
     @Test
     public void nonStandardDatesShouldBeRetreived() {
-        HeaderCollection headerCollection = HeaderCollection.builder().add(new FieldImpl("Date", "Thu, 4 Jun 2015 06:08:41 +0200 (UTC)")).build();
+        HeaderCollection headerCollection = HeaderCollection.builder()
+            .add(new FieldImpl("Date", "Thu, 4 Jun 2015 06:08:41 +0200 (UTC)"))
+            .build();
+
         assertThat(DATE_TIME_FORMATTER.format(headerCollection.getSentDate().get()))
             .isEqualTo("2015/06/04 06:08:41");
     }
 
     @Test
     public void dateShouldBeAbsentOnInvalidHeader() {
-        HeaderCollection headerCollection = HeaderCollection.builder().add(new FieldImpl("Date", "Not a date")).build();
+        HeaderCollection headerCollection = HeaderCollection.builder()
+            .add(new FieldImpl("Date", "Not a date"))
+            .build();
+
         assertThat(headerCollection.getSentDate().isPresent())
             .isFalse();
     }
@@ -161,7 +213,10 @@ public class HeaderCollectionTest {
     @Test
     public void subjectsShouldBeWellRetrieved() {
         String subject = "A fantastic ElasticSearch module will be available soon for JAMES";
-        HeaderCollection headerCollection = HeaderCollection.builder().add(new FieldImpl("Subject", subject)).build();
+        HeaderCollection headerCollection = HeaderCollection.builder()
+            .add(new FieldImpl("Subject", subject))
+            .build();
+
         assertThat(headerCollection.getSubjectSet()).containsOnly("A fantastic ElasticSearch module will be available soon for JAMES");
     }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[2/3] james-project git commit: JAMES-1900 anonimizing addresses in HeaderCollectionTest

Posted by bt...@apache.org.
JAMES-1900 anonimizing addresses in HeaderCollectionTest


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/f34b6fe6
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/f34b6fe6
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/f34b6fe6

Branch: refs/heads/master
Commit: f34b6fe6586bf2127d9e7ff5ae51f60ad127dc47
Parents: ff33b0c
Author: benwa <bt...@linagora.com>
Authored: Thu May 4 15:01:17 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu May 4 16:37:04 2017 +0700

----------------------------------------------------------------------
 .../json/HeaderCollectionTest.java              | 48 ++++++++++----------
 1 file changed, 24 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/f34b6fe6/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/HeaderCollectionTest.java
----------------------------------------------------------------------
diff --git a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/HeaderCollectionTest.java b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/HeaderCollectionTest.java
index 69ebc6f..88efd00 100644
--- a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/HeaderCollectionTest.java
+++ b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/HeaderCollectionTest.java
@@ -32,52 +32,52 @@ public class HeaderCollectionTest {
     @Test
     public void simpleValueAddressHeaderShouldBeAddedToTheAddressSet() {
         HeaderCollection headerCollection = HeaderCollection.builder()
-            .add(new FieldImpl("To", "btellier@linagora.com"))
+            .add(new FieldImpl("To", "ben.tellier@linagora.com"))
             .build();
 
         assertThat(headerCollection.getToAddressSet())
-            .containsOnly(new EMailer("btellier@linagora.com", "btellier@linagora.com"));
+            .containsOnly(new EMailer("ben.tellier@linagora.com", "ben.tellier@linagora.com"));
     }
 
     @Test
     public void comaSeparatedAddressShouldBeBothAddedToTheAddressSet() {
         HeaderCollection headerCollection = HeaderCollection.builder()
-            .add(new FieldImpl("To", "btellier@linagora.com, benwa@minet.net"))
+            .add(new FieldImpl("To", "ben.tellier@linagora.com, btellier@minet.net"))
             .build();
 
         assertThat(headerCollection.getToAddressSet())
             .containsOnly(
-                new EMailer("btellier@linagora.com", "btellier@linagora.com"),
-                new EMailer("benwa@minet.net", "benwa@minet.net"));
+                new EMailer("ben.tellier@linagora.com", "ben.tellier@linagora.com"),
+                new EMailer("btellier@minet.net", "btellier@minet.net"));
     }
 
     @Test
     public void addressesOfTwoFieldsHavingTheSameNameShouldBeMerged() {
         HeaderCollection headerCollection = HeaderCollection.builder()
-            .add(new FieldImpl("To", "btellier@linagora.com"))
-            .add(new FieldImpl("To", "btellier@linagora.com, benwa@minet.net"))
+            .add(new FieldImpl("To", "ben.tellier@linagora.com"))
+            .add(new FieldImpl("To", "ben.tellier@linagora.com, btellier@minet.net"))
             .build();
 
         assertThat(headerCollection.getToAddressSet())
             .containsOnly(
-                new EMailer("btellier@linagora.com", "btellier@linagora.com"),
-                new EMailer("benwa@minet.net", "benwa@minet.net"));
+                new EMailer("ben.tellier@linagora.com", "ben.tellier@linagora.com"),
+                new EMailer("btellier@minet.net", "btellier@minet.net"));
     }
 
     @Test
     public void displayNamesShouldBeRetreived() {
         HeaderCollection headerCollection = HeaderCollection.builder()
-            .add(new FieldImpl("To", "Christophe Hamerling <ch...@linagora.com>"))
+            .add(new FieldImpl("To", "Christophe Hamerling <ch...@linagora.com>"))
             .build();
 
         assertThat(headerCollection.getToAddressSet())
-            .containsOnly(new EMailer("Christophe Hamerling", "chamerling@linagora.com"));
+            .containsOnly(new EMailer("Christophe Hamerling", "chri.hamerling@linagora.com"));
     }
 
     @Test
     public void displayNamesShouldBeRetrievedWhenEncodedWord() {
         HeaderCollection headerCollection = HeaderCollection.builder()
-            .add(new FieldImpl("From", "=?UTF-8?B?RnLDqWTDqXJpYyBNQVJUSU4=?= <fm...@linagora.com>, Graham CROSMARIE <gc...@linagora.com>"))
+            .add(new FieldImpl("From", "=?UTF-8?B?RnLDqWTDqXJpYyBNQVJUSU4=?= <fr...@linagora.com>, Graham CROSMARIE <gr...@linagora.com>"))
             .build();
 
         assertThat(headerCollection.getFromAddressSet())
@@ -88,54 +88,54 @@ public class HeaderCollectionTest {
     @Test
     public void addressWithTwoDisplayNamesOnTheSameFieldShouldBeRetrieved() {
         HeaderCollection headerCollection = HeaderCollection.builder()
-            .add(new FieldImpl("From", "Christophe Hamerling <ch...@linagora.com>, Graham CROSMARIE <gc...@linagora.com>"))
+            .add(new FieldImpl("From", "Christophe Hamerling <ch...@linagora.com>, Graham CROSMARIE <gr...@linagora.com>"))
             .build();
 
         assertThat(headerCollection.getFromAddressSet())
-            .containsOnly(new EMailer("Christophe Hamerling", "chamerling@linagora.com"),
-                new EMailer("Graham CROSMARIE", "gcrosmarie@linagora.com"));
+            .containsOnly(new EMailer("Christophe Hamerling", "chri.hamerling@linagora.com"),
+                new EMailer("Graham CROSMARIE", "grah.crosmarie@linagora.com"));
 
     }
 
     @Test
     public void mixingAddressWithDisplayNamesWithOthersShouldBeAllowed() {
         HeaderCollection headerCollection = HeaderCollection.builder()
-            .add(new FieldImpl("To", "Christophe Hamerling <ch...@linagora.com>, gcrosmarie@linagora.com"))
+            .add(new FieldImpl("To", "Christophe Hamerling <ch...@linagora.com>, grah.crosmarie@linagora.com"))
             .build();
 
         assertThat(headerCollection.getToAddressSet())
-            .containsOnly(new EMailer("Christophe Hamerling", "chamerling@linagora.com"),
-                new EMailer("gcrosmarie@linagora.com", "gcrosmarie@linagora.com"));
+            .containsOnly(new EMailer("Christophe Hamerling", "chri.hamerling@linagora.com"),
+                new EMailer("grah.crosmarie@linagora.com", "grah.crosmarie@linagora.com"));
     }
 
     @Test
     public void displayNamesShouldBeRetreivedOnCc() {
         HeaderCollection headerCollection = HeaderCollection.builder()
-            .add(new FieldImpl("Cc", "Christophe Hamerling <ch...@linagora.com>"))
+            .add(new FieldImpl("Cc", "Christophe Hamerling <ch...@linagora.com>"))
             .build();
 
         assertThat(headerCollection.getCcAddressSet())
-            .containsOnly(new EMailer("Christophe Hamerling", "chamerling@linagora.com"));
+            .containsOnly(new EMailer("Christophe Hamerling", "chri.hamerling@linagora.com"));
     }
 
     @Test
     public void displayNamesShouldBeRetreivedOnReplyTo() {
         HeaderCollection headerCollection = HeaderCollection.builder()
-            .add(new FieldImpl("Reply-To", "Christophe Hamerling <ch...@linagora.com>"))
+            .add(new FieldImpl("Reply-To", "Christophe Hamerling <ch...@linagora.com>"))
             .build();
 
         assertThat(headerCollection.getReplyToAddressSet())
-            .containsOnly(new EMailer("Christophe Hamerling", "chamerling@linagora.com"));
+            .containsOnly(new EMailer("Christophe Hamerling", "chri.hamerling@linagora.com"));
     }
 
     @Test
     public void displayNamesShouldBeRetreivedOnBcc() {
         HeaderCollection headerCollection = HeaderCollection.builder()
-            .add(new FieldImpl("Bcc", "Christophe Hamerling <ch...@linagora.com>"))
+            .add(new FieldImpl("Bcc", "Christophe Hamerling <ch...@linagora.com>"))
             .build();
 
         assertThat(headerCollection.getBccAddressSet())
-            .containsOnly(new EMailer("Christophe Hamerling", "chamerling@linagora.com"));
+            .containsOnly(new EMailer("Christophe Hamerling", "chri.hamerling@linagora.com"));
     }
 
     @Test


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[3/3] james-project git commit: JAMES-1900 Full support for header folding in ES indexing

Posted by bt...@apache.org.
JAMES-1900 Full support for header folding in ES indexing


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/900fd9d3
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/900fd9d3
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/900fd9d3

Branch: refs/heads/master
Commit: 900fd9d36242e424dab9a29c295cac342f8f08ba
Parents: f34b6fe
Author: benwa <bt...@linagora.com>
Authored: Thu May 4 15:02:11 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Fri May 5 08:58:11 2017 +0700

----------------------------------------------------------------------
 .../elasticsearch/json/HeaderCollection.java    | 48 ++++++++++++--------
 .../json/HeaderCollectionTest.java              | 32 +++++++++++++
 2 files changed, 60 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/900fd9d3/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/json/HeaderCollection.java
----------------------------------------------------------------------
diff --git a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/json/HeaderCollection.java b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/json/HeaderCollection.java
index 6125ebf..eef245c 100644
--- a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/json/HeaderCollection.java
+++ b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/json/HeaderCollection.java
@@ -19,12 +19,17 @@
 
 package org.apache.james.mailbox.elasticsearch.json;
 
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Preconditions;
-import com.google.common.collect.ArrayListMultimap;
-import com.google.common.collect.ImmutableMultimap;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Multimap;
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.HashSet;
+import java.util.Locale;
+import java.util.Optional;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
 import org.apache.james.mailbox.store.search.SearchUtil;
 import org.apache.james.mime4j.codec.DecodeMonitor;
 import org.apache.james.mime4j.codec.DecoderUtil;
@@ -37,19 +42,21 @@ import org.apache.james.mime4j.util.MimeUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.time.ZonedDateTime;
-import java.time.format.DateTimeFormatter;
-import java.util.HashSet;
-import java.util.Locale;
-import java.util.Optional;
-import java.util.Set;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
+import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.Preconditions;
+import com.google.common.collect.ArrayListMultimap;
+import com.google.common.collect.ImmutableMultimap;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Multimap;
 
 public class HeaderCollection {
 
+    private static String sanitizeHeaderField(String headerName) {
+        return DecoderUtil.decodeEncodedWords(
+            MimeUtil.unfold(headerName),
+            DecodeMonitor.SILENT);
+    }
+
     public static class Builder {
 
         // Some sent e-mail have this form : Wed,  3 Jun 2015 09:05:46 +0000 (UTC)
@@ -83,9 +90,10 @@ public class HeaderCollection {
         public Builder add(Field field) {
             Preconditions.checkNotNull(field);
             String headerName = field.getName().toLowerCase(Locale.US);
-            String headerValue = field.getBody();
-            headers.put(headerName, DecoderUtil.decodeEncodedWords(headerValue, DecodeMonitor.SILENT));
-            handleSpecificHeader(headerName, headerValue);
+            String sanitizedValue = sanitizeHeaderField(field.getBody());
+
+            headers.put(headerName, sanitizedValue);
+            handleSpecificHeader(headerName, sanitizedValue);
             return this;
         }
 
@@ -121,7 +129,7 @@ public class HeaderCollection {
 
         private void manageAddressField(String headerName, String headerValue) {
             LenientAddressParser.DEFAULT
-                .parseAddressList(MimeUtil.unfold(headerValue))
+                .parseAddressList(headerValue)
                 .stream()
                 .flatMap(this::convertAddressToMailboxStream)
                 .map((mailbox) -> new EMailer(SearchUtil.getDisplayAddress(mailbox) , mailbox.getAddress()))

http://git-wip-us.apache.org/repos/asf/james-project/blob/900fd9d3/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/HeaderCollectionTest.java
----------------------------------------------------------------------
diff --git a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/HeaderCollectionTest.java b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/HeaderCollectionTest.java
index 88efd00..d12cca8 100644
--- a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/HeaderCollectionTest.java
+++ b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/HeaderCollectionTest.java
@@ -86,6 +86,16 @@ public class HeaderCollectionTest {
     }
 
     @Test
+    public void getHeadersShouldDecodeValues() {
+        HeaderCollection headerCollection = HeaderCollection.builder()
+            .add(new FieldImpl("From", "=?UTF-8?B?RnLDqWTDqXJpYyBNQVJUSU4=?= <fm...@linagora.com>, Graham CROSMARIE <gc...@linagora.com>"))
+            .build();
+
+        assertThat(headerCollection.getHeaders().get("from"))
+            .containsExactly("Frédéric MARTIN <fm...@linagora.com>, Graham CROSMARIE <gc...@linagora.com>");
+    }
+
+    @Test
     public void addressWithTwoDisplayNamesOnTheSameFieldShouldBeRetrieved() {
         HeaderCollection headerCollection = HeaderCollection.builder()
             .add(new FieldImpl("From", "Christophe Hamerling <ch...@linagora.com>, Graham CROSMARIE <gr...@linagora.com>"))
@@ -94,7 +104,29 @@ public class HeaderCollectionTest {
         assertThat(headerCollection.getFromAddressSet())
             .containsOnly(new EMailer("Christophe Hamerling", "chri.hamerling@linagora.com"),
                 new EMailer("Graham CROSMARIE", "grah.crosmarie@linagora.com"));
+    }
+
+    @Test
+    public void foldedFromHeaderShouldBeSupported() {
+        HeaderCollection headerCollection = HeaderCollection.builder()
+            .add(new FieldImpl("From", "Christophe Hamerling <ch...@linagora.com>,\r\n" +
+                " Graham CROSMARIE <gr...@linagora.com>"))
+            .build();
+
+        assertThat(headerCollection.getFromAddressSet())
+            .containsOnly(new EMailer("Christophe Hamerling", "chri.hamerling@linagora.com"),
+                new EMailer("Graham CROSMARIE", "grah.crosmarie@linagora.com"));
+    }
+
+    @Test
+    public void foldedHeaderShouldBeSupported() {
+        HeaderCollection headerCollection = HeaderCollection.builder()
+            .add(new FieldImpl("From", "Christophe Hamerling <ch...@linagora.com>,\r\n" +
+                " Graham CROSMARIE <gr...@linagora.com>"))
+            .build();
 
+        assertThat(headerCollection.getHeaders().get("from"))
+            .containsOnly("Christophe Hamerling <ch...@linagora.com>, Graham CROSMARIE <gr...@linagora.com>");
     }
 
     @Test


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org