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 ro...@apache.org on 2018/01/15 09:56:00 UTC

[1/9] james-project git commit: JAMES-2286 make junit5 tests run in maven

Repository: james-project
Updated Branches:
  refs/heads/master 9191d3bcb -> 8f197a4df


JAMES-2286 make junit5 tests run in maven


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

Branch: refs/heads/master
Commit: d849f1809c79a41eaeb7515d46921506a182d985
Parents: d8587c2
Author: Matthieu Baechler <ma...@apache.org>
Authored: Thu Jan 11 11:03:11 2018 +0100
Committer: benwa <bt...@linagora.com>
Committed: Mon Jan 15 16:52:08 2018 +0700

----------------------------------------------------------------------
 pom.xml | 31 ++++++++++++++++++++++++++++---
 1 file changed, 28 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/d849f180/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 3d46e7e..7f4c8cc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -615,6 +615,9 @@
 
         <dnsjava.version>2.1.1</dnsjava.version>
         <junit.version>4.11</junit.version>
+        <junit.jupiter.version>5.0.2</junit.jupiter.version>
+        <junit.plateform.version>1.0.2</junit.plateform.version>
+        <junit.vintage.version>4.12.2</junit.vintage.version>
         <jmock.version>2.6.0</jmock.version>
         <concurrent.version>1.3.4</concurrent.version>
         <log4j.version>1.2.17</log4j.version>
@@ -2136,12 +2139,17 @@
             <dependency>
                 <groupId>org.junit.jupiter</groupId>
                 <artifactId>junit-jupiter-engine</artifactId>
