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