-                <version>5.0.2</version>
+                <version>${junit.jupiter.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.junit.platform</groupId>
+                <artifactId>junit-platform-launcher</artifactId>
+                <version>${junit.plateform.version}</version>
             </dependency>
             <dependency>
                 <groupId>org.junit.vintage</groupId>
                 <artifactId>junit-vintage-engine</artifactId>
-                <version>4.12.2</version>
+                <version>${junit.vintage.version}</version>
             </dependency>
             <dependency>
                 <groupId>org.mnode.ical4j</groupId>
@@ -2556,13 +2564,30 @@
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-surefire-plugin</artifactId>
-                    <version>2.20.1</version>
+                    <version>2.19.1</version>
                     <configuration>
                         <argLine>-Xms512m -Xmx1024m</argLine>
                         <reuseForks>false</reuseForks>
                         <!-- Fail tests longer than 2 hours, prevent form random locking tests -->
                         <forkedProcessTimeoutInSeconds>7200</forkedProcessTimeoutInSeconds>
                     </configuration>
+                    <dependencies>
+                        <dependency>
+                            <groupId>org.junit.jupiter</groupId>
+                            <artifactId>junit-jupiter-engine</artifactId>
+                            <version>${junit.jupiter.version}</version>
+                        </dependency>
+                        <dependency>
+                            <groupId>org.junit.platform</groupId>
+                            <artifactId>junit-platform-surefire-provider</artifactId>
+                            <version>${junit.plateform.version}</version>
+                        </dependency>
+                        <dependency>
+                            <groupId>org.junit.vintage</groupId>
+                            <artifactId>junit-vintage-engine</artifactId>
+                            <version>${junit.vintage.version}</version>
+                         </dependency>
+                    </dependencies>
                 </plugin>
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>


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


[8/9] james-project git commit: JAMES-2286 Extract value used several time to a variable

Posted by ro...@apache.org.
JAMES-2286 Extract value used several time to a variable

This makes it clear it is the same value
Modifying the test is less error prone.


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

Branch: refs/heads/master
Commit: f3b8bb93d3ad5b6a87f8e62aa6d57788e031184e
Parents: 609c6ed
Author: benwa <bt...@linagora.com>
Authored: Fri Jan 12 10:03:53 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Mon Jan 15 16:54:02 2018 +0700

----------------------------------------------------------------------
 .../mailrepository/MailRepositoryContract.java  | 25 ++++++++++++--------
 1 file changed, 15 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/f3b8bb93/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java
----------------------------------------------------------------------
diff --git a/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java b/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java
index 4c2cddc..737dcda 100644
--- a/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java
+++ b/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java
@@ -85,9 +85,10 @@ public interface MailRepositoryContract {
     @Test
     default void retrieveShouldGetStoredMail() throws Exception {
         MailRepository testee = retrieveRepository();
-        Mail email = createMail("mail1");
+        String key1 = "mail1";
+        Mail email = createMail(key1);
         testee.store(email);
-        assertThat(testee.retrieve("mail1")).satisfies(actual -> checkMailEquality(actual, email));
+        assertThat(testee.retrieve(key1)).satisfies(actual -> checkMailEquality(actual, email));
     }
 
     @Test
@@ -111,30 +112,34 @@ public interface MailRepositoryContract {
     @Test
     default void listShouldReturnStoredMailsKeys() throws Exception {
         MailRepository testee = retrieveRepository();
-        testee.store(createMail("mail1"));
-        testee.store(createMail("mail2"));
-        assertThat(testee.list()).containsExactly("mail1", "mail2");
+        String key1 = "mail1";
+        String key2 = "mail2";
+        testee.store(createMail(key1));
+        testee.store(createMail(key2));
+        assertThat(testee.list()).containsExactly(key1, key2);
     }
 
     @Test
     default void storingMessageWithSameKeyTwiceShouldUpdateMessageContent() throws Exception {
         MailRepository testee = retrieveRepository();
-        testee.store(createMail("mail1"));
-        Mail updatedMail = createMail("mail1", "modified content");
+        String key = "mail1";
+        testee.store(createMail(key));
+        Mail updatedMail = createMail(key, "modified content");
         testee.store(updatedMail);
         assertThat(testee.list()).hasSize(1);
-        assertThat(testee.retrieve("mail1")).satisfies(actual -> checkMailEquality(actual, updatedMail));
+        assertThat(testee.retrieve(key)).satisfies(actual -> checkMailEquality(actual, updatedMail));
     }
 
     @Test
     default void storingMessageWithSameKeyTwiceShouldUpdateMessageAttributes() throws Exception {
         MailRepository testee = retrieveRepository();
-        Mail mail = createMail("mail1");
+        String key = "mail1";
+        Mail mail = createMail(key);
         testee.store(mail);
         mail.setAttribute(TEST_ATTRIBUTE, "newValue");
         testee.store(mail);
         assertThat(testee.list()).hasSize(1);
-        assertThat(testee.retrieve("mail1")).satisfies(actual -> checkMailEquality(actual, mail));
+        assertThat(testee.retrieve(key)).satisfies(actual -> checkMailEquality(actual, mail));
     }
 
 }


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


[5/9] james-project git commit: JAMES-2286 switch JDBC mailrepository to new tests

Posted by ro...@apache.org.
JAMES-2286 switch JDBC mailrepository to new tests


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

Branch: refs/heads/master
Commit: d885ffc9b495d9e8e50d7e4fcdce1119d1b1bdb4
Parents: d849f18
Author: Matthieu Baechler <ma...@apache.org>
Authored: Wed Jan 10 18:07:47 2018 +0100
Committer: benwa <bt...@linagora.com>
Committed: Mon Jan 15 16:54:01 2018 +0700

----------------------------------------------------------------------
 pom.xml                                         |  6 +++
 server/data/data-jdbc/pom.xml                   | 21 +++++++---
 .../jdbc/JDBCDBFileMailRepositoryTest.java      | 29 -------------
 .../jdbc/JDBCMailRepositoryTest.java            | 44 ++++++++++++++------
 4 files changed, 54 insertions(+), 46 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/d885ffc9/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 7f4c8cc..8a125d2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1212,6 +1212,12 @@
             </dependency>
             <dependency>
                 <groupId>${project.groupId}</groupId>
+                <artifactId>james-server-mailrepository-api</artifactId>
+                <version>${project.version}</version>
+                <type>test-jar</type>
+            </dependency>
+            <dependency>
+                <groupId>${project.groupId}</groupId>
                 <artifactId>james-server-mailets</artifactId>
                 <version>${project.version}</version>
             </dependency>

http://git-wip-us.apache.org/repos/asf/james-project/blob/d885ffc9/server/data/data-jdbc/pom.xml
----------------------------------------------------------------------
diff --git a/server/data/data-jdbc/pom.xml b/server/data/data-jdbc/pom.xml
index e80b44d..6bd59e3 100644
--- a/server/data/data-jdbc/pom.xml
+++ b/server/data/data-jdbc/pom.xml
@@ -71,6 +71,12 @@
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
+            <artifactId>james-server-mailrepository-api</artifactId>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
             <artifactId>james-server-util</artifactId>
         </dependency>
         <dependency>
@@ -110,11 +116,6 @@
             <artifactId>javax.inject</artifactId>
         </dependency>
         <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
             <groupId>org.apache.derby</groupId>
             <artifactId>derby</artifactId>
             <scope>runtime</scope>
@@ -129,6 +130,16 @@
             <scope>test</scope>
         </dependency>
         <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-engine</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.vintage</groupId>
+            <artifactId>junit-vintage-engine</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-api</artifactId>
         </dependency>

http://git-wip-us.apache.org/repos/asf/james-project/blob/d885ffc9/server/data/data-jdbc/src/test/java/org/apache/james/mailrepository/jdbc/JDBCDBFileMailRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-jdbc/src/test/java/org/apache/james/mailrepository/jdbc/JDBCDBFileMailRepositoryTest.java b/server/data/data-jdbc/src/test/java/org/apache/james/mailrepository/jdbc/JDBCDBFileMailRepositoryTest.java
deleted file mode 100644
index 84bc14a..0000000
--- a/server/data/data-jdbc/src/test/java/org/apache/james/mailrepository/jdbc/JDBCDBFileMailRepositoryTest.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.mailrepository.jdbc;
-
-public class JDBCDBFileMailRepositoryTest extends JDBCMailRepositoryTest {
-
-    @Override
-    protected String getType() {
-        return "dbfile";
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/d885ffc9/server/data/data-jdbc/src/test/java/org/apache/james/mailrepository/jdbc/JDBCMailRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-jdbc/src/test/java/org/apache/james/mailrepository/jdbc/JDBCMailRepositoryTest.java b/server/data/data-jdbc/src/test/java/org/apache/james/mailrepository/jdbc/JDBCMailRepositoryTest.java
index 13a42ce..adffb1e 100644
--- a/server/data/data-jdbc/src/test/java/org/apache/james/mailrepository/jdbc/JDBCMailRepositoryTest.java
+++ b/server/data/data-jdbc/src/test/java/org/apache/james/mailrepository/jdbc/JDBCMailRepositoryTest.java
@@ -19,36 +19,51 @@
 
 package org.apache.james.mailrepository.jdbc;
 
+import java.sql.SQLException;
+
 import javax.sql.DataSource;
 
 import org.apache.commons.configuration.DefaultConfigurationBuilder;
 import org.apache.commons.dbcp.BasicDataSource;
 import org.apache.derby.jdbc.EmbeddedDriver;
 import org.apache.james.filesystem.api.mock.MockFileSystem;
-import org.apache.james.mailrepository.AbstractMailRepositoryTest;
+import org.apache.james.lifecycle.api.LifecycleUtil;
+import org.apache.james.mailrepository.MailRepositoryContract;
 import org.apache.james.mailrepository.api.MailRepository;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
 
-public class JDBCMailRepositoryTest extends AbstractMailRepositoryTest {
+public class JDBCMailRepositoryTest implements MailRepositoryContract {
 
-    @Override
-    protected MailRepository getMailRepository() throws Exception {
+    private JDBCMailRepository mailRepository;
+
+    @BeforeEach
+    void init() throws Exception {
         MockFileSystem fs = new MockFileSystem();
         DataSource datasource = getDataSource();
-        JDBCMailRepository mr = new JDBCMailRepository();
+        mailRepository = new JDBCMailRepository();
 
         DefaultConfigurationBuilder defaultConfiguration = new DefaultConfigurationBuilder();
         defaultConfiguration.addProperty("[@destinationURL]", "db://maildb/mr/testrepo");
         defaultConfiguration.addProperty("sqlFile", "file://conf/sqlResources.xml");
         defaultConfiguration.addProperty("[@type]", "MAIL");
-        mr.setFileSystem(fs);
-        mr.setDatasource(datasource);
-        mr.configure(defaultConfiguration);
-        mr.init();
-        return mr;
+        mailRepository.setFileSystem(fs);
+        mailRepository.setDatasource(datasource);
+        mailRepository.configure(defaultConfiguration);
+        mailRepository.init();
+    }
+
+    @AfterEach
+    void tearDown() throws SQLException {
+        mailRepository.getConnection().prepareStatement("DELETE from " + mailRepository.tableName).execute();
+        LifecycleUtil.dispose(mailRepository);
     }
 
-    protected String getType() {
-        return "db";
+    @Override
+    public MailRepository retrieveRepository() {
+        return mailRepository;
     }
 
     private BasicDataSource getDataSource() {
@@ -60,4 +75,9 @@ public class JDBCMailRepositoryTest extends AbstractMailRepositoryTest {
         return ds;
     }
 
+    @Test
+    @Disabled("JAMES-2304 JDBC doesn't update the message Content")
+    @Override
+    public void storingMessageWithSameKeyTwiceShouldUpdateMessageContent() {
+    }
 }


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


[7/9] james-project git commit: JAMES-2286 Adding line breaks makes test reading easier

Posted by ro...@apache.org.
JAMES-2286 Adding line breaks makes test reading easier

That create implicitly the de-facto team-standard given/when/then blocks.


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

Branch: refs/heads/master
Commit: 8f197a4df92b182ec6528d96a72ea2b69474b523
Parents: f3b8bb9
Author: benwa <bt...@linagora.com>
Authored: Fri Jan 12 10:06:24 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Mon Jan 15 16:54:02 2018 +0700

----------------------------------------------------------------------
 .../mailrepository/MailRepositoryContract.java  | 24 +++++++++++++++-----
 1 file changed, 18 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/8f197a4d/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java
----------------------------------------------------------------------
diff --git a/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java b/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java
index 737dcda..92cd111 100644
--- a/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java
+++ b/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java
@@ -78,34 +78,40 @@ public interface MailRepositoryContract {
     @Test
     default void storeRegularMailShouldNotFail() throws Exception {
         MailRepository testee = retrieveRepository();
-        Mail email = createMail("mail1");
-        testee.store(email);
+        Mail mail = createMail("mail1");
+
+        testee.store(mail);
     }
 
     @Test
     default void retrieveShouldGetStoredMail() throws Exception {
         MailRepository testee = retrieveRepository();
         String key1 = "mail1";
-        Mail email = createMail(key1);
-        testee.store(email);
-        assertThat(testee.retrieve(key1)).satisfies(actual -> checkMailEquality(actual, email));
+        Mail mail = createMail(key1);
+
+        testee.store(mail);
+
+        assertThat(testee.retrieve(key1)).satisfies(actual -> checkMailEquality(actual, mail));
     }
 
     @Test
     default void newlyCreatedRepositoryShouldNotContainAnyMail() throws Exception {
         MailRepository testee = retrieveRepository();
+
         assertThat(testee.list()).isEmpty();
     }
 
     @Test
     default void retrievingUnknownMailShouldReturnNull() throws Exception {
         MailRepository testee = retrieveRepository();
+
         assertThat(testee.retrieve("random")).isNull();
     }
 
     @Test
     default void removingUnknownMailShouldHaveNoEffect() throws Exception {
         MailRepository testee = retrieveRepository();
+
         testee.remove("random");
     }
 
@@ -115,8 +121,10 @@ public interface MailRepositoryContract {
         String key1 = "mail1";
         String key2 = "mail2";
         testee.store(createMail(key1));
+
         testee.store(createMail(key2));
-        assertThat(testee.list()).containsExactly(key1, key2);
+
+        assertThat(testee.list()).containsOnly(key1, key2);
     }
 
     @Test
@@ -124,8 +132,10 @@ public interface MailRepositoryContract {
         MailRepository testee = retrieveRepository();
         String key = "mail1";
         testee.store(createMail(key));
+
         Mail updatedMail = createMail(key, "modified content");
         testee.store(updatedMail);
+
         assertThat(testee.list()).hasSize(1);
         assertThat(testee.retrieve(key)).satisfies(actual -> checkMailEquality(actual, updatedMail));
     }
@@ -136,8 +146,10 @@ public interface MailRepositoryContract {
         String key = "mail1";
         Mail mail = createMail(key);
         testee.store(mail);
+
         mail.setAttribute(TEST_ATTRIBUTE, "newValue");
         testee.store(mail);
+
         assertThat(testee.list()).hasSize(1);
         assertThat(testee.retrieve(key)).satisfies(actual -> checkMailEquality(actual, mail));
     }


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


[3/9] james-project git commit: JAMES-2286 create a mailrepository-api project

Posted by ro...@apache.org.
JAMES-2286 create a mailrepository-api project


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

Branch: refs/heads/master
Commit: 55af312396f4731d01be68eaf565164dc0c5fbd0
Parents: 9191d3b
Author: Matthieu Baechler <ma...@apache.org>
Authored: Wed Jan 10 17:44:03 2018 +0100
Committer: benwa <bt...@linagora.com>
Committed: Mon Jan 15 16:52:08 2018 +0700

----------------------------------------------------------------------
 pom.xml                                         |   5 +
 server/data/data-api/pom.xml                    |   4 +
 .../mailrepository/api/MailRepository.java      | 106 -------------------
 .../mailrepository/mailrepository-api/pom.xml   |  62 +++++++++++
 .../mailrepository/api/MailRepository.java      | 106 +++++++++++++++++++
 server/pom.xml                                  |   2 +
 6 files changed, 179 insertions(+), 106 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/55af3123/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 22e35e1..74b22fe 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1204,6 +1204,11 @@
             </dependency>
             <dependency>
                 <groupId>${project.groupId}</groupId>
+                <artifactId>james-server-mailrepository-api</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>${project.groupId}</groupId>
                 <artifactId>james-server-mailets</artifactId>
                 <version>${project.version}</version>
             </dependency>

http://git-wip-us.apache.org/repos/asf/james-project/blob/55af3123/server/data/data-api/pom.xml
----------------------------------------------------------------------
diff --git a/server/data/data-api/pom.xml b/server/data/data-api/pom.xml
index 7052d31..26fc6ef 100644
--- a/server/data/data-api/pom.xml
+++ b/server/data/data-api/pom.xml
@@ -39,6 +39,10 @@
             <artifactId>apache-mailet-api</artifactId>
         </dependency>
         <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>james-server-mailrepository-api</artifactId>
+        </dependency>
+        <dependency>
             <groupId>com.google.guava</groupId>
             <artifactId>guava</artifactId>
         </dependency>

http://git-wip-us.apache.org/repos/asf/james-project/blob/55af3123/server/data/data-api/src/main/java/org/apache/james/mailrepository/api/MailRepository.java
----------------------------------------------------------------------
diff --git a/server/data/data-api/src/main/java/org/apache/james/mailrepository/api/MailRepository.java b/server/data/data-api/src/main/java/org/apache/james/mailrepository/api/MailRepository.java
deleted file mode 100644
index aa2ff34..0000000
--- a/server/data/data-api/src/main/java/org/apache/james/mailrepository/api/MailRepository.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.mailrepository.api;
-
-import java.util.Collection;
-import java.util.Iterator;
-
-import javax.mail.MessagingException;
-
-import org.apache.mailet.Mail;
-
-/**
- * Interface for a Repository to store Mails.
- */
-public interface MailRepository {
-
-    /**
-     * Stores a message in this repository. 
-     * 
-     * TODO: Shouldn't this return the key under which it is stored?
-     * 
-     * @param mc
-     *            the mail message to store
-     */
-    void store(Mail mc) throws MessagingException;
-
-    /**
-     * List string keys of messages in repository.
-     * 
-     * @return an <code>Iterator</code> over the list of keys in the repository
-     * 
-     */
-    Iterator<String> list() throws MessagingException;
-
-    /**
-     * Retrieves a message given a key. At the moment, keys can be obtained from
-     * list() in superinterface Store.Repository
-     * 
-     * @param key
-     *            the key of the message to retrieve
-     * @return the mail corresponding to this key, null if none exists
-     */
-    Mail retrieve(String key) throws MessagingException;
-
-    /**
-     * Removes a specified message
-     * 
-     * @param mail
-     *            the message to be removed from the repository
-     */
-    void remove(Mail mail) throws MessagingException;
-
-    /**
-     * Remove an Collection of mails from the repository
-     * 
-     * @param mails
-     *            The Collection of <code>MailImpl</code>'s to delete
-     * @since 2.2.0
-     */
-    void remove(Collection<Mail> mails) throws MessagingException;
-
-    /**
-     * Removes a message identified by key.
-     * 
-     * @param key
-     *            the key of the message to be removed from the repository
-     */
-    void remove(String key) throws MessagingException;
-
-    /**
-     * Obtains a lock on a message identified by key
-     * 
-     * @param key
-     *            the key of the message to be locked
-     * 
-     * @return true if successfully obtained the lock, false otherwise
-     */
-    boolean lock(String key) throws MessagingException;
-
-    /**
-     * Releases a lock on a message identified the key
-     * 
-     * @param key
-     *            the key of the message to be unlocked
-     * 
-     * @return true if successfully released the lock, false otherwise
-     */
-    boolean unlock(String key) throws MessagingException;
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/55af3123/server/mailrepository/mailrepository-api/pom.xml
----------------------------------------------------------------------
diff --git a/server/mailrepository/mailrepository-api/pom.xml b/server/mailrepository/mailrepository-api/pom.xml
new file mode 100644
index 0000000..2c60417
--- /dev/null
+++ b/server/mailrepository/mailrepository-api/pom.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements. See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership. The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License. You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied. See the License for the
+    specific language governing permissions and limitations
+    under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.james</groupId>
+        <artifactId>james-server</artifactId>
+        <version>3.1.0-SNAPSHOT</version>
+        <relativePath>../../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>james-server-mailrepository-api</artifactId>
+    <packaging>bundle</packaging>
+
+    <name>Apache James :: Server :: MailRepository :: API</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>apache-mailet-api</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>test-jar</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <extensions>true</extensions>
+            </plugin>
+        </plugins>
+    </build>
+</project>

http://git-wip-us.apache.org/repos/asf/james-project/blob/55af3123/server/mailrepository/mailrepository-api/src/main/java/org/apache/james/mailrepository/api/MailRepository.java
----------------------------------------------------------------------
diff --git a/server/mailrepository/mailrepository-api/src/main/java/org/apache/james/mailrepository/api/MailRepository.java b/server/mailrepository/mailrepository-api/src/main/java/org/apache/james/mailrepository/api/MailRepository.java
new file mode 100644
index 0000000..aa2ff34
--- /dev/null
+++ b/server/mailrepository/mailrepository-api/src/main/java/org/apache/james/mailrepository/api/MailRepository.java
@@ -0,0 +1,106 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.mailrepository.api;
+
+import java.util.Collection;
+import java.util.Iterator;
+
+import javax.mail.MessagingException;
+
+import org.apache.mailet.Mail;
+
+/**
+ * Interface for a Repository to store Mails.
+ */
+public interface MailRepository {
+
+    /**
+     * Stores a message in this repository. 
+     * 
+     * TODO: Shouldn't this return the key under which it is stored?
+     * 
+     * @param mc
+     *            the mail message to store
+     */
+    void store(Mail mc) throws MessagingException;
+
+    /**
+     * List string keys of messages in repository.
+     * 
+     * @return an <code>Iterator</code> over the list of keys in the repository
+     * 
+     */
+    Iterator<String> list() throws MessagingException;
+
+    /**
+     * Retrieves a message given a key. At the moment, keys can be obtained from
+     * list() in superinterface Store.Repository
+     * 
+     * @param key
+     *            the key of the message to retrieve
+     * @return the mail corresponding to this key, null if none exists
+     */
+    Mail retrieve(String key) throws MessagingException;
+
+    /**
+     * Removes a specified message
+     * 
+     * @param mail
+     *            the message to be removed from the repository
+     */
+    void remove(Mail mail) throws MessagingException;
+
+    /**
+     * Remove an Collection of mails from the repository
+     * 
+     * @param mails
+     *            The Collection of <code>MailImpl</code>'s to delete
+     * @since 2.2.0
+     */
+    void remove(Collection<Mail> mails) throws MessagingException;
+
+    /**
+     * Removes a message identified by key.
+     * 
+     * @param key
+     *            the key of the message to be removed from the repository
+     */
+    void remove(String key) throws MessagingException;
+
+    /**
+     * Obtains a lock on a message identified by key
+     * 
+     * @param key
+     *            the key of the message to be locked
+     * 
+     * @return true if successfully obtained the lock, false otherwise
+     */
+    boolean lock(String key) throws MessagingException;
+
+    /**
+     * Releases a lock on a message identified the key
+     * 
+     * @param key
+     *            the key of the message to be unlocked
+     * 
+     * @return true if successfully released the lock, false otherwise
+     */
+    boolean unlock(String key) throws MessagingException;
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/55af3123/server/pom.xml
----------------------------------------------------------------------
diff --git a/server/pom.xml b/server/pom.xml
index 3414224..11693e3 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -80,6 +80,8 @@
         <module>mailet/mailetcontainer-camel</module>
         <module>mailet/mailets</module>
 
+        <module>mailrepository/mailrepository-api</module>
+
         <module>protocols/fetchmail</module>
         <module>protocols/jmap</module>
         <module>protocols/jmap-integration-testing</module>


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


[4/9] james-project git commit: JAMES-2286 workaround for junit5/eclipse support

Posted by ro...@apache.org.
JAMES-2286 workaround for junit5/eclipse support


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

Branch: refs/heads/master
Commit: b9e082324169e397e674200d0a9b38b01d4cd079
Parents: d885ffc
Author: Matthieu Baechler <ma...@apache.org>
Authored: Thu Jan 11 11:04:28 2018 +0100
Committer: benwa <bt...@linagora.com>
Committed: Mon Jan 15 16:54:01 2018 +0700

----------------------------------------------------------------------
 pom.xml                       | 5 +++++
 server/data/data-jdbc/pom.xml | 5 +++++
 2 files changed, 10 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/b9e08232/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 8a125d2..c0b642d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -2153,6 +2153,11 @@
                 <version>${junit.plateform.version}</version>
             </dependency>
             <dependency>
+                <groupId>org.junit.platform</groupId>
+                <artifactId>junit-platform-launcher</artifactId>
+                <version>1.0.2</version>
+            </dependency>
+            <dependency>
                 <groupId>org.junit.vintage</groupId>
                 <artifactId>junit-vintage-engine</artifactId>
                 <version>${junit.vintage.version}</version>

http://git-wip-us.apache.org/repos/asf/james-project/blob/b9e08232/server/data/data-jdbc/pom.xml
----------------------------------------------------------------------
diff --git a/server/data/data-jdbc/pom.xml b/server/data/data-jdbc/pom.xml
index 6bd59e3..a0532c2 100644
--- a/server/data/data-jdbc/pom.xml
+++ b/server/data/data-jdbc/pom.xml
@@ -135,6 +135,11 @@
             <scope>test</scope>
         </dependency>
         <dependency>
+            <groupId>org.junit.platform</groupId>
+            <artifactId>junit-platform-launcher</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>org.junit.vintage</groupId>
             <artifactId>junit-vintage-engine</artifactId>
             <scope>test</scope>


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


[2/9] james-project git commit: JAMES-2286 port AbstractMailRepositoryTest to a junit5 contract class

Posted by ro...@apache.org.
JAMES-2286 port AbstractMailRepositoryTest to a junit5 contract class


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

Branch: refs/heads/master
Commit: d8587c255eec47946f59bff325c084a87bcad016
Parents: 55af312
Author: Matthieu Baechler <ma...@apache.org>
Authored: Wed Jan 10 17:55:50 2018 +0100
Committer: benwa <bt...@linagora.com>
Committed: Mon Jan 15 16:52:08 2018 +0700

----------------------------------------------------------------------
 pom.xml                                         |  10 ++
 .../mailrepository/mailrepository-api/pom.xml   |  15 ++
 .../mailrepository/MailRepositoryContract.java  | 145 +++++++++++++++++++
 3 files changed, 170 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/d8587c25/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 74b22fe..3d46e7e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -2134,6 +2134,16 @@
                 <version>${jmock.version}</version>
             </dependency>
             <dependency>
+                <groupId>org.junit.jupiter</groupId>
+                <artifactId>junit-jupiter-engine</artifactId>
+                <version>5.0.2</version>
+            </dependency>
+            <dependency>
+                <groupId>org.junit.vintage</groupId>
+                <artifactId>junit-vintage-engine</artifactId>
+                <version>4.12.2</version>
+            </dependency>
+            <dependency>
                 <groupId>org.mnode.ical4j</groupId>
                 <artifactId>ical4j</artifactId>
                 <version>${ical4j.version}</version>

http://git-wip-us.apache.org/repos/asf/james-project/blob/d8587c25/server/mailrepository/mailrepository-api/pom.xml
----------------------------------------------------------------------
diff --git a/server/mailrepository/mailrepository-api/pom.xml b/server/mailrepository/mailrepository-api/pom.xml
index 2c60417..b2fc1e7 100644
--- a/server/mailrepository/mailrepository-api/pom.xml
+++ b/server/mailrepository/mailrepository-api/pom.xml
@@ -37,6 +37,21 @@
             <groupId>${project.groupId}</groupId>
             <artifactId>apache-mailet-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>james-server-core</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.assertj</groupId>
+            <artifactId>assertj-core</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-engine</artifactId>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
     <build>

http://git-wip-us.apache.org/repos/asf/james-project/blob/d8587c25/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java
----------------------------------------------------------------------
diff --git a/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java b/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java
new file mode 100644
index 0000000..fc1ea26
--- /dev/null
+++ b/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java
@@ -0,0 +1,145 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.mailrepository;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.jupiter.api.Assertions.assertAll;
+
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+import java.util.List;
+import java.util.StringJoiner;
+
+import javax.mail.MessagingException;
+
+import org.apache.james.core.MailAddress;
+import org.apache.james.mailrepository.api.MailRepository;
+import org.apache.james.mime4j.io.InputStreams;
+import org.apache.james.server.core.MailImpl;
+import org.apache.mailet.Mail;
+import org.junit.jupiter.api.Test;
+
+import com.google.common.collect.ImmutableList;
+
+public interface MailRepositoryContract {
+
+    String TEST_ATTRIBUTE = "testAttribute";
+
+    default  Mail createMail(String name) throws MessagingException {
+        return createMail(name, "original body");
+    }
+
+    default  Mail createMail(String name, String body) throws MessagingException {
+        InputStream mailContent = generateMailContent(body);
+        List<MailAddress> recipients = ImmutableList
+            .of(new MailAddress("rec1@domain.com"),
+                new MailAddress("rec2@domain.com"));
+        MailAddress sender = new MailAddress("sender@domain.com");
+        Mail mail = new MailImpl(name, sender, recipients, mailContent);
+        mail.setAttribute(TEST_ATTRIBUTE, "testValue");
+        return mail;
+    }
+
+
+    default InputStream generateMailContent(String body) {
+        String headers = new StringJoiner("\r\n")
+            .add("Subject: test")
+            .add("Content-Type: text/plain")
+            .toString();
+        String headerBodySeparator = "\r\n\r\n";
+        String end = "\r\n.\r\n";
+        return InputStreams.create(headers + headerBodySeparator + body + end, StandardCharsets.UTF_8);
+    }
+
+    default void checkMailEquality(Mail actual, Mail expected) {
+        assertAll(
+            () -> assertThat(actual.getMessage().getContent()).isEqualTo(expected.getMessage().getContent()),
+            () -> assertThat(actual.getMessageSize()).isEqualTo(expected.getMessageSize()),
+            () -> assertThat(actual.getName()).isEqualTo(expected.getName()),
+            () -> assertThat(actual.getState()).isEqualTo(expected.getState()),
+            () -> assertThat(actual.getAttribute(TEST_ATTRIBUTE)).isEqualTo(expected.getAttribute(TEST_ATTRIBUTE))
+        );
+    }
+
+    MailRepository retrieveRepository() throws Exception;
+
+    @Test
+    default void storeRegularMailShouldNotFail() throws Exception {
+        MailRepository testee = retrieveRepository();
+        Mail email = createMail("mail1");
+        testee.store(email);
+    }
+
+    @Test
+    default void retrieveShouldGetStoredMail() throws Exception {
+        MailRepository testee = retrieveRepository();
+        Mail email = createMail("mail1");
+        testee.store(email);
+        assertThat(testee.retrieve("mail1")).satisfies(actual -> checkMailEquality(actual, email));
+    }
+
+    @Test
+    default void newlyCreatedRepositoryShouldNotContainAnyMail() throws Exception {
+        MailRepository testee = retrieveRepository();
+        assertThat(testee.list()).isEmpty();
+    }
+
+    @Test
+    default void retrievingUnknownMailShouldReturnNull() throws Exception {
+        MailRepository testee = retrieveRepository();
+        assertThat(testee.retrieve("random")).isNull();
+    }
+
+    @Test
+    default void removingUnknownMailShouldHaveNoEffect() throws Exception {
+        MailRepository testee = retrieveRepository();
+        testee.remove("random");
+    }
+
+    @Test
+    default void listShouldReturnStoredMailsKeys() throws Exception {
+        MailRepository testee = retrieveRepository();
+        testee.store(createMail("mail1"));
+        testee.store(createMail("mail2"));
+        assertThat(testee.list()).containsExactly("mail1", "mail2");
+    }
+
+    @Test
+    default void storingMessageWithSameKeyTwiceShouldUpdateMessageContent() throws Exception {
+        MailRepository testee = retrieveRepository();
+        testee.store(createMail("mail1"));
+        Mail updatedMail = createMail("mail1", "modified content");
+        testee.store(updatedMail);
+        assertThat(testee.list()).hasSize(1);
+        assertThat(testee.retrieve("mail1")).satisfies(actual -> checkMailEquality(actual, updatedMail));
+    }
+
+    @Test
+    default void storingMessageWithSameKeyTwiceShouldUpdateMessageAttributes() throws Exception {
+        MailRepository testee = retrieveRepository();
+        Mail mail = createMail("mail1");
+        testee.store(mail);
+        mail.setAttribute(TEST_ATTRIBUTE, "newValue");
+        testee.store(mail);
+        assertThat(testee.list()).hasSize(1);
+        assertThat(testee.retrieve("mail1")).satisfies(actual -> checkMailEquality(actual, mail));
+    }
+
+}


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


[9/9] james-project git commit: JAMES-2286 move MimeMessageBuilder to core

Posted by ro...@apache.org.
JAMES-2286 move MimeMessageBuilder to core


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

Branch: refs/heads/master
Commit: 3f0ba0bed42c1117faceef8fda8368e1b11c3651
Parents: b9e0823
Author: Matthieu Baechler <ma...@apache.org>
Authored: Fri Jan 12 14:35:47 2018 +0100
Committer: benwa <bt...@linagora.com>
Committed: Mon Jan 15 16:54:02 2018 +0700

----------------------------------------------------------------------
 .../james/core/builder/MimeMessageBuilder.java  | 399 +++++++++++++++++++
 .../AutomaticallySentMailDetectorImplTest.java  |   2 +-
 .../org/apache/mailet/base/test/FakeMail.java   |   1 +
 .../org/apache/mailet/base/test/MailUtil.java   |   1 +
 .../mailet/base/test/MimeMessageBuilder.java    | 399 -------------------
 .../transport/mailets/ICALToHeadersTest.java    |   3 +-
 .../mailets/ICALToJsonAttributeTest.java        |   3 +-
 .../transport/mailets/ContactExtractorTest.java |   2 +-
 .../MailAttributesListToMimeHeadersTest.java    |   2 +-
 .../MailAttributesToMimeHeadersTest.java        |   2 +-
 .../mailets/RemoveMimeHeaderByPrefixTest.java   |   2 +-
 .../transport/mailets/RemoveMimeHeaderTest.java |   2 +-
 .../transport/mailets/StripAttachmentTest.java  |   2 +-
 .../mailets/UseHeaderRecipientsTest.java        |   2 +-
 .../mailets/utils/MimeMessageUtilsTest.java     |   2 +-
 .../james/transport/matchers/HasHeaderTest.java |   2 +-
 .../matchers/HasHeaderWithPrefixTest.java       |   2 +-
 .../transport/matchers/HasMimeTypeTest.java     |   2 +-
 .../transport/matchers/TooManyLinesTest.java    |   2 +-
 .../james/transport/mailets/AddFooterTest.java  |   2 +-
 .../mailets/AmqpForwardAttachmentTest.java      |   2 +-
 .../transport/mailets/ContactExtractorTest.java |   2 +-
 .../transport/mailets/GroupMappingTest.java     |   2 +-
 .../mailets/ICSAttachmentWorkflowTest.java      |   2 +-
 .../transport/mailets/SpamAssassinTest.java     |   2 +-
 .../transport/mailets/StripAttachmentTest.java  |   2 +-
 .../impl/JamesMailetContextTest.java            |   2 +-
 .../james/transport/mailets/BounceTest.java     |   2 +-
 .../transport/mailets/SpamAssassinTest.java     |   2 +-
 .../mailets/delivery/LocalDeliveryTest.java     |   2 +-
 .../mailets/delivery/MailDispatcherTest.java    |   2 +-
 .../mailets/delivery/MailboxAppenderTest.java   |   2 +-
 .../mailets/delivery/SieveIntegrationTest.java  |   4 +-
 .../mailets/delivery/SimpleMailStoreTest.java   |   2 +-
 .../mailets/delivery/ToRecipientFolderTest.java |   2 +-
 .../managesieve/ManageSieveMailetTestCase.java  |   2 +-
 .../mailrepository/MailRepositoryContract.java  |   1 +
 .../integration/SetMessagesMethodTest.java      |   2 +-
 .../TextCalendarBodyToAttachmentTest.java       |   2 +-
 39 files changed, 437 insertions(+), 436 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/3f0ba0be/core/src/main/java/org/apache/james/core/builder/MimeMessageBuilder.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/james/core/builder/MimeMessageBuilder.java b/core/src/main/java/org/apache/james/core/builder/MimeMessageBuilder.java
new file mode 100644
index 0000000..42b845a
--- /dev/null
+++ b/core/src/main/java/org/apache/james/core/builder/MimeMessageBuilder.java
@@ -0,0 +1,399 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.core.builder;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.Optional;
+import java.util.Properties;
+
+import javax.activation.DataHandler;
+import javax.mail.BodyPart;
+import javax.mail.Message;
+import javax.mail.MessagingException;
+import javax.mail.Session;
+import javax.mail.internet.AddressException;
+import javax.mail.internet.InternetAddress;
+import javax.mail.internet.InternetHeaders;
+import javax.mail.internet.MimeBodyPart;
+import javax.mail.internet.MimeMessage;
+import javax.mail.internet.MimeMultipart;
+import javax.mail.util.ByteArrayDataSource;
+
+import org.apache.commons.io.IOUtils;
+
+import com.github.fge.lambdas.Throwing;
+import com.github.steveash.guavate.Guavate;
+import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableList;
+
+public class MimeMessageBuilder {
+
+    public static class Header {
+        private final String name;
+        private final String value;
+
+        public Header(String name, String value) {
+            this.name = name;
+            this.value = value;
+        }
+    }
+
+    public static class MultipartBuilder {
+        private ImmutableList.Builder<BodyPart> bodyParts = ImmutableList.builder();
+
+        public MultipartBuilder addBody(BodyPart bodyPart) {
+            this.bodyParts.add(bodyPart);
+            return this;
+        }
+
+        public MultipartBuilder addBody(BodyPartBuilder bodyPart) throws IOException, MessagingException {
+            this.bodyParts.add(bodyPart.build());
+            return this;
+        }
+
+        public MultipartBuilder addBodies(BodyPart... bodyParts) {
+            this.bodyParts.addAll(Arrays.asList(bodyParts));
+            return this;
+        }
+
+        public MultipartBuilder addBodies(BodyPartBuilder... bodyParts) {
+            this.bodyParts.addAll(Arrays.stream(bodyParts)
+                .map(Throwing.function(BodyPartBuilder::build).sneakyThrow())
+                .collect(Guavate.toImmutableList()));
+            return this;
+        }
+
+        public MimeMultipart build() throws MessagingException {
+            MimeMultipart multipart = new MimeMultipart();
+            List<BodyPart> bodyParts = this.bodyParts.build();
+            for (BodyPart bodyPart : bodyParts) {
+                multipart.addBodyPart(bodyPart);
+            }
+            return multipart;
+        }
+    }
+
+    public static class BodyPartBuilder {
+        public static final String DEFAULT_TEXT_PLAIN_UTF8_TYPE = "text/plain; charset=UTF-8";
+        public static final String DEFAULT_VALUE = "";
+
+        private Optional<String> cid = Optional.empty();
+        private Optional<String> filename = Optional.empty();
+        private ImmutableList.Builder<Header> headers = ImmutableList.builder();
+        private Optional<String> disposition = Optional.empty();
+        private Optional<String> dataAsString = Optional.empty();
+        private Optional<byte[]> dataAsBytes = Optional.empty();
+        private Optional<String> type = Optional.empty();
+
+        public BodyPartBuilder cid(String cid) {
+            this.cid = Optional.of(cid);
+            return this;
+        }
+
+        public BodyPartBuilder filename(String filename) {
+            this.filename = Optional.of(filename);
+            return this;
+        }
+
+        public BodyPartBuilder disposition(String disposition) {
+            this.disposition = Optional.of(disposition);
+            return this;
+        }
+
+        public BodyPartBuilder data(String data) {
+            this.dataAsString = Optional.of(data);
+            return this;
+        }
+
+        public BodyPartBuilder data(byte[] data) {
+            this.dataAsBytes = Optional.of(data);
+            return this;
+        }
+
+        public BodyPartBuilder type(String type) {
+            this.type = Optional.of(type);
+            return this;
+        }
+
+        public BodyPartBuilder addHeader(String name, String value) {
+            this.headers.add(new Header(name, value));
+            return this;
+        }
+
+        public BodyPartBuilder addHeaders(Header... headers) {
+            return addHeaders(Arrays.asList(headers));
+        }
+
+        public BodyPartBuilder addHeaders(Collection<Header> headers) {
+            this.headers.addAll(headers);
+            return this;
+        }
+
+        public BodyPart build() throws IOException, MessagingException {
+            Preconditions.checkState(!(dataAsString.isPresent() && dataAsBytes.isPresent()), "Can not specify data as bytes and data as string at the same time");
+            MimeBodyPart bodyPart = new MimeBodyPart();
+            if (dataAsBytes.isPresent()) {
+                bodyPart.setDataHandler(
+                    new DataHandler(
+                        new ByteArrayDataSource(
+                            dataAsBytes.get(),
+                            type.orElse(DEFAULT_TEXT_PLAIN_UTF8_TYPE))
+                    ));
+            } else {
+                bodyPart.setDataHandler(
+                    new DataHandler(
+                        new ByteArrayDataSource(
+                            dataAsString.orElse(DEFAULT_VALUE),
+                            type.orElse(DEFAULT_TEXT_PLAIN_UTF8_TYPE))
+                    ));
+            }
+            if (filename.isPresent()) {
+                bodyPart.setFileName(filename.get());
+            }
+            if (cid.isPresent()) {
+                bodyPart.setContentID(cid.get());
+            }
+            if (disposition.isPresent()) {
+                bodyPart.setDisposition(disposition.get());
+            }
+            List<Header> headerList = headers.build();
+            for (Header header: headerList) {
+                bodyPart.addHeader(header.name, header.value);
+            }
+            return bodyPart;
+        }
+    }
+
+    public static MimeMessage defaultMimeMessage() {
+        return new MimeMessage(Session.getDefaultInstance(new Properties()));
+    }
+
+    public static MimeMessage mimeMessageFromStream(InputStream inputStream) throws MessagingException {
+        return new MimeMessage(Session.getDefaultInstance(new Properties()), inputStream);
+    }
+
+    public static MimeMessage mimeMessageFromBytes(byte[] bytes) throws MessagingException {
+        return mimeMessageFromStream(new ByteArrayInputStream(bytes));
+    }
+
+    public static MimeMessageBuilder mimeMessageBuilder() {
+        return new MimeMessageBuilder();
+    }
+
+    public static MultipartBuilder multipartBuilder() {
+        return new MultipartBuilder();
+    }
+
+    public static BodyPartBuilder bodyPartBuilder() {
+        return new BodyPartBuilder();
+    }
+
+    public static BodyPart bodyPartFromBytes(byte[] bytes) throws MessagingException {
+        return new MimeBodyPart(new ByteArrayInputStream(bytes));
+    }
+
+    private Optional<String> text = Optional.empty();
+    private Optional<String> textContentType = Optional.empty();
+    private Optional<String> subject = Optional.empty();
+    private Optional<InternetAddress> sender = Optional.empty();
+    private Optional<MimeMultipart> content = Optional.empty();
+    private ImmutableList.Builder<InternetAddress> from = ImmutableList.builder();
+    private ImmutableList.Builder<InternetAddress> cc = ImmutableList.builder();
+    private ImmutableList.Builder<InternetAddress> to = ImmutableList.builder();
+    private ImmutableList.Builder<InternetAddress> bcc = ImmutableList.builder();
+    private ImmutableList.Builder<Header> headers = ImmutableList.builder();
+
+    public MimeMessageBuilder setText(String text) {
+        this.text = Optional.of(text);
+        return this;
+    }
+
+    public MimeMessageBuilder setText(String text, String contentType) {
+        this.text = Optional.of(text);
+        this.textContentType = Optional.of(contentType);
+        return this;
+    }
+
+    public MimeMessageBuilder addToRecipient(String text) throws AddressException {
+        this.to.add(new InternetAddress(text));
+        return this;
+    }
+
+    public MimeMessageBuilder setSubject(String subject) {
+        this.subject = Optional.ofNullable(subject);
+        return this;
+    }
+
+    public MimeMessageBuilder setSender(String sender) throws AddressException {
+        this.sender = Optional.of(new InternetAddress(sender));
+        return this;
+    }
+
+    public MimeMessageBuilder addFrom(String from) throws AddressException {
+        this.from.add(new InternetAddress(from));
+        return this;
+    }
+
+    public MimeMessageBuilder addFrom(InternetAddress... from) throws AddressException {
+        this.from.addAll(Arrays.asList(from));
+        return this;
+    }
+
+    public MimeMessageBuilder addCcRecipient(String text) throws AddressException {
+        this.cc.add(new InternetAddress(text));
+        return this;
+    }
+
+    public MimeMessageBuilder addBccRecipient(String text) throws AddressException {
+        this.bcc.add(new InternetAddress(text));
+        return this;
+    }
+
+    public MimeMessageBuilder addToRecipient(String... tos) throws AddressException {
+        this.to.addAll(Arrays.stream(tos)
+            .map(Throwing.function(InternetAddress::new))
+            .collect(Guavate.toImmutableList()));
+        return this;
+    }
+
+    public MimeMessageBuilder addCcRecipient(String... ccs) throws AddressException {
+        this.cc.addAll(Arrays.stream(ccs)
+            .map(Throwing.function(InternetAddress::new))
+            .collect(Guavate.toImmutableList()));
+        return this;
+    }
+
+    public MimeMessageBuilder addBccRecipient(String... bccs) throws AddressException {
+        this.bcc.addAll(Arrays.stream(bccs)
+            .map(Throwing.function(InternetAddress::new))
+            .collect(Guavate.toImmutableList()));
+        return this;
+    }
+
+    public MimeMessageBuilder addToRecipient(InternetAddress... tos) throws AddressException {
+        this.to.addAll(Arrays.asList(tos));
+        return this;
+    }
+
+    public MimeMessageBuilder addCcRecipient(InternetAddress... ccs) throws AddressException {
+        this.cc.addAll(Arrays.asList(ccs));
+        return this;
+    }
+
+    public MimeMessageBuilder addBccRecipient(InternetAddress... bccs) throws AddressException {
+        this.bcc.addAll(Arrays.asList(bccs));
+        return this;
+    }
+
+    public MimeMessageBuilder setContent(MimeMultipart mimeMultipart) {
+        this.content = Optional.of(mimeMultipart);
+        return this;
+    }
+
+    public MimeMessageBuilder setContent(MultipartBuilder mimeMultipart) throws MessagingException {
+        this.content = Optional.of(mimeMultipart.build());
+        return this;
+    }
+
+    public MimeMessageBuilder setMultipartWithBodyParts(BodyPart... bobyParts) throws MessagingException {
+        this.content = Optional.of(MimeMessageBuilder.multipartBuilder()
+            .addBodies(bobyParts)
+            .build());
+        return this;
+    }
+
+    public MimeMessageBuilder setMultipartWithBodyParts(BodyPartBuilder... bobyParts) throws MessagingException {
+        this.content = Optional.of(MimeMessageBuilder.multipartBuilder()
+            .addBodies(bobyParts)
+            .build());
+        return this;
+    }
+
+    public MimeMessageBuilder setMultipartWithSubMessage(MimeMessage mimeMessage) throws MessagingException, IOException {
+        return setMultipartWithBodyParts(
+            new MimeBodyPart(
+                new InternetHeaders(new ByteArrayInputStream("Content-Type: multipart/mixed".getBytes(StandardCharsets.US_ASCII))),
+                IOUtils.toByteArray(mimeMessage.getInputStream())));
+    }
+
+    public MimeMessageBuilder setMultipartWithSubMessage(MimeMessageBuilder mimeMessage) throws MessagingException, IOException {
+        return setMultipartWithSubMessage(mimeMessage.build());
+    }
+
+    public MimeMessageBuilder addHeader(String name, String value) {
+        this.headers.add(new Header(name, value));
+        return this;
+    }
+
+    public MimeMessageBuilder addHeaders(Header... headers) {
+        return addHeaders(Arrays.asList(headers));
+    }
+
+    public MimeMessageBuilder addHeaders(Collection<Header> headers) {
+        this.headers.addAll(headers);
+        return this;
+    }
+
+    public MimeMessage build() throws MessagingException {
+        Preconditions.checkState(!(text.isPresent() && content.isPresent()), "Can not get at the same time a text and a content");
+        MimeMessage mimeMessage = new MimeMessage(Session.getInstance(new Properties()));
+        if (text.isPresent()) {
+            mimeMessage.setContent(text.get(), textContentType.orElse("text/plain"));
+        }
+        if (content.isPresent()) {
+            mimeMessage.setContent(content.get());
+        }
+        if (sender.isPresent()) {
+            mimeMessage.setSender(sender.get());
+        }
+        if (subject.isPresent()) {
+            mimeMessage.setSubject(subject.get());
+        }
+        ImmutableList<InternetAddress> fromAddresses = from.build();
+        if (!fromAddresses.isEmpty()) {
+            mimeMessage.addFrom(fromAddresses.toArray(new InternetAddress[fromAddresses.size()]));
+        }
+        List<InternetAddress> toAddresses = to.build();
+        if (!toAddresses.isEmpty()) {
+            mimeMessage.setRecipients(Message.RecipientType.TO, toAddresses.toArray(new InternetAddress[toAddresses.size()]));
+        }
+        List<InternetAddress> ccAddresses = cc.build();
+        if (!ccAddresses.isEmpty()) {
+            mimeMessage.setRecipients(Message.RecipientType.CC, ccAddresses.toArray(new InternetAddress[ccAddresses.size()]));
+        }
+        List<InternetAddress> bccAddresses = bcc.build();
+        if (!bccAddresses.isEmpty()) {
+            mimeMessage.setRecipients(Message.RecipientType.BCC, bccAddresses.toArray(new InternetAddress[bccAddresses.size()]));
+        }
+        List<Header> headerList = headers.build();
+        for (Header header: headerList) {
+            mimeMessage.addHeader(header.name, header.value);
+        }
+        mimeMessage.saveChanges();
+        return mimeMessage;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/3f0ba0be/mailet/base/src/test/java/org/apache/mailet/base/AutomaticallySentMailDetectorImplTest.java
----------------------------------------------------------------------
diff --git a/mailet/base/src/test/java/org/apache/mailet/base/AutomaticallySentMailDetectorImplTest.java b/mailet/base/src/test/java/org/apache/mailet/base/AutomaticallySentMailDetectorImplTest.java
index 6e2c135..864535f 100644
--- a/mailet/base/src/test/java/org/apache/mailet/base/AutomaticallySentMailDetectorImplTest.java
+++ b/mailet/base/src/test/java/org/apache/mailet/base/AutomaticallySentMailDetectorImplTest.java
@@ -32,8 +32,8 @@ import javax.mail.internet.MimeMessage;
 import javax.mail.internet.MimeMultipart;
 import javax.mail.util.ByteArrayDataSource;
 
+import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.mailet.base.test.FakeMail;
-import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.Test;
 
 public class AutomaticallySentMailDetectorImplTest {

http://git-wip-us.apache.org/repos/asf/james-project/blob/3f0ba0be/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMail.java
----------------------------------------------------------------------
diff --git a/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMail.java b/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMail.java
index 23190b2..04530a8 100644
--- a/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMail.java
+++ b/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMail.java
@@ -39,6 +39,7 @@ import javax.mail.internet.InternetAddress;
 import javax.mail.internet.MimeMessage;
 
 import org.apache.james.core.MailAddress;
+import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.mailet.Mail;
 import org.apache.mailet.PerRecipientHeaders;
 import org.apache.mailet.PerRecipientHeaders.Header;

http://git-wip-us.apache.org/repos/asf/james-project/blob/3f0ba0be/mailet/base/src/test/java/org/apache/mailet/base/test/MailUtil.java
----------------------------------------------------------------------
diff --git a/mailet/base/src/test/java/org/apache/mailet/base/test/MailUtil.java b/mailet/base/src/test/java/org/apache/mailet/base/test/MailUtil.java
index ea432be..ecbee4f 100644
--- a/mailet/base/src/test/java/org/apache/mailet/base/test/MailUtil.java
+++ b/mailet/base/src/test/java/org/apache/mailet/base/test/MailUtil.java
@@ -26,6 +26,7 @@ import javax.mail.MessagingException;
 import javax.mail.internet.MimeMessage;
 
 import org.apache.james.core.MailAddress;
+import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.mailet.Mail;
 
 /**

http://git-wip-us.apache.org/repos/asf/james-project/blob/3f0ba0be/mailet/base/src/test/java/org/apache/mailet/base/test/MimeMessageBuilder.java
----------------------------------------------------------------------
diff --git a/mailet/base/src/test/java/org/apache/mailet/base/test/MimeMessageBuilder.java b/mailet/base/src/test/java/org/apache/mailet/base/test/MimeMessageBuilder.java
deleted file mode 100644
index 16e965a..0000000
--- a/mailet/base/src/test/java/org/apache/mailet/base/test/MimeMessageBuilder.java
+++ /dev/null
@@ -1,399 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.mailet.base.test;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.charset.StandardCharsets;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.Optional;
-import java.util.Properties;
-
-import javax.activation.DataHandler;
-import javax.mail.BodyPart;
-import javax.mail.Message;
-import javax.mail.MessagingException;
-import javax.mail.Session;
-import javax.mail.internet.AddressException;
-import javax.mail.internet.InternetAddress;
-import javax.mail.internet.InternetHeaders;
-import javax.mail.internet.MimeBodyPart;
-import javax.mail.internet.MimeMessage;
-import javax.mail.internet.MimeMultipart;
-import javax.mail.util.ByteArrayDataSource;
-
-import org.apache.commons.io.IOUtils;
-
-import com.github.fge.lambdas.Throwing;
-import com.github.steveash.guavate.Guavate;
-import com.google.common.base.Preconditions;
-import com.google.common.collect.ImmutableList;
-
-public class MimeMessageBuilder {
-
-    public static class Header {
-        private final String name;
-        private final String value;
-
-        public Header(String name, String value) {
-            this.name = name;
-            this.value = value;
-        }
-    }
-
-    public static class MultipartBuilder {
-        private ImmutableList.Builder<BodyPart> bodyParts = ImmutableList.builder();
-
-        public MultipartBuilder addBody(BodyPart bodyPart) {
-            this.bodyParts.add(bodyPart);
-            return this;
-        }
-
-        public MultipartBuilder addBody(BodyPartBuilder bodyPart) throws IOException, MessagingException {
-            this.bodyParts.add(bodyPart.build());
-            return this;
-        }
-
-        public MultipartBuilder addBodies(BodyPart... bodyParts) {
-            this.bodyParts.addAll(Arrays.asList(bodyParts));
-            return this;
-        }
-
-        public MultipartBuilder addBodies(BodyPartBuilder... bodyParts) {
-            this.bodyParts.addAll(Arrays.stream(bodyParts)
-                .map(Throwing.function(BodyPartBuilder::build).sneakyThrow())
-                .collect(Guavate.toImmutableList()));
-            return this;
-        }
-
-        public MimeMultipart build() throws MessagingException {
-            MimeMultipart multipart = new MimeMultipart();
-            List<BodyPart> bodyParts = this.bodyParts.build();
-            for (BodyPart bodyPart : bodyParts) {
-                multipart.addBodyPart(bodyPart);
-            }
-            return multipart;
-        }
-    }
-
-    public static class BodyPartBuilder {
-        public static final String DEFAULT_TEXT_PLAIN_UTF8_TYPE = "text/plain; charset=UTF-8";
-        public static final String DEFAULT_VALUE = "";
-
-        private Optional<String> cid = Optional.empty();
-        private Optional<String> filename = Optional.empty();
-        private ImmutableList.Builder<Header> headers = ImmutableList.builder();
-        private Optional<String> disposition = Optional.empty();
-        private Optional<String> dataAsString = Optional.empty();
-        private Optional<byte[]> dataAsBytes = Optional.empty();
-        private Optional<String> type = Optional.empty();
-
-        public BodyPartBuilder cid(String cid) {
-            this.cid = Optional.of(cid);
-            return this;
-        }
-
-        public BodyPartBuilder filename(String filename) {
-            this.filename = Optional.of(filename);
-            return this;
-        }
-
-        public BodyPartBuilder disposition(String disposition) {
-            this.disposition = Optional.of(disposition);
-            return this;
-        }
-
-        public BodyPartBuilder data(String data) {
-            this.dataAsString = Optional.of(data);
-            return this;
-        }
-
-        public BodyPartBuilder data(byte[] data) {
-            this.dataAsBytes = Optional.of(data);
-            return this;
-        }
-
-        public BodyPartBuilder type(String type) {
-            this.type = Optional.of(type);
-            return this;
-        }
-
-        public BodyPartBuilder addHeader(String name, String value) {
-            this.headers.add(new Header(name, value));
-            return this;
-        }
-
-        public BodyPartBuilder addHeaders(Header... headers) {
-            return addHeaders(Arrays.asList(headers));
-        }
-
-        public BodyPartBuilder addHeaders(Collection<Header> headers) {
-            this.headers.addAll(headers);
-            return this;
-        }
-
-        public BodyPart build() throws IOException, MessagingException {
-            Preconditions.checkState(!(dataAsString.isPresent() && dataAsBytes.isPresent()), "Can not specify data as bytes and data as string at the same time");
-            MimeBodyPart bodyPart = new MimeBodyPart();
-            if (dataAsBytes.isPresent()) {
-                bodyPart.setDataHandler(
-                    new DataHandler(
-                        new ByteArrayDataSource(
-                            dataAsBytes.get(),
-                            type.orElse(DEFAULT_TEXT_PLAIN_UTF8_TYPE))
-                    ));
-            } else {
-                bodyPart.setDataHandler(
-                    new DataHandler(
-                        new ByteArrayDataSource(
-                            dataAsString.orElse(DEFAULT_VALUE),
-                            type.orElse(DEFAULT_TEXT_PLAIN_UTF8_TYPE))
-                    ));
-            }
-            if (filename.isPresent()) {
-                bodyPart.setFileName(filename.get());
-            }
-            if (cid.isPresent()) {
-                bodyPart.setContentID(cid.get());
-            }
-            if (disposition.isPresent()) {
-                bodyPart.setDisposition(disposition.get());
-            }
-            List<Header> headerList = headers.build();
-            for (Header header: headerList) {
-                bodyPart.addHeader(header.name, header.value);
-            }
-            return bodyPart;
-        }
-    }
-
-    public static MimeMessage defaultMimeMessage() {
-        return new MimeMessage(Session.getDefaultInstance(new Properties()));
-    }
-
-    public static MimeMessage mimeMessageFromStream(InputStream inputStream) throws MessagingException {
-        return new MimeMessage(Session.getDefaultInstance(new Properties()), inputStream);
-    }
-
-    public static MimeMessage mimeMessageFromBytes(byte[] bytes) throws MessagingException {
-        return mimeMessageFromStream(new ByteArrayInputStream(bytes));
-    }
-
-    public static MimeMessageBuilder mimeMessageBuilder() {
-        return new MimeMessageBuilder();
-    }
-
-    public static MultipartBuilder multipartBuilder() {
-        return new MultipartBuilder();
-    }
-
-    public static BodyPartBuilder bodyPartBuilder() {
-        return new BodyPartBuilder();
-    }
-
-    public static BodyPart bodyPartFromBytes(byte[] bytes) throws MessagingException {
-        return new MimeBodyPart(new ByteArrayInputStream(bytes));
-    }
-
-    private Optional<String> text = Optional.empty();
-    private Optional<String> textContentType = Optional.empty();
-    private Optional<String> subject = Optional.empty();
-    private Optional<InternetAddress> sender = Optional.empty();
-    private Optional<MimeMultipart> content = Optional.empty();
-    private ImmutableList.Builder<InternetAddress> from = ImmutableList.builder();
-    private ImmutableList.Builder<InternetAddress> cc = ImmutableList.builder();
-    private ImmutableList.Builder<InternetAddress> to = ImmutableList.builder();
-    private ImmutableList.Builder<InternetAddress> bcc = ImmutableList.builder();
-    private ImmutableList.Builder<Header> headers = ImmutableList.builder();
-
-    public MimeMessageBuilder setText(String text) {
-        this.text = Optional.of(text);
-        return this;
-    }
-
-    public MimeMessageBuilder setText(String text, String contentType) {
-        this.text = Optional.of(text);
-        this.textContentType = Optional.of(contentType);
-        return this;
-    }
-
-    public MimeMessageBuilder addToRecipient(String text) throws AddressException {
-        this.to.add(new InternetAddress(text));
-        return this;
-    }
-
-    public MimeMessageBuilder setSubject(String subject) {
-        this.subject = Optional.ofNullable(subject);
-        return this;
-    }
-
-    public MimeMessageBuilder setSender(String sender) throws AddressException {
-        this.sender = Optional.of(new InternetAddress(sender));
-        return this;
-    }
-
-    public MimeMessageBuilder addFrom(String from) throws AddressException {
-        this.from.add(new InternetAddress(from));
-        return this;
-    }
-
-    public MimeMessageBuilder addFrom(InternetAddress... from) throws AddressException {
-        this.from.addAll(Arrays.asList(from));
-        return this;
-    }
-
-    public MimeMessageBuilder addCcRecipient(String text) throws AddressException {
-        this.cc.add(new InternetAddress(text));
-        return this;
-    }
-
-    public MimeMessageBuilder addBccRecipient(String text) throws AddressException {
-        this.bcc.add(new InternetAddress(text));
-        return this;
-    }
-
-    public MimeMessageBuilder addToRecipient(String... tos) throws AddressException {
-        this.to.addAll(Arrays.stream(tos)
-            .map(Throwing.function(InternetAddress::new))
-            .collect(Guavate.toImmutableList()));
-        return this;
-    }
-
-    public MimeMessageBuilder addCcRecipient(String... ccs) throws AddressException {
-        this.cc.addAll(Arrays.stream(ccs)
-            .map(Throwing.function(InternetAddress::new))
-            .collect(Guavate.toImmutableList()));
-        return this;
-    }
-
-    public MimeMessageBuilder addBccRecipient(String... bccs) throws AddressException {
-        this.bcc.addAll(Arrays.stream(bccs)
-            .map(Throwing.function(InternetAddress::new))
-            .collect(Guavate.toImmutableList()));
-        return this;
-    }
-
-    public MimeMessageBuilder addToRecipient(InternetAddress... tos) throws AddressException {
-        this.to.addAll(Arrays.asList(tos));
-        return this;
-    }
-
-    public MimeMessageBuilder addCcRecipient(InternetAddress... ccs) throws AddressException {
-        this.cc.addAll(Arrays.asList(ccs));
-        return this;
-    }
-
-    public MimeMessageBuilder addBccRecipient(InternetAddress... bccs) throws AddressException {
-        this.bcc.addAll(Arrays.asList(bccs));
-        return this;
-    }
-
-    public MimeMessageBuilder setContent(MimeMultipart mimeMultipart) {
-        this.content = Optional.of(mimeMultipart);
-        return this;
-    }
-
-    public MimeMessageBuilder setContent(MultipartBuilder mimeMultipart) throws MessagingException {
-        this.content = Optional.of(mimeMultipart.build());
-        return this;
-    }
-
-    public MimeMessageBuilder setMultipartWithBodyParts(BodyPart... bobyParts) throws MessagingException {
-        this.content = Optional.of(MimeMessageBuilder.multipartBuilder()
-            .addBodies(bobyParts)
-            .build());
-        return this;
-    }
-
-    public MimeMessageBuilder setMultipartWithBodyParts(BodyPartBuilder... bobyParts) throws MessagingException {
-        this.content = Optional.of(MimeMessageBuilder.multipartBuilder()
-            .addBodies(bobyParts)
-            .build());
-        return this;
-    }
-
-    public MimeMessageBuilder setMultipartWithSubMessage(MimeMessage mimeMessage) throws MessagingException, IOException {
-        return setMultipartWithBodyParts(
-            new MimeBodyPart(
-                new InternetHeaders(new ByteArrayInputStream("Content-Type: multipart/mixed".getBytes(StandardCharsets.US_ASCII))),
-                IOUtils.toByteArray(mimeMessage.getInputStream())));
-    }
-
-    public MimeMessageBuilder setMultipartWithSubMessage(MimeMessageBuilder mimeMessage) throws MessagingException, IOException {
-        return setMultipartWithSubMessage(mimeMessage.build());
-    }
-
-    public MimeMessageBuilder addHeader(String name, String value) {
-        this.headers.add(new Header(name, value));
-        return this;
-    }
-
-    public MimeMessageBuilder addHeaders(Header... headers) {
-        return addHeaders(Arrays.asList(headers));
-    }
-
-    public MimeMessageBuilder addHeaders(Collection<Header> headers) {
-        this.headers.addAll(headers);
-        return this;
-    }
-
-    public MimeMessage build() throws MessagingException {
-        Preconditions.checkState(!(text.isPresent() && content.isPresent()), "Can not get at the same time a text and a content");
-        MimeMessage mimeMessage = new MimeMessage(Session.getInstance(new Properties()));
-        if (text.isPresent()) {
-            mimeMessage.setContent(text.get(), textContentType.orElse("text/plain"));
-        }
-        if (content.isPresent()) {
-            mimeMessage.setContent(content.get());
-        }
-        if (sender.isPresent()) {
-            mimeMessage.setSender(sender.get());
-        }
-        if (subject.isPresent()) {
-            mimeMessage.setSubject(subject.get());
-        }
-        ImmutableList<InternetAddress> fromAddresses = from.build();
-        if (!fromAddresses.isEmpty()) {
-            mimeMessage.addFrom(fromAddresses.toArray(new InternetAddress[fromAddresses.size()]));
-        }
-        List<InternetAddress> toAddresses = to.build();
-        if (!toAddresses.isEmpty()) {
-            mimeMessage.setRecipients(Message.RecipientType.TO, toAddresses.toArray(new InternetAddress[toAddresses.size()]));
-        }
-        List<InternetAddress> ccAddresses = cc.build();
-        if (!ccAddresses.isEmpty()) {
-            mimeMessage.setRecipients(Message.RecipientType.CC, ccAddresses.toArray(new InternetAddress[ccAddresses.size()]));
-        }
-        List<InternetAddress> bccAddresses = bcc.build();
-        if (!bccAddresses.isEmpty()) {
-            mimeMessage.setRecipients(Message.RecipientType.BCC, bccAddresses.toArray(new InternetAddress[bccAddresses.size()]));
-        }
-        List<Header> headerList = headers.build();
-        for (Header header: headerList) {
-            mimeMessage.addHeader(header.name, header.value);
-        }
-        mimeMessage.saveChanges();
-        return mimeMessage;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/3f0ba0be/mailet/icalendar/src/test/java/org/apache/james/transport/mailets/ICALToHeadersTest.java
----------------------------------------------------------------------
diff --git a/mailet/icalendar/src/test/java/org/apache/james/transport/mailets/ICALToHeadersTest.java b/mailet/icalendar/src/test/java/org/apache/james/transport/mailets/ICALToHeadersTest.java
index 924817a..fad4f66 100644
--- a/mailet/icalendar/src/test/java/org/apache/james/transport/mailets/ICALToHeadersTest.java
+++ b/mailet/icalendar/src/test/java/org/apache/james/transport/mailets/ICALToHeadersTest.java
@@ -23,17 +23,16 @@ import static org.assertj.core.api.Assertions.assertThat;
 
 import javax.mail.MessagingException;
 
+import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.mailet.Mail;
 import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.FakeMailetConfig;
-import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
 
 import com.google.common.collect.ImmutableMap;
-
 import net.fortuna.ical4j.data.CalendarBuilder;
 import net.fortuna.ical4j.model.Calendar;
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/3f0ba0be/mailet/icalendar/src/test/java/org/apache/james/transport/mailets/ICALToJsonAttributeTest.java
----------------------------------------------------------------------
diff --git a/mailet/icalendar/src/test/java/org/apache/james/transport/mailets/ICALToJsonAttributeTest.java b/mailet/icalendar/src/test/java/org/apache/james/transport/mailets/ICALToJsonAttributeTest.java
index 13c4f47..96bf1ab 100644
--- a/mailet/icalendar/src/test/java/org/apache/james/transport/mailets/ICALToJsonAttributeTest.java
+++ b/mailet/icalendar/src/test/java/org/apache/james/transport/mailets/ICALToJsonAttributeTest.java
@@ -32,12 +32,12 @@ import java.util.stream.Collectors;
 import javax.mail.MessagingException;
 
 import org.apache.james.core.MailAddress;
+import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.james.util.ClassLoaderUtils;
 import org.apache.mailet.Mail;
 import org.apache.mailet.base.MailAddressFixture;
 import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.FakeMailetConfig;
-import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
@@ -45,7 +45,6 @@ import org.junit.rules.ExpectedException;
 
 import com.fasterxml.jackson.core.io.JsonStringEncoder;
 import com.google.common.collect.ImmutableMap;
-
 import net.fortuna.ical4j.data.CalendarBuilder;
 import net.fortuna.ical4j.model.Calendar;
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/3f0ba0be/mailet/standard/src/test/java/org/apache/james/transport/mailets/ContactExtractorTest.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/mailets/ContactExtractorTest.java b/mailet/standard/src/test/java/org/apache/james/transport/mailets/ContactExtractorTest.java
index c6f1c41..dbf02d8 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/mailets/ContactExtractorTest.java
+++ b/mailet/standard/src/test/java/org/apache/james/transport/mailets/ContactExtractorTest.java
@@ -28,12 +28,12 @@ import static org.mockito.Mockito.when;
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeMessage;
 
+import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.mailet.MailetContext;
 import org.apache.mailet.MailetException;
 import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.FakeMailContext;
 import org.apache.mailet.base.test.FakeMailetConfig;
-import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.Before;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/3f0ba0be/mailet/standard/src/test/java/org/apache/james/transport/mailets/MailAttributesListToMimeHeadersTest.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/mailets/MailAttributesListToMimeHeadersTest.java b/mailet/standard/src/test/java/org/apache/james/transport/mailets/MailAttributesListToMimeHeadersTest.java
index 0f6dec3..1dad2bb 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/mailets/MailAttributesListToMimeHeadersTest.java
+++ b/mailet/standard/src/test/java/org/apache/james/transport/mailets/MailAttributesListToMimeHeadersTest.java
@@ -25,11 +25,11 @@ import java.util.ArrayList;
 
 import javax.mail.MessagingException;
 
+import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.mailet.Mailet;
 import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.FakeMailetConfig;
 import org.apache.mailet.base.test.MailUtil;
-import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/james-project/blob/3f0ba0be/mailet/standard/src/test/java/org/apache/james/transport/mailets/MailAttributesToMimeHeadersTest.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/mailets/MailAttributesToMimeHeadersTest.java b/mailet/standard/src/test/java/org/apache/james/transport/mailets/MailAttributesToMimeHeadersTest.java
index 9235c51..b02fedf 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/mailets/MailAttributesToMimeHeadersTest.java
+++ b/mailet/standard/src/test/java/org/apache/james/transport/mailets/MailAttributesToMimeHeadersTest.java
@@ -23,11 +23,11 @@ import static org.assertj.core.api.Assertions.assertThat;
 
 import javax.mail.MessagingException;
 
+import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.mailet.Mailet;
 import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.FakeMailetConfig;
 import org.apache.mailet.base.test.MailUtil;
-import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/james-project/blob/3f0ba0be/mailet/standard/src/test/java/org/apache/james/transport/mailets/RemoveMimeHeaderByPrefixTest.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/mailets/RemoveMimeHeaderByPrefixTest.java b/mailet/standard/src/test/java/org/apache/james/transport/mailets/RemoveMimeHeaderByPrefixTest.java
index f6dabe2..5008d8e 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/mailets/RemoveMimeHeaderByPrefixTest.java
+++ b/mailet/standard/src/test/java/org/apache/james/transport/mailets/RemoveMimeHeaderByPrefixTest.java
@@ -23,12 +23,12 @@ import static org.assertj.core.api.Assertions.assertThat;
 
 import javax.mail.MessagingException;
 
+import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.james.transport.mailets.utils.MimeMessageUtils;
 import org.apache.mailet.Mail;
 import org.apache.mailet.base.GenericMailet;
 import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.FakeMailetConfig;
-import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/james-project/blob/3f0ba0be/mailet/standard/src/test/java/org/apache/james/transport/mailets/RemoveMimeHeaderTest.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/mailets/RemoveMimeHeaderTest.java b/mailet/standard/src/test/java/org/apache/james/transport/mailets/RemoveMimeHeaderTest.java
index df2fa47..cfce358 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/mailets/RemoveMimeHeaderTest.java
+++ b/mailet/standard/src/test/java/org/apache/james/transport/mailets/RemoveMimeHeaderTest.java
@@ -27,11 +27,11 @@ import static org.mockito.Mockito.when;
 
 import javax.mail.MessagingException;
 
+import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.mailet.Mail;
 import org.apache.mailet.base.GenericMailet;
 import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.FakeMailetConfig;
-import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/james-project/blob/3f0ba0be/mailet/standard/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java b/mailet/standard/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
index 8315163..537a1d3 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
+++ b/mailet/standard/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
@@ -39,13 +39,13 @@ import javax.mail.internet.MimeMessage;
 import javax.mail.internet.MimeMultipart;
 
 import org.apache.commons.io.IOUtils;
+import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.james.transport.mailets.StripAttachment.OutputFileName;
 import org.apache.mailet.Mail;
 import org.apache.mailet.Mailet;
 import org.apache.mailet.MailetException;
 import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.FakeMailetConfig;
-import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;

http://git-wip-us.apache.org/repos/asf/james-project/blob/3f0ba0be/mailet/standard/src/test/java/org/apache/james/transport/mailets/UseHeaderRecipientsTest.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/mailets/UseHeaderRecipientsTest.java b/mailet/standard/src/test/java/org/apache/james/transport/mailets/UseHeaderRecipientsTest.java
index c326de3..2e2cb4a 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/mailets/UseHeaderRecipientsTest.java
+++ b/mailet/standard/src/test/java/org/apache/james/transport/mailets/UseHeaderRecipientsTest.java
@@ -22,12 +22,12 @@ package org.apache.james.transport.mailets;
 import static org.assertj.core.api.Assertions.assertThat;
 
 import org.apache.james.core.MailAddress;
+import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.mailet.Mail;
 import org.apache.mailet.base.MailAddressFixture;
 import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.FakeMailContext;
 import org.apache.mailet.base.test.FakeMailetConfig;
-import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/james-project/blob/3f0ba0be/mailet/standard/src/test/java/org/apache/james/transport/mailets/utils/MimeMessageUtilsTest.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/mailets/utils/MimeMessageUtilsTest.java b/mailet/standard/src/test/java/org/apache/james/transport/mailets/utils/MimeMessageUtilsTest.java
index b7111c0..8130c3b 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/mailets/utils/MimeMessageUtilsTest.java
+++ b/mailet/standard/src/test/java/org/apache/james/transport/mailets/utils/MimeMessageUtilsTest.java
@@ -27,8 +27,8 @@ import java.util.Properties;
 import javax.mail.Session;
 import javax.mail.internet.MimeMessage;
 
+import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.mailet.base.test.FakeMail;
-import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.Test;
 
 public class MimeMessageUtilsTest {

http://git-wip-us.apache.org/repos/asf/james-project/blob/3f0ba0be/mailet/standard/src/test/java/org/apache/james/transport/matchers/HasHeaderTest.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/matchers/HasHeaderTest.java b/mailet/standard/src/test/java/org/apache/james/transport/matchers/HasHeaderTest.java
index c6e7af0..a241675 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/matchers/HasHeaderTest.java
+++ b/mailet/standard/src/test/java/org/apache/james/transport/matchers/HasHeaderTest.java
@@ -28,12 +28,12 @@ import javax.mail.MessagingException;
 import javax.mail.Session;
 import javax.mail.internet.MimeMessage;
 
+import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.mailet.Mail;
 import org.apache.mailet.Matcher;
 import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.FakeMatcherConfig;
 import org.apache.mailet.base.test.MailUtil;
-import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.Before;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/3f0ba0be/mailet/standard/src/test/java/org/apache/james/transport/matchers/HasHeaderWithPrefixTest.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/matchers/HasHeaderWithPrefixTest.java b/mailet/standard/src/test/java/org/apache/james/transport/matchers/HasHeaderWithPrefixTest.java
index 734e798..b3843fa 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/matchers/HasHeaderWithPrefixTest.java
+++ b/mailet/standard/src/test/java/org/apache/james/transport/matchers/HasHeaderWithPrefixTest.java
@@ -24,12 +24,12 @@ import static org.assertj.core.api.Assertions.assertThat;
 
 import javax.mail.MessagingException;
 
+import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.mailet.Mail;
 import org.apache.mailet.Matcher;
 import org.apache.mailet.base.MailAddressFixture;
 import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.FakeMatcherConfig;
-import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/james-project/blob/3f0ba0be/mailet/standard/src/test/java/org/apache/james/transport/matchers/HasMimeTypeTest.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/matchers/HasMimeTypeTest.java b/mailet/standard/src/test/java/org/apache/james/transport/matchers/HasMimeTypeTest.java
index 97aa9cc..fbdff6c 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/matchers/HasMimeTypeTest.java
+++ b/mailet/standard/src/test/java/org/apache/james/transport/matchers/HasMimeTypeTest.java
@@ -21,10 +21,10 @@ package org.apache.james.transport.matchers;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
+import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.mailet.Mail;
 import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.FakeMatcherConfig;
-import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.Before;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/3f0ba0be/mailet/standard/src/test/java/org/apache/james/transport/matchers/TooManyLinesTest.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/matchers/TooManyLinesTest.java b/mailet/standard/src/test/java/org/apache/james/transport/matchers/TooManyLinesTest.java
index c190387..bd08510 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/matchers/TooManyLinesTest.java
+++ b/mailet/standard/src/test/java/org/apache/james/transport/matchers/TooManyLinesTest.java
@@ -26,9 +26,9 @@ import java.util.Collection;
 import javax.mail.MessagingException;
 
 import org.apache.james.core.MailAddress;
+import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.FakeMatcherConfig;
-import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/james-project/blob/3f0ba0be/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AddFooterTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AddFooterTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AddFooterTest.java
index a50e3ed..5caac02 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AddFooterTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AddFooterTest.java
@@ -29,6 +29,7 @@ import static org.apache.james.mailets.configuration.Constants.SMTP_PORT;
 import static org.apache.james.mailets.configuration.Constants.awaitOneMinute;
 import static org.assertj.core.api.Assertions.assertThat;
 
+import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.james.mailets.TemporaryJamesServer;
 import org.apache.james.mailets.configuration.CommonProcessors;
 import org.apache.james.mailets.configuration.MailetConfiguration;
@@ -40,7 +41,6 @@ import org.apache.james.utils.DataProbeImpl;
 import org.apache.james.utils.IMAPMessageReader;
 import org.apache.james.utils.SMTPMessageSender;
 import org.apache.mailet.base.test.FakeMail;
-import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;

http://git-wip-us.apache.org/repos/asf/james-project/blob/3f0ba0be/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java
index 54d7a79..dd35211 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java
@@ -30,6 +30,7 @@ import static org.assertj.core.api.Assertions.assertThat;
 import java.nio.charset.StandardCharsets;
 
 import org.apache.james.MemoryJamesServerMain;
+import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.james.mailets.TemporaryJamesServer;
 import org.apache.james.mailets.configuration.CommonProcessors;
 import org.apache.james.mailets.configuration.MailetConfiguration;
@@ -44,7 +45,6 @@ import org.apache.james.utils.DataProbeImpl;
 import org.apache.james.utils.IMAPMessageReader;
 import org.apache.james.utils.SMTPMessageSender;
 import org.apache.mailet.base.test.FakeMail;
-import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;

http://git-wip-us.apache.org/repos/asf/james-project/blob/3f0ba0be/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ContactExtractorTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ContactExtractorTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ContactExtractorTest.java
index 52d7bbc..06cfa0d 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ContactExtractorTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ContactExtractorTest.java
@@ -30,6 +30,7 @@ import static org.assertj.core.api.Assertions.assertThat;
 import java.util.Optional;
 
 import org.apache.james.MemoryJamesServerMain;
+import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.james.mailets.TemporaryJamesServer;
 import org.apache.james.mailets.configuration.CommonProcessors;
 import org.apache.james.mailets.configuration.MailetConfiguration;
@@ -44,7 +45,6 @@ import org.apache.james.utils.DataProbeImpl;
 import org.apache.james.utils.IMAPMessageReader;
 import org.apache.james.utils.SMTPMessageSender;
 import org.apache.mailet.base.test.FakeMail;
-import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;

http://git-wip-us.apache.org/repos/asf/james-project/blob/3f0ba0be/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingTest.java
index 787d1e9..dbcdf8e 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingTest.java
@@ -30,6 +30,7 @@ import static org.hamcrest.Matchers.equalTo;
 
 import javax.mail.internet.MimeMessage;
 
+import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.james.jmap.mailet.VacationMailet;
 import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailets.TemporaryJamesServer;
@@ -48,7 +49,6 @@ import org.apache.james.utils.SMTPMessageSender;
 import org.apache.james.utils.WebAdminGuiceProbe;
 import org.apache.james.webadmin.routes.GroupsRoutes;
 import org.apache.mailet.base.test.FakeMail;
-import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;

http://git-wip-us.apache.org/repos/asf/james-project/blob/3f0ba0be/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
index a72d98a..e023c04 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
@@ -33,6 +33,7 @@ import java.util.Optional;
 import javax.mail.internet.MimeMessage;
 
 import org.apache.james.MemoryJamesServerMain;
+import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.james.jmap.mailet.TextCalendarBodyToAttachment;
 import org.apache.james.mailets.TemporaryJamesServer;
 import org.apache.james.mailets.configuration.CommonProcessors;
@@ -48,7 +49,6 @@ import org.apache.james.utils.DataProbeImpl;
 import org.apache.james.utils.IMAPMessageReader;
 import org.apache.james.utils.SMTPMessageSender;
 import org.apache.mailet.base.test.FakeMail;
-import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;

http://git-wip-us.apache.org/repos/asf/james-project/blob/3f0ba0be/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/SpamAssassinTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/SpamAssassinTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/SpamAssassinTest.java
index e5b97b4..f97bf1d 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/SpamAssassinTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/SpamAssassinTest.java
@@ -31,6 +31,7 @@ import static org.assertj.core.api.Assertions.assertThat;
 
 import javax.mail.MessagingException;
 
+import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.james.mailets.TemporaryJamesServer;
 import org.apache.james.mailets.configuration.CommonProcessors;
 import org.apache.james.mailets.configuration.MailetConfiguration;
@@ -44,7 +45,6 @@ import org.apache.james.utils.DataProbeImpl;
 import org.apache.james.utils.IMAPMessageReader;
 import org.apache.james.utils.SMTPMessageSender;
 import org.apache.mailet.base.test.FakeMail;
-import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;

http://git-wip-us.apache.org/repos/asf/james-project/blob/3f0ba0be/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
index 065db56..967ce53 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
@@ -30,6 +30,7 @@ import static org.assertj.core.api.Assertions.assertThat;
 import javax.mail.internet.MimeMessage;
 
 import org.apache.james.MemoryJamesServerMain;
+import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.james.mailets.TemporaryJamesServer;
 import org.apache.james.mailets.configuration.CommonProcessors;
 import org.apache.james.mailets.configuration.MailetConfiguration;
@@ -41,7 +42,6 @@ import org.apache.james.utils.DataProbeImpl;
 import org.apache.james.utils.IMAPMessageReader;
 import org.apache.james.utils.SMTPMessageSender;
 import org.apache.mailet.base.test.FakeMail;
-import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;

http://git-wip-us.apache.org/repos/asf/james-project/blob/3f0ba0be/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/impl/JamesMailetContextTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/impl/JamesMailetContextTest.java b/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/impl/JamesMailetContextTest.java
index 5341325..fc88507 100644
--- a/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/impl/JamesMailetContextTest.java
+++ b/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/impl/JamesMailetContextTest.java
@@ -33,6 +33,7 @@ import javax.mail.internet.MimeMessage;
 
 import org.apache.commons.configuration.HierarchicalConfiguration;
 import org.apache.james.core.MailAddress;
+import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.james.dnsservice.api.DNSService;
 import org.apache.james.domainlist.lib.AbstractDomainList;
 import org.apache.james.domainlist.memory.MemoryDomainList;
@@ -41,7 +42,6 @@ import org.apache.james.queue.api.MailQueueFactory;
 import org.apache.james.server.core.MailImpl;
 import org.apache.james.user.memory.MemoryUsersRepository;
 import org.apache.mailet.Mail;
-import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.assertj.core.api.JUnitSoftAssertions;
 import org.junit.Before;
 import org.junit.Rule;

http://git-wip-us.apache.org/repos/asf/james-project/blob/3f0ba0be/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/BounceTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/BounceTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/BounceTest.java
index 146a2f2..8b42a9b 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/BounceTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/BounceTest.java
@@ -31,13 +31,13 @@ import javax.mail.Session;
 import javax.mail.internet.MimeMessage;
 
 import org.apache.james.core.MailAddress;
+import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.james.dnsservice.api.DNSService;
 import org.apache.mailet.Mail;
 import org.apache.mailet.base.MailAddressFixture;
 import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.FakeMailContext;
 import org.apache.mailet.base.test.FakeMailetConfig;
-import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/james-project/blob/3f0ba0be/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/SpamAssassinTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/SpamAssassinTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/SpamAssassinTest.java
index aba82cd..9fd2090 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/SpamAssassinTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/SpamAssassinTest.java
@@ -24,6 +24,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 import javax.mail.MessagingException;
 
+import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.james.util.Port;
 import org.apache.james.util.scanner.SpamAssassinInvoker;
 import org.apache.james.utils.MockSpamd;
@@ -31,7 +32,6 @@ import org.apache.james.utils.MockSpamdTestRule;
 import org.apache.mailet.Mail;
 import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.FakeMailetConfig;
-import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.Rule;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/3f0ba0be/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/LocalDeliveryTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/LocalDeliveryTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/LocalDeliveryTest.java
index eb0e66f..2e62f9c 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/LocalDeliveryTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/LocalDeliveryTest.java
@@ -35,6 +35,7 @@ import javax.mail.MessagingException;
 import javax.mail.internet.MimeBodyPart;
 
 import org.apache.james.core.MailAddress;
+import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageManager;
@@ -47,7 +48,6 @@ import org.apache.mailet.Mail;
 import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.FakeMailContext;
 import org.apache.mailet.base.test.FakeMailetConfig;
-import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.Before;
 import org.junit.Test;
 import org.slf4j.Logger;

http://git-wip-us.apache.org/repos/asf/james-project/blob/3f0ba0be/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailDispatcherTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailDispatcherTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailDispatcherTest.java
index 7b0c680..6b5ce76 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailDispatcherTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailDispatcherTest.java
@@ -34,13 +34,13 @@ import javax.mail.MessagingException;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.james.core.MailAddress;
+import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.mailet.Mail;
 import org.apache.mailet.PerRecipientHeaders.Header;
 import org.apache.mailet.base.MailAddressFixture;
 import org.apache.mailet.base.RFC2822Headers;
 import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.FakeMailContext;
-import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.ArgumentCaptor;

http://git-wip-us.apache.org/repos/asf/james-project/blob/3f0ba0be/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailboxAppenderTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailboxAppenderTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailboxAppenderTest.java
index 363721c..866a70e 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailboxAppenderTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailboxAppenderTest.java
@@ -24,6 +24,7 @@ import static org.assertj.core.api.Assertions.assertThat;
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeMessage;
 
+import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
@@ -33,7 +34,6 @@ import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MessageRange;
 import org.apache.james.mailbox.model.MessageResult;
 import org.apache.james.mailbox.model.MessageResultIterator;
-import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;

http://git-wip-us.apache.org/repos/asf/james-project/blob/3f0ba0be/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java
index a733c9e..1c77e9c 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java
@@ -29,6 +29,8 @@ import javax.mail.MessagingException;
 import javax.mail.internet.MimeBodyPart;
 
 import org.apache.james.core.MailAddress;
+import org.apache.james.core.builder.MimeMessageBuilder;
+import org.apache.james.core.builder.MimeMessageBuilder.Header;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.sieverepository.api.exception.ScriptNotFoundException;
 import org.apache.james.transport.mailets.Sieve;
@@ -38,8 +40,6 @@ import org.apache.mailet.Mail;
 import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.FakeMailContext;
 import org.apache.mailet.base.test.FakeMailetConfig;
-import org.apache.mailet.base.test.MimeMessageBuilder;
-import org.apache.mailet.base.test.MimeMessageBuilder.Header;
 import org.joda.time.DateTime;
 import org.joda.time.format.DateTimeFormat;
 import org.joda.time.format.DateTimeFormatter;

http://git-wip-us.apache.org/repos/asf/james-project/blob/3f0ba0be/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SimpleMailStoreTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SimpleMailStoreTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SimpleMailStoreTest.java
index ae2972c..414ec8e 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SimpleMailStoreTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SimpleMailStoreTest.java
@@ -28,12 +28,12 @@ import static org.mockito.Mockito.when;
 import javax.mail.internet.MimeMessage;
 
 import org.apache.james.core.MailAddress;
+import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.james.metrics.api.Metric;
 import org.apache.james.user.api.UsersRepository;
 import org.apache.james.user.api.UsersRepositoryException;
 import org.apache.mailet.base.MailAddressFixture;
 import org.apache.mailet.base.test.FakeMail;
-import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.Before;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/3f0ba0be/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/ToRecipientFolderTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/ToRecipientFolderTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/ToRecipientFolderTest.java
index 0273ddf..524b7da 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/ToRecipientFolderTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/ToRecipientFolderTest.java
@@ -36,6 +36,7 @@ import javax.mail.MessagingException;
 import javax.mail.internet.MimeBodyPart;
 
 import org.apache.james.core.MailAddress;
+import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageManager;
@@ -49,7 +50,6 @@ import org.apache.mailet.Mail;
 import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.FakeMailContext;
 import org.apache.mailet.base.test.FakeMailetConfig;
-import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/james-project/blob/3f0ba0be/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailetTestCase.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailetTestCase.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailetTestCase.java
index 28c81a2..f0eb7c3 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailetTestCase.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailetTestCase.java
@@ -38,6 +38,7 @@ import javax.mail.internet.MimeMultipart;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.james.core.MailAddress;
+import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.james.managesieve.api.SieveParser;
 import org.apache.james.managesieve.api.SyntaxException;
 import org.apache.james.sieverepository.api.ScriptSummary;
@@ -48,7 +49,6 @@ import org.apache.mailet.Mail;
 import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.FakeMailContext;
 import org.apache.mailet.base.test.FakeMailetConfig;
-import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.Before;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/3f0ba0be/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java
----------------------------------------------------------------------
diff --git a/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java b/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java
index fc1ea26..fc09978 100644
--- a/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java
+++ b/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java
@@ -30,6 +30,7 @@ import java.util.StringJoiner;
 import javax.mail.MessagingException;
 
 import org.apache.james.core.MailAddress;
+import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.james.mailrepository.api.MailRepository;
 import org.apache.james.mime4j.io.InputStreams;
 import org.apache.james.server.core.MailImpl;

http://git-wip-us.apache.org/repos/asf/james-project/blob/3f0ba0be/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
index c4e3510..51ff6fa 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
@@ -56,6 +56,7 @@ import javax.mail.internet.MimeMessage;
 import org.apache.commons.io.IOUtils;
 import org.apache.http.client.utils.URIBuilder;
 import org.apache.james.GuiceJamesServer;
+import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.james.jmap.DefaultMailboxes;
 import org.apache.james.jmap.HttpJmapAuthentication;
 import org.apache.james.jmap.api.access.AccessToken;
@@ -86,7 +87,6 @@ import org.apache.james.utils.MessageIdProbe;
 import org.apache.james.utils.SMTPMessageSender;
 import org.apache.mailet.Mail;
 import org.apache.mailet.base.test.FakeMail;
-import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.hamcrest.Matcher;
 import org.hamcrest.Matchers;
 import org.junit.After;

http://git-wip-us.apache.org/repos/asf/james-project/blob/3f0ba0be/server/protocols/jmap/src/test/java/org/apache/james/jmap/mailet/TextCalendarBodyToAttachmentTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/mailet/TextCalendarBodyToAttachmentTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/mailet/TextCalendarBodyToAttachmentTest.java
index c9b40b5..9f832e8 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/mailet/TextCalendarBodyToAttachmentTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/mailet/TextCalendarBodyToAttachmentTest.java
@@ -32,10 +32,10 @@ import javax.mail.MessagingException;
 import javax.mail.Multipart;
 import javax.mail.internet.MimeMessage;
 
+import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.mailet.Mail;
 import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.FakeMailetConfig;
-import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;


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


[6/9] james-project git commit: JAMES-2286 Rely on MimeMessageBuilder rather than handcrafting messages

Posted by ro...@apache.org.
JAMES-2286 Rely on MimeMessageBuilder rather than handcrafting messages


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

Branch: refs/heads/master
Commit: 609c6ed36d994775ea3e9d76053bb5680eab2927
Parents: 3f0ba0b
Author: benwa <bt...@linagora.com>
Authored: Fri Jan 12 10:00:13 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Mon Jan 15 16:54:02 2018 +0700

----------------------------------------------------------------------
 .../mailrepository/MailRepositoryContract.java  | 20 +++++++-------------
 1 file changed, 7 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/609c6ed3/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java
----------------------------------------------------------------------
diff --git a/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java b/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java
index fc09978..4c2cddc 100644
--- a/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java
+++ b/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java
@@ -22,17 +22,14 @@ package org.apache.james.mailrepository;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.jupiter.api.Assertions.assertAll;
 
-import java.io.InputStream;
-import java.nio.charset.StandardCharsets;
 import java.util.List;
-import java.util.StringJoiner;
 
 import javax.mail.MessagingException;
+import javax.mail.internet.MimeMessage;
 
 import org.apache.james.core.MailAddress;
 import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.james.mailrepository.api.MailRepository;
-import org.apache.james.mime4j.io.InputStreams;
 import org.apache.james.server.core.MailImpl;
 import org.apache.mailet.Mail;
 import org.junit.jupiter.api.Test;
@@ -48,7 +45,7 @@ public interface MailRepositoryContract {
     }
 
     default  Mail createMail(String name, String body) throws MessagingException {
-        InputStream mailContent = generateMailContent(body);
+        MimeMessage mailContent = generateMailContent(body);
         List<MailAddress> recipients = ImmutableList
             .of(new MailAddress("rec1@domain.com"),
                 new MailAddress("rec2@domain.com"));
@@ -59,14 +56,11 @@ public interface MailRepositoryContract {
     }
 
 
-    default InputStream generateMailContent(String body) {
-        String headers = new StringJoiner("\r\n")
-            .add("Subject: test")
-            .add("Content-Type: text/plain")
-            .toString();
-        String headerBodySeparator = "\r\n\r\n";
-        String end = "\r\n.\r\n";
-        return InputStreams.create(headers + headerBodySeparator + body + end, StandardCharsets.UTF_8);
+    default MimeMessage generateMailContent(String body) throws MessagingException {
+        return MimeMessageBuilder.mimeMessageBuilder()
+            .setSubject("test")
+            .setText(body)
+            .build();
     }
 
     default void checkMailEquality(Mail actual, Mail expected) {


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