You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2017/09/11 02:36:52 UTC

[08/23] james-project git commit: JAMES-2138 move MailAddress to a new james-core project

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/container/core/src/test/java/org/apache/james/server/core/MimeMessageTest.java
----------------------------------------------------------------------
diff --git a/server/container/core/src/test/java/org/apache/james/server/core/MimeMessageTest.java b/server/container/core/src/test/java/org/apache/james/server/core/MimeMessageTest.java
new file mode 100644
index 0000000..8b51e50
--- /dev/null
+++ b/server/container/core/src/test/java/org/apache/james/server/core/MimeMessageTest.java
@@ -0,0 +1,437 @@
+/****************************************************************
+ * 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.server.core;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.util.Arrays;
+import java.util.Enumeration;
+import java.util.Properties;
+
+import javax.mail.BodyPart;
+import javax.mail.Session;
+import javax.mail.internet.InternetHeaders;
+import javax.mail.internet.MimeBodyPart;
+import javax.mail.internet.MimeMessage;
+import javax.mail.internet.MimeMultipart;
+
+import org.apache.james.lifecycle.api.LifecycleUtil;
+import org.apache.mailet.base.RFC2822Headers;
+import org.junit.Test;
+
+/**
+ * Test the subject folding issue.
+ */
+public class MimeMessageTest {
+
+    protected MimeMessage getSimpleMessage() throws Exception {
+        MimeMessage mmCreated = new MimeMessage(Session.getDefaultInstance(new Properties()));
+        mmCreated.setSubject("test");
+        mmCreated.setText("test body");
+        mmCreated.saveChanges();
+        return mmCreated;
+    }
+
+    protected String getSimpleMessageCleanedSource() {
+        return "Subject: test\r\n"
+                + "MIME-Version: 1.0\r\n"
+                + "Content-Type: text/plain; charset=us-ascii\r\n"
+                + "Content-Transfer-Encoding: 7bit\r\n"
+                + "\r\n"
+                + "test body";
+    }
+
+    protected MimeMessage getMessageWithBadReturnPath() throws Exception {
+        MimeMessage mmCreated = new MimeMessage(Session.getDefaultInstance(new Properties()));
+        mmCreated.setSubject("test");
+        mmCreated.setHeader(RFC2822Headers.RETURN_PATH, "<my...@example.com>");
+        mmCreated.setText("test body");
+        mmCreated.saveChanges();
+        return mmCreated;
+    }
+
+    protected String getMessageWithBadReturnPathSource() {
+        return "Subject: test\r\n"
+                + "Return-Path: <my...@example.com>\r\n"
+                + "MIME-Version: 1.0\r\n"
+                + "Content-Type: text/plain; charset=us-ascii\r\n"
+                + "Content-Transfer-Encoding: 7bit\r\n"
+                + "\r\n"
+                + "test body";
+    }
+
+    protected String getSimpleMessageCleanedSourceHeaderExpected() {
+        return "X-Test: foo\r\n" + getSimpleMessageCleanedSource();
+    }
+
+    /*
+     * Class under test for String getSubject()
+     */
+    @Test
+    public void testSimpleMessage() throws Exception {
+        MimeMessage m = getSimpleMessage();
+        assertEquals(getSimpleMessageCleanedSource(), getCleanedMessageSource(m));
+        LifecycleUtil.dispose(m);
+    }
+
+    protected MimeMessage getMultipartMessage() throws Exception {
+        MimeMessage mmCreated = new MimeMessage(Session.getDefaultInstance(new Properties()));
+        mmCreated.setSubject("test");
+        MimeMultipart mm = new MimeMultipart("alternative");
+        mm.addBodyPart(new MimeBodyPart(new InternetHeaders(new ByteArrayInputStream("X-header: test1\r\nContent-Type: text/plain; charset=Cp1252\r\n".
+                getBytes())), "first part \u00F2\u00E0\u00F9".getBytes()));
+        mm.addBodyPart(new MimeBodyPart(new InternetHeaders(new ByteArrayInputStream("X-header: test2\r\nContent-Type: text/plain; charset=Cp1252\r\nContent-Transfer-Encoding: quoted-printable\r\n".
+                getBytes())), "second part =E8=E8".getBytes()));
+        mmCreated.setContent(mm);
+        mmCreated.saveChanges();
+        return mmCreated;
+    }
+
+    protected String getMultipartMessageSource() {
+        return "Subject: test\r\n"
+                + "MIME-Version: 1.0\r\n"
+                + "Content-Type: multipart/alternative; \r\n"
+                + "\tboundary=\"----=_Part_0_XXXXXXXXXXX.XXXXXXXXXXX\"\r\n"
+                + "\r\n"
+                + "------=_Part_0_XXXXXXXXXXX.XXXXXXXXXXX\r\n"
+                + "X-header: test1\r\n"
+                + "Content-Type: text/plain; charset=Cp1252\r\n"
+                + "Content-Transfer-Encoding: quoted-printable\r\n"
+                + "\r\n"
+                + "first part =E8\r\n"
+                + "------=_Part_0_XXXXXXXXXXX.XXXXXXXXXXX\r\n"
+                + "X-header: test2\r\n"
+                + "Content-Type: text/plain; charset=Cp1252\r\n"
+                + "Content-Transfer-Encoding: quoted-printable\r\n"
+                + "\r\n"
+                + "second part =E8=E8\r\n"
+                + "------=_Part_0_XXXXXXXXXXX.XXXXXXXXXXX--\r\n";
+    }
+
+    protected String getMultipartMessageExpected1() {
+        return "Subject: test\r\n"
+                + "MIME-Version: 1.0\r\n"
+                + "Content-Type: multipart/alternative; \r\n"
+                + "\tboundary=\"----=_Part_0_XXXXXXXXXXX.XXXXXXXXXXX\"\r\n"
+                + "\r\n"
+                + "------=_Part_0_XXXXXXXXXXX.XXXXXXXXXXX\r\n"
+                + "X-header: test1\r\n"
+                + "Content-Type: text/plain; charset=Cp1252\r\n"
+                + "Content-Transfer-Encoding: quoted-printable\r\n"
+                + "\r\n"
+                + "test=80\r\n"
+                + "------=_Part_0_XXXXXXXXXXX.XXXXXXXXXXX\r\n"
+                + "X-header: test2\r\n"
+                + "Content-Type: text/plain; charset=Cp1252\r\n"
+                + "Content-Transfer-Encoding: quoted-printable\r\n"
+                + "\r\n"
+                + "second part =E8=E8\r\n"
+                + "------=_Part_0_XXXXXXXXXXX.XXXXXXXXXXX--\r\n";
+    }
+
+    protected String getMultipartMessageExpected2() {
+        return "Subject: test\r\n"
+                + "MIME-Version: 1.0\r\n"
+                + "Content-Type: multipart/alternative; \r\n"
+                + "\tboundary=\"----=_Part_0_XXXXXXXXXXX.XXXXXXXXXXX\"\r\n"
+                + "\r\n"
+                + "------=_Part_0_XXXXXXXXXXX.XXXXXXXXXXX\r\n"
+                + "X-header: test1\r\n"
+                + "Content-Type: text/plain; charset=Cp1252\r\n"
+                + "Content-Transfer-Encoding: quoted-printable\r\n"
+                + "\r\n"
+                + "test=80\r\n"
+                + "------=_Part_0_XXXXXXXXXXX.XXXXXXXXXXX\r\n"
+                + "X-header: test2\r\n"
+                + "Content-Type: text/plain; charset=Cp1252\r\n"
+                + "Content-Transfer-Encoding: quoted-printable\r\n"
+                + "\r\n"
+                + "second part =E8=E8\r\n"
+                + "------=_Part_0_XXXXXXXXXXX.XXXXXXXXXXX\r\n"
+                + "Subject: test3\r\n"
+                + "\r\n"
+                + "third part\r\n"
+                + "------=_Part_0_XXXXXXXXXXX.XXXXXXXXXXX--\r\n";
+    }
+
+    protected String getMultipartMessageExpected3() {
+        return "Subject: test\r\n"
+                + "MIME-Version: 1.0\r\n"
+                + "Content-Type: binary/octet-stream\r\n"
+                + "Content-Transfer-Encoding: quoted-printable\r\n"
+                + "\r\n"
+                + "mynewco=F2=E0=F9ntent=80=E0!";
+    }
+
+    /*
+     * Class under test for String getSubject()
+     */
+    @Test
+    public void testMultipartMessageChanges() throws Exception {
+
+        MimeMessage mm = getMultipartMessage();
+
+        // ByteArrayOutputStream out = new ByteArrayOutputStream();
+        // mmCreated.writeTo(out,new String[] {"Message-ID"});
+        // String messageSource = out.toString();
+        // System.out.println(messageSource);
+
+        MimeMultipart content1 = (MimeMultipart) mm.getContent();
+        BodyPart b1 = content1.getBodyPart(0);
+        b1.setContent("test\u20AC", "text/plain; charset=Cp1252");
+        mm.setContent(content1, mm.getContentType());
+        // .setHeader(RFC2822Headers.CONTENT_TYPE,contentType);
+        mm.saveChanges();
+
+        assertEquals(getMultipartMessageExpected1(), getCleanedMessageSource(mm));
+
+        MimeMultipart content2 = (MimeMultipart) mm.getContent();
+        content2.addBodyPart(new MimeBodyPart(new InternetHeaders(new ByteArrayInputStream(
+                "Subject: test3\r\n".getBytes())), "third part".getBytes()));
+        mm.setContent(content2, mm.getContentType());
+        mm.saveChanges();
+
+        assertEquals(getMultipartMessageExpected2(), getCleanedMessageSource(mm));
+
+        mm.setContent("mynewco\u00F2\u00E0\u00F9ntent\u20AC\u00E0!", "text/plain; charset=cp1252");
+        mm.setHeader(RFC2822Headers.CONTENT_TYPE, "binary/octet-stream");
+        // mm.setHeader("Content-Transfer-Encoding","8bit");
+        mm.saveChanges();
+
+        assertEquals(getMultipartMessageExpected3(), getCleanedMessageSource(mm));
+
+        LifecycleUtil.dispose(mm);
+
+    }
+
+    protected MimeMessage getMissingEncodingAddHeaderMessage() throws Exception {
+        MimeMessage m = new MimeMessage(Session.getDefaultInstance(new Properties()));
+        m.setText("Test\u00E0\r\n");
+        m.setSubject("test");
+        m.saveChanges();
+        return m;
+    }
+
+    protected String getMissingEncodingAddHeaderSource() {
+        return "Subject: test\r\n"
+                + "\r\n"
+                + "Test\u00E0\r\n";
+    }
+
+    protected String getMissingEncodingAddHeaderExpected() {
+        return "Subject: test\r\n"
+                + "MIME-Version: 1.0\r\n"
+                + "Content-Type: text/plain; charset=Cp1252\r\n"
+                + "Content-Transfer-Encoding: quoted-printable\r\n"
+                + "\r\n"
+                + "Test=E0\r\n";
+    }
+
+    /**
+     * This test is not usable in different locale environment.
+     */
+    /*
+     * public void testMissingEncodingAddHeader() throws Exception {
+     * 
+     * 
+     * MimeMessage mm = getMissingEncodingAddHeaderMessage();
+     * mm.setHeader("Content-Transfer-Encoding", "quoted-printable");
+     * mm.saveChanges();
+     * 
+     * assertEquals(getMissingEncodingAddHeaderExpected(),getCleanedMessageSource
+     * (mm)); }
+     */
+    protected String getCleanedMessageSource(MimeMessage mm) throws Exception {
+        ByteArrayOutputStream out2;
+        out2 = new ByteArrayOutputStream();
+        mm.writeTo(out2, new String[]{"Message-ID"});
+
+        String res = out2.toString();
+
+        int p = res.indexOf("\r\n\r\n");
+        if (p > 0) {
+            String head = res.substring(0, p);
+            String[] str = head.split("\r\n");
+            Arrays.sort(str);
+            StringBuilder outputHead = new StringBuilder();
+            for (int i = str.length - 1; i >= 0; i--) {
+                outputHead.append(str[i]);
+                outputHead.append("\r\n");
+            }
+            outputHead.append(res.substring(p + 2));
+            res = outputHead.toString();
+        }
+
+        res = res.replaceAll("----=_Part_\\d*_\\d+\\.\\d+", "----=_Part_\\0_XXXXXXXXXXX.XXXXXXXXXXX");
+        return res;
+    }
+
+    protected void debugMessage(MimeMessage mm) throws Exception {
+        System.out.println("-------------------");
+        System.out.println(getCleanedMessageSource(mm));
+        System.out.println("-------------------");
+    }
+
+    protected MimeMessage getMissingEncodingMessage() throws Exception {
+        MimeMessage mmCreated = new MimeMessage(Session.getDefaultInstance(new Properties()));
+        mmCreated.setSubject("test");
+        MimeMultipart mm = new MimeMultipart("alternative");
+        mm.addBodyPart(new MimeBodyPart(new InternetHeaders(new ByteArrayInputStream("X-header: test2\r\nContent-Type: text/plain; charset=Cp1252\r\nContent-Transfer-Encoding: quoted-printable\r\n".
+                getBytes())), "second part =E8=E8".getBytes()));
+        mmCreated.setContent(mm);
+        mmCreated.saveChanges();
+        return mmCreated;
+    }
+
+    protected String getMissingEncodingMessageSource() {
+        return "Subject: test\r\n"
+                + "MIME-Version: 1.0\r\n"
+                + "Content-Type: multipart/alternative; \r\n"
+                + "\tboundary=\"----=_Part_0_XXXXXXXXXXX.XXXXXXXXXXX\"\r\n"
+                + "\r\n"
+                + "------=_Part_0_XXXXXXXXXXX.XXXXXXXXXXX\r\n"
+                + "X-header: test2\r\n"
+                + "Content-Type: text/plain; charset=Cp1252\r\n"
+                + "Content-Transfer-Encoding: quoted-printable\r\n"
+                + "\r\n"
+                + "second part =E8=E8\r\n"
+                + "------=_Part_0_XXXXXXXXXXX.XXXXXXXXXXX--\r\n";
+    }
+
+    @Test
+    public void testGetLineCount() throws Exception {
+        MimeMessage mm = getMissingEncodingMessage();
+        try {
+            int count = mm.getLineCount();
+            assertTrue(count == -1 || count == 7);
+        } catch (Exception e) {
+            fail("Unexpected exception in getLineCount");
+        }
+        LifecycleUtil.dispose(mm);
+    }
+
+    /**
+     * This test throw a NullPointerException when the original message was
+     * created by a MimeMessageInputStreamSource.
+     */
+    @Test
+    public void testMessageCloningViaCoW() throws Exception {
+        MimeMessage mmorig = getSimpleMessage();
+
+        MimeMessage mm = new MimeMessageCopyOnWriteProxy(mmorig);
+
+        MimeMessage mm2 = new MimeMessageCopyOnWriteProxy(mm);
+
+        mm2.setHeader("Subject", "Modified");
+
+        LifecycleUtil.dispose(mm2);
+        System.gc();
+        Thread.sleep(200);
+        // ((Disposable)mail_dup.getMessage()).dispose();
+
+        mm.setHeader("Subject", "Modified");
+
+        LifecycleUtil.dispose(mm);
+        LifecycleUtil.dispose(mmorig);
+    }
+
+    /**
+     * This test throw a NullPointerException when the original message was
+     * created by a MimeMessageInputStreamSource.
+     */
+    @Test
+    public void testMessageCloningViaCoW2() throws Exception {
+        MimeMessage mmorig = getSimpleMessage();
+
+        MimeMessage mm = new MimeMessageCopyOnWriteProxy(mmorig);
+
+        MimeMessage mm2 = new MimeMessageCopyOnWriteProxy(mm);
+
+        LifecycleUtil.dispose(mm);
+        mm = null;
+        System.gc();
+        Thread.sleep(200);
+
+        try {
+            mm2.writeTo(System.out);
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail("Exception while writing the message to output");
+        }
+
+        LifecycleUtil.dispose(mm2);
+        LifecycleUtil.dispose(mmorig);
+    }
+
+    /**
+     * This test throw a NullPointerException when the original message was
+     * created by a MimeMessageInputStreamSource.
+     */
+    @Test
+    public void testMessageCloningViaCoWSubjectLost() throws Exception {
+        MimeMessage mmorig = getSimpleMessage();
+
+        MimeMessage mm = new MimeMessageCopyOnWriteProxy(mmorig);
+
+        mm.setHeader("X-Test", "foo");
+        mm.saveChanges();
+
+        assertEquals(getSimpleMessageCleanedSourceHeaderExpected(), getCleanedMessageSource(mm));
+
+        LifecycleUtil.dispose(mm);
+        LifecycleUtil.dispose(mmorig);
+    }
+
+    @Test
+    public void testReturnPath() throws Exception {
+        MimeMessage message = getSimpleMessage();
+        assertNull(message.getHeader(RFC2822Headers.RETURN_PATH));
+        LifecycleUtil.dispose(message);
+    }
+
+    @Test
+    public void testHeaderOrder() throws Exception {
+        MimeMessage message = getSimpleMessage();
+        message.setHeader(RFC2822Headers.RETURN_PATH, "<te...@test.de>");
+        @SuppressWarnings("unchecked")
+        Enumeration<String> h = message.getAllHeaderLines();
+
+        assertEquals(h.nextElement(), "Return-Path: <te...@test.de>");
+        LifecycleUtil.dispose(message);
+    }
+
+    /**
+     * http://issues.apache.org/jira/browse/GERONIMO-4261
+     * 
+     * This bug was in geronimo-javamail_1.4-1.5 Has been fixed in
+     * geronimo-javamail_1.4-1.6
+     */
+    @Test
+    public void testGeronimoIndexOutOfBounds() throws Exception {
+        String message = "                  \r\n" + "Subject: test\r\n" + "\r\n" + "Body\r\n";
+
+        byte[] messageBytes = message.getBytes("US-ASCII");
+        new MimeMessage(null, new ByteArrayInputStream(messageBytes));
+    }
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/container/core/src/test/java/org/apache/james/server/core/MimeMessageUtilTest.java
----------------------------------------------------------------------
diff --git a/server/container/core/src/test/java/org/apache/james/server/core/MimeMessageUtilTest.java b/server/container/core/src/test/java/org/apache/james/server/core/MimeMessageUtilTest.java
new file mode 100644
index 0000000..0f023da
--- /dev/null
+++ b/server/container/core/src/test/java/org/apache/james/server/core/MimeMessageUtilTest.java
@@ -0,0 +1,65 @@
+/****************************************************************
+ * 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.server.core;
+
+import javax.mail.MessagingException;
+import javax.mail.Session;
+import javax.mail.internet.MimeMessage;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.util.Properties;
+import org.junit.Test;
+
+public class MimeMessageUtilTest {
+
+    @Test
+    public void testWriteMimeMessageMultipartWithMessageID() throws MessagingException, IOException {
+        String message = "Received: from localhost.localdomain ([127.0.0.1])\r\n" +
+        "          by athlon14 (JAMES SMTP Server 2.3-dev) with SMTP ID 694\r\n" +
+        "          for <te...@athlon14.bf.loc>;\r\n" +
+        "          Sat, 18 Feb 2006 19:30:53 +0100 (CET)\r\n" +
+        "Subject: ext2int\r\n" +
+        "X-James-Postage: This is a test mail sent by James Postage\r\n" +
+        "Mime-Version: 1.0\r\n" +
+        "Content-Type: multipart/alternative; boundary=\"XyoYyxCQIfmZ5Sxofid6XQVZt5Z09XtTnqBF4Z45XSA=\"\r\n" +
+        "Date: Sat, 18 Feb 2006 19:30:53 +0100 (CET)\r\n" +
+        "From: test_ext2@another.bf.loc\r\n" +
+        "\r\n" +
+        "\r\n" +
+        "--XyoYyxCQIfmZ5Sxofid6XQVZt5Z09XtTnqBF4Z45XSA=\r\n" +
+        "Content-Type: text/plain\r\n" +
+        "\r\n" +
+        "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r\n" +
+        "--XyoYyxCQIfmZ5Sxofid6XQVZt5Z09XtTnqBF4Z45XSA=\r\n" +
+        "Content-Type: application/octet-stream\r\n" +
+        "\r\n" +
+        "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r\n" +
+        "--XyoYyxCQIfmZ5Sxofid6XQVZt5Z09XtTnqBF4Z45XSA=--\r\n";
+
+        MimeMessage mimeMessage = new MimeMessage(Session.getDefaultInstance(new Properties()), new ByteArrayInputStream(message.getBytes()));
+        mimeMessage.getSize();
+        ByteArrayOutputStream headerOut = new ByteArrayOutputStream();
+        ByteArrayOutputStream bodyOut = new ByteArrayOutputStream();
+        MimeMessageUtil.writeTo(mimeMessage, headerOut, bodyOut);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/container/core/src/test/java/org/apache/james/server/core/MimeMessageWrapperTest.java
----------------------------------------------------------------------
diff --git a/server/container/core/src/test/java/org/apache/james/server/core/MimeMessageWrapperTest.java b/server/container/core/src/test/java/org/apache/james/server/core/MimeMessageWrapperTest.java
new file mode 100644
index 0000000..ebd92d3
--- /dev/null
+++ b/server/container/core/src/test/java/org/apache/james/server/core/MimeMessageWrapperTest.java
@@ -0,0 +1,289 @@
+/****************************************************************
+ * 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.server.core;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.io.BufferedReader;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.Enumeration;
+import java.util.Properties;
+
+import javax.mail.MessagingException;
+import javax.mail.Session;
+import javax.mail.internet.MimeMessage;
+import javax.mail.util.SharedByteArrayInputStream;
+
+import org.apache.james.lifecycle.api.LifecycleUtil;
+import org.apache.mailet.base.RFC2822Headers;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+/**
+ * Test the subject folding issue.
+ */
+public class MimeMessageWrapperTest extends MimeMessageFromStreamTest {
+
+    private final class TestableMimeMessageWrapper extends MimeMessageWrapper {
+
+        boolean messageLoadable = true;
+        boolean headersLoadable = true;
+
+        private TestableMimeMessageWrapper(MimeMessageSource source) throws MessagingException {
+            super(source);
+        }
+
+        public boolean messageParsed() {
+            return messageParsed;
+        }
+
+        public void setHeadersLoadable(boolean headersLoadable) {
+            this.headersLoadable = headersLoadable;
+        }
+
+        @Override
+        protected synchronized void loadHeaders() throws MessagingException {
+            if (headersLoadable) {
+                super.loadHeaders();
+            } else {
+                throw new IllegalStateException("headersLoadable disabled");
+            }
+        }
+
+        @Override
+        public synchronized void loadMessage() throws MessagingException {
+            if (messageLoadable) {
+                super.loadMessage();
+            } else {
+                throw new IllegalStateException("messageLoadable disabled");
+            }
+        }
+    }
+    TestableMimeMessageWrapper mw = null;
+    final String content = "Subject: foo\r\nContent-Transfer-Encoding2: plain";
+    final String sep = "\r\n\r\n";
+    final String body = "bar\r\n";
+
+    @Rule
+    public ExpectedException expectedException = ExpectedException.none();
+
+    @Override
+    protected MimeMessage getMessageFromSources(String sources) throws Exception {
+        MimeMessageInputStreamSource mmis = new MimeMessageInputStreamSource("test", new SharedByteArrayInputStream(sources.getBytes()));
+        return new TestableMimeMessageWrapper(mmis);
+    }
+
+    @Before
+    public void setUp() throws Exception {
+        mw = (TestableMimeMessageWrapper) getMessageFromSources(content + sep + body);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        LifecycleUtil.dispose(mw);
+    }
+
+    @Test
+    public void testDeferredMessageLoading() throws MessagingException, IOException {
+        assertEquals("foo", mw.getSubject());
+        assertFalse(mw.messageParsed());
+        assertEquals("bar\r\n", mw.getContent());
+        assertTrue(mw.messageParsed());
+        assertFalse(mw.isModified());
+    }
+
+    /**
+     * this is commented out due optimisation reverts (JAMES-559) public void
+     * testDeferredMessageLoadingWhileWriting() throws MessagingException,
+     * IOException { mw.setMessageLoadable(false);
+     * assertEquals("foo",mw.getSubject()); assertFalse(mw.isModified());
+     * mw.setSubject("newSubject"); assertEquals("newSubject",mw.getSubject());
+     * assertFalse(mw.messageParsed()); assertTrue(mw.isModified());
+     * mw.setMessageLoadable(true);
+     * 
+     * }
+     */
+    @Test
+    public void testDeferredHeaderLoading() throws MessagingException, IOException {
+        mw.setHeadersLoadable(false);
+
+        expectedException.expect(IllegalStateException.class);
+
+        mw.getSubject();
+    }
+
+    /**
+     * See JAMES-474 MimeMessageWrapper(MimeMessage) should clone the original
+     * message.
+     */
+    @Test
+    public void testMessageCloned() throws MessagingException, IOException, InterruptedException {
+        MimeMessageWrapper mmw = new MimeMessageWrapper(mw);
+        LifecycleUtil.dispose(mw);
+        mw = null;
+        System.gc();
+        Thread.sleep(200);
+        mmw.writeTo(System.out);
+    }
+
+    @Test
+    public void testGetSubjectFolding() throws Exception {
+        StringBuilder res = new StringBuilder();
+        BufferedReader r = new BufferedReader(new InputStreamReader(mw.getInputStream()));
+        String line;
+        while (r.ready()) {
+            line = r.readLine();
+            res.append(line).append("\r\n");
+        }
+        r.close();
+        assertEquals(body, res.toString());
+    }
+
+    @Test
+    public void testAddHeaderAndSave() throws Exception {
+        mw.addHeader("X-Test", "X-Value");
+
+        assertEquals("X-Value", mw.getHeader("X-Test")[0]);
+
+        mw.saveChanges();
+
+        ByteArrayOutputStream rawMessage = new ByteArrayOutputStream();
+        mw.writeTo(rawMessage);
+
+        assertEquals("X-Value", mw.getHeader("X-Test")[0]);
+
+        String res = rawMessage.toString();
+
+        boolean found = res.indexOf("X-Test: X-Value") > 0;
+        assertEquals(true, found);
+    }
+
+    @Test
+    public void testReplaceReturnPathOnBadMessage() throws Exception {
+        MimeMessage message = getMessageWithBadReturnPath();
+        message.setHeader(RFC2822Headers.RETURN_PATH, "<te...@test.de>");
+        @SuppressWarnings("unchecked")
+        Enumeration<String> e = message.getMatchingHeaderLines(new String[]{"Return-Path"});
+        assertEquals("Return-Path: <te...@test.de>", e.nextElement());
+        assertFalse(e.hasMoreElements());
+        @SuppressWarnings("unchecked")
+        Enumeration<String> h = message.getAllHeaderLines();
+        assertEquals("Return-Path: <te...@test.de>", h.nextElement());
+        assertFalse(h.nextElement().toString().startsWith("Return-Path:"));
+        LifecycleUtil.dispose(message);
+    }
+
+    @Test
+    public void testAddReturnPathOnBadMessage() throws Exception {
+        MimeMessage message = getMessageWithBadReturnPath();
+        message.addHeader(RFC2822Headers.RETURN_PATH, "<te...@test.de>");
+        // test that we have now 2 return-paths
+        @SuppressWarnings("unchecked")
+        Enumeration<String> e = message.getMatchingHeaderLines(new String[]{"Return-Path"});
+        assertEquals("Return-Path: <te...@test.de>", e.nextElement());
+        assertEquals("Return-Path: <my...@example.com>", e.nextElement());
+        // test that return-path is the first line
+        @SuppressWarnings("unchecked")
+        Enumeration<String> h = message.getAllHeaderLines();
+        assertEquals("Return-Path: <te...@test.de>", h.nextElement());
+        LifecycleUtil.dispose(message);
+    }
+
+    /**
+     * Test for JAMES-1154
+     */
+    @Test
+    public void testMessageStreamWithUpatedHeaders() throws MessagingException, IOException {
+        mw.addHeader("X-Test", "X-Value");
+
+        assertEquals("X-Value", mw.getHeader("X-Test")[0]);
+
+        mw.saveChanges();
+
+        BufferedReader reader = new BufferedReader(new InputStreamReader(mw.getMessageInputStream()));
+
+        boolean headerUpdated = reader.lines()
+            .anyMatch(line -> line.equals("X-Test: X-Value"));
+        reader.close();
+        assertTrue(headerUpdated);
+    }
+
+    /**
+     * Test for JAMES-1154
+     */
+    @Test
+    public void testMessageStreamWithUpatedContent() throws MessagingException, IOException {
+        String newContent = "This is the new message content!";
+        mw.setText(newContent);
+        assertEquals(newContent, mw.getContent());
+
+        mw.saveChanges();
+
+        BufferedReader reader = new BufferedReader(new InputStreamReader(mw.getMessageInputStream()));
+
+        boolean contentUpdated = reader.lines()
+            .anyMatch(line -> line.equals(newContent));
+        reader.close();
+        assertTrue(contentUpdated);
+    }
+
+    @Test
+    public void testSize() throws MessagingException {
+        assertEquals(body.length(), mw.getSize());
+    }
+
+    @Test
+    public void testSizeModifiedHeaders() throws MessagingException {
+        mw.addHeader("whatever", "test");
+        assertEquals(body.length(), mw.getSize());
+    }
+
+    @Test
+    public void testSizeModifiedBodyWithoutSave() throws MessagingException {
+        String newBody = "This is the new body of the message";
+        mw.setText(newBody);
+        assertEquals(body.length(), mw.getSize());
+    }
+
+    @Test
+    public void testSizeModifiedBodyWithSave() throws MessagingException {
+        String newBody = "This is the new body of the message";
+        mw.setText(newBody);
+        mw.saveChanges();
+        assertEquals(body.length(), mw.getSize());
+    }
+    
+    @Test
+    public void jiraJames1593() throws MessagingException, IOException {
+        Properties noProperties = new Properties();
+        Session session = Session.getDefaultInstance(noProperties);
+        InputStream stream = ClassLoader.getSystemResourceAsStream("JAMES-1593.eml");
+        MimeMessage message = new MimeMessage(session, stream);
+        MimeMessageWrapper wrapper = new MimeMessageWrapper(message);
+        assertEquals("\"base64\"", wrapper.getEncoding());
+    }
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/container/core/src/test/java/org/apache/james/server/core/filesystem/FileSystemImplTest.java
----------------------------------------------------------------------
diff --git a/server/container/core/src/test/java/org/apache/james/server/core/filesystem/FileSystemImplTest.java b/server/container/core/src/test/java/org/apache/james/server/core/filesystem/FileSystemImplTest.java
new file mode 100644
index 0000000..c32b65a
--- /dev/null
+++ b/server/container/core/src/test/java/org/apache/james/server/core/filesystem/FileSystemImplTest.java
@@ -0,0 +1,32 @@
+/****************************************************************
+ * 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.server.core.filesystem;
+
+import org.apache.james.server.core.JamesServerResourceLoader;
+import org.apache.james.filesystem.api.AbstractFileSystemTest;
+import org.apache.james.filesystem.api.FileSystem;
+
+public class FileSystemImplTest extends AbstractFileSystemTest {
+
+    @Override
+    protected FileSystem buildFileSystem(String configurationRootDirectory) {
+        return new FileSystemImpl(new JamesServerResourceLoader(configurationRootDirectory));
+    }
+    
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/container/core/src/test/java/org/apache/james/server/core/filesystem/SimpleUrlTest.java
----------------------------------------------------------------------
diff --git a/server/container/core/src/test/java/org/apache/james/server/core/filesystem/SimpleUrlTest.java b/server/container/core/src/test/java/org/apache/james/server/core/filesystem/SimpleUrlTest.java
new file mode 100644
index 0000000..420f8b3
--- /dev/null
+++ b/server/container/core/src/test/java/org/apache/james/server/core/filesystem/SimpleUrlTest.java
@@ -0,0 +1,114 @@
+/****************************************************************
+ * 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.server.core.filesystem;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.junit.Test;
+
+public class SimpleUrlTest {
+
+    @Test(expected=NullPointerException.class)
+    public void simplifyPathShouldThrowOnNull() {
+        SimpleUrl.simplifyPath(null);
+    }
+    
+    @Test
+    public void simplifyPathShouldReturnEmptyOnEmptyArray() {
+        String actual = SimpleUrl.simplifyPath("");
+        assertThat(actual).isEmpty();
+    }
+
+    @Test
+    public void simplifyPathShoudReturnEmptyWhenSimplifyingCurrentDir() {
+        String actual = SimpleUrl.simplifyPath("./bar/.././foo/..");
+        assertThat(actual).isEmpty();
+    }
+
+    @Test
+    public void simplifyPathShoudReturnSimplifiedDirectory() {
+        String actual = SimpleUrl.simplifyPath("../foo/../bar/./baz");
+        assertThat(actual).isEqualTo("../bar/baz");
+    }
+
+    @Test
+    public void simplifiedShouldReturnEmptyWhenEmptyInput() {
+        assertThat(new SimpleUrl("").getSimplified()).isEmpty();
+    }
+
+    @Test(expected=NullPointerException.class)
+    public void simplifiedShouldThrowWhenNullInput() {
+        new SimpleUrl(null);
+    }
+
+    @Test
+    public void simplifiedShouldReturnInputValueWhenProtocolOnlyInput() {
+        assertThat(new SimpleUrl("file:").getSimplified()).isEqualTo("file:");
+    }
+
+    @Test
+    public void simplifiedShouldReturnInputValueWhenRelativePath() {
+        assertThat(new SimpleUrl("abcd/ef/gh").getSimplified()).isEqualTo("abcd/ef/gh");
+    }
+
+    @Test
+    public void simplifiedShouldReturnInputValueWhenAbsolutePath() {
+        assertThat(new SimpleUrl("/abcd/ef/gh").getSimplified()).isEqualTo("/abcd/ef/gh");
+    }
+
+    @Test
+    public void simplifiedShouldReturnInputValueWhenHttpUrl() {
+        assertThat(new SimpleUrl("http://example.com/ef/gh").getSimplified()).isEqualTo("http://example.com/ef/gh");
+    }
+
+    @Test
+    public void simplifiedShouldReturnInputValueWhenPathContainsColumn() {
+        assertThat(new SimpleUrl("ab/cd:ef/gh").getSimplified()).isEqualTo("ab/cd:ef/gh");
+    }
+
+    @Test
+    public void simplifiedShouldCollapseComplexePathWhenContainingParentDirElement() {
+        assertThat(new SimpleUrl("file:///home/user/./foo/../.bar/baz").getSimplified()).isEqualTo("file:///home/user/.bar/baz");
+    }
+
+    @Test
+    public void simplifiedShouldCollapseComplexePathWhenContainingParentDirElementInRelativePath() {
+        assertThat(new SimpleUrl("file://../.././foo/../.bar/baz").getSimplified()).isEqualTo("file://../../.bar/baz");
+    }
+
+    @Test
+    public void simplifiedShouldCollapseComplexePathWhenContainingParentDirElementWithoutDoubleSlashes() {
+        assertThat(new SimpleUrl("file:/home/user/./foo/../.bar/baz").getSimplified()).isEqualTo("file:/home/user/.bar/baz");
+    }
+
+    @Test
+    public void simplifiedShouldCollapseComplexePathWhenContainingParentDirElementInRelativePathWithoutDoubleSlashes() {
+        assertThat(new SimpleUrl("file:../.././foo/../.bar/baz").getSimplified()).isEqualTo("file:../../.bar/baz");
+    }
+
+    @Test
+    public void simplifiedShouldReplaceASingleWindowSeperatorByASlash() {
+        assertThat(new SimpleUrl("\\").getSimplified()).isEqualTo("/");
+    }
+
+    @Test
+    public void simplifiedShouldReplaceAllWindowsSeperatorBySlashes() {
+        assertThat(new SimpleUrl("file:c:\\\\programs\\run.exe").getSimplified()).isEqualTo("file:c://programs/run.exe");
+    }
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/container/guice/custom-mailets/src/main/java/com/custom/matchers/AnotherMatcher.java
----------------------------------------------------------------------
diff --git a/server/container/guice/custom-mailets/src/main/java/com/custom/matchers/AnotherMatcher.java b/server/container/guice/custom-mailets/src/main/java/com/custom/matchers/AnotherMatcher.java
index 06cd44a..1b9dd6c 100644
--- a/server/container/guice/custom-mailets/src/main/java/com/custom/matchers/AnotherMatcher.java
+++ b/server/container/guice/custom-mailets/src/main/java/com/custom/matchers/AnotherMatcher.java
@@ -24,7 +24,7 @@ import java.util.Collection;
 import javax.mail.MessagingException;
 
 import org.apache.mailet.Mail;
-import org.apache.mailet.MailAddress;
+import org.apache.james.core.MailAddress;
 import org.apache.mailet.base.GenericMatcher;
 
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/container/guice/custom-mailets/src/main/java/org/apache/james/transport/matchers/CustomMatcher.java
----------------------------------------------------------------------
diff --git a/server/container/guice/custom-mailets/src/main/java/org/apache/james/transport/matchers/CustomMatcher.java b/server/container/guice/custom-mailets/src/main/java/org/apache/james/transport/matchers/CustomMatcher.java
index 785592a..eea805f 100644
--- a/server/container/guice/custom-mailets/src/main/java/org/apache/james/transport/matchers/CustomMatcher.java
+++ b/server/container/guice/custom-mailets/src/main/java/org/apache/james/transport/matchers/CustomMatcher.java
@@ -24,7 +24,7 @@ import java.util.Collection;
 import javax.mail.MessagingException;
 
 import org.apache.mailet.Mail;
-import org.apache.mailet.MailAddress;
+import org.apache.james.core.MailAddress;
 import org.apache.mailet.base.GenericMatcher;
 
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/container/guice/guice-common/src/main/java/org/apache/james/modules/CommonServicesModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/guice-common/src/main/java/org/apache/james/modules/CommonServicesModule.java b/server/container/guice/guice-common/src/main/java/org/apache/james/modules/CommonServicesModule.java
index cc308a2..30d123e 100644
--- a/server/container/guice/guice-common/src/main/java/org/apache/james/modules/CommonServicesModule.java
+++ b/server/container/guice/guice-common/src/main/java/org/apache/james/modules/CommonServicesModule.java
@@ -24,8 +24,8 @@ import java.util.Optional;
 import javax.inject.Named;
 import javax.inject.Singleton;
 
-import org.apache.james.core.JamesServerResourceLoader;
-import org.apache.james.core.filesystem.FileSystemImpl;
+import org.apache.james.server.core.JamesServerResourceLoader;
+import org.apache.james.server.core.filesystem.FileSystemImpl;
 import org.apache.james.filesystem.api.FileSystem;
 import org.apache.james.filesystem.api.JamesDirectoriesProvider;
 import org.apache.james.modules.server.AsyncTasksExecutorModule;

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/container/guice/guice-common/src/test/java/org/apache/james/modules/TestFilesystemModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/guice-common/src/test/java/org/apache/james/modules/TestFilesystemModule.java b/server/container/guice/guice-common/src/test/java/org/apache/james/modules/TestFilesystemModule.java
index 9f5bba4..29486a1 100644
--- a/server/container/guice/guice-common/src/test/java/org/apache/james/modules/TestFilesystemModule.java
+++ b/server/container/guice/guice-common/src/test/java/org/apache/james/modules/TestFilesystemModule.java
@@ -23,7 +23,7 @@ import java.io.File;
 import java.io.IOException;
 import java.util.function.Supplier;
 
-import org.apache.james.core.JamesServerResourceLoader;
+import org.apache.james.server.core.JamesServerResourceLoader;
 import org.apache.james.filesystem.api.FileSystem;
 import org.apache.james.filesystem.api.JamesDirectoriesProvider;
 import org.junit.rules.TemporaryFolder;

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/container/guice/guice-common/src/test/java/org/apache/james/utils/FileConfigurationProviderTest.java
----------------------------------------------------------------------
diff --git a/server/container/guice/guice-common/src/test/java/org/apache/james/utils/FileConfigurationProviderTest.java b/server/container/guice/guice-common/src/test/java/org/apache/james/utils/FileConfigurationProviderTest.java
index 6318fc7..e9b715b 100644
--- a/server/container/guice/guice-common/src/test/java/org/apache/james/utils/FileConfigurationProviderTest.java
+++ b/server/container/guice/guice-common/src/test/java/org/apache/james/utils/FileConfigurationProviderTest.java
@@ -22,8 +22,8 @@ package org.apache.james.utils;
 import static org.assertj.core.api.Assertions.assertThat;
 
 import org.apache.commons.configuration.HierarchicalConfiguration;
-import org.apache.james.core.JamesServerResourceLoader;
-import org.apache.james.core.filesystem.FileSystemImpl;
+import org.apache.james.server.core.JamesServerResourceLoader;
+import org.apache.james.server.core.filesystem.FileSystemImpl;
 import org.apache.james.filesystem.api.FileSystem;
 import org.junit.Before;
 import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/container/guice/guice-common/src/test/java/org/apache/james/utils/InMemoryMailRepositoryStoreTest.java
----------------------------------------------------------------------
diff --git a/server/container/guice/guice-common/src/test/java/org/apache/james/utils/InMemoryMailRepositoryStoreTest.java b/server/container/guice/guice-common/src/test/java/org/apache/james/utils/InMemoryMailRepositoryStoreTest.java
index 9964eae..8c4e309 100644
--- a/server/container/guice/guice-common/src/test/java/org/apache/james/utils/InMemoryMailRepositoryStoreTest.java
+++ b/server/container/guice/guice-common/src/test/java/org/apache/james/utils/InMemoryMailRepositoryStoreTest.java
@@ -24,8 +24,8 @@ import static org.assertj.core.api.Assertions.fail;
 
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.HierarchicalConfiguration;
-import org.apache.james.core.JamesServerResourceLoader;
-import org.apache.james.core.filesystem.FileSystemImpl;
+import org.apache.james.server.core.JamesServerResourceLoader;
+import org.apache.james.server.core.filesystem.FileSystemImpl;
 import org.apache.james.filesystem.api.FileSystem;
 import org.apache.james.mailrepository.api.MailRepositoryStore;
 import org.apache.james.mailrepository.file.FileMailRepository;

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/server/MemoryMailQueueFactory.java
----------------------------------------------------------------------
diff --git a/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/server/MemoryMailQueueFactory.java b/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/server/MemoryMailQueueFactory.java
index eebc896..d3f5941 100644
--- a/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/server/MemoryMailQueueFactory.java
+++ b/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/server/MemoryMailQueueFactory.java
@@ -27,7 +27,7 @@ import java.util.concurrent.TimeUnit;
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeMessage;
 
-import org.apache.james.core.MailImpl;
+import org.apache.james.server.core.MailImpl;
 import org.apache.james.queue.api.MailQueue;
 import org.apache.james.queue.api.MailQueueFactory;
 import org.apache.james.queue.api.MailQueueItemDecoratorFactory;

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/container/spring/src/main/java/org/apache/james/container/spring/context/JamesServerApplicationContext.java
----------------------------------------------------------------------
diff --git a/server/container/spring/src/main/java/org/apache/james/container/spring/context/JamesServerApplicationContext.java b/server/container/spring/src/main/java/org/apache/james/container/spring/context/JamesServerApplicationContext.java
index 06dba52..c8bdc91 100644
--- a/server/container/spring/src/main/java/org/apache/james/container/spring/context/JamesServerApplicationContext.java
+++ b/server/container/spring/src/main/java/org/apache/james/container/spring/context/JamesServerApplicationContext.java
@@ -20,7 +20,7 @@ package org.apache.james.container.spring.context;
 
 import org.apache.james.container.spring.resource.DefaultJamesResourceLoader;
 import org.apache.james.container.spring.resource.JamesResourceLoader;
-import org.apache.james.core.JamesServerResourceLoader;
+import org.apache.james.server.core.JamesServerResourceLoader;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.support.ClassPathXmlApplicationContext;
 import org.springframework.core.io.Resource;

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/container/spring/src/main/java/org/apache/james/container/spring/tool/James23Importer.java
----------------------------------------------------------------------
diff --git a/server/container/spring/src/main/java/org/apache/james/container/spring/tool/James23Importer.java b/server/container/spring/src/main/java/org/apache/james/container/spring/tool/James23Importer.java
index e9fb853..f17e39d 100644
--- a/server/container/spring/src/main/java/org/apache/james/container/spring/tool/James23Importer.java
+++ b/server/container/spring/src/main/java/org/apache/james/container/spring/tool/James23Importer.java
@@ -27,7 +27,7 @@ import javax.inject.Named;
 import javax.mail.Flags;
 import javax.mail.MessagingException;
 
-import org.apache.james.core.MimeMessageInputStream;
+import org.apache.james.server.core.MimeMessageInputStream;
 import org.apache.james.domainlist.api.DomainList;
 import org.apache.james.domainlist.api.DomainListException;
 import org.apache.james.mailbox.MailboxManager;

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/container/spring/src/test/java/org/apache/james/container/spring/filesystem/FileSystemImplTest.java
----------------------------------------------------------------------
diff --git a/server/container/spring/src/test/java/org/apache/james/container/spring/filesystem/FileSystemImplTest.java b/server/container/spring/src/test/java/org/apache/james/container/spring/filesystem/FileSystemImplTest.java
index 8b5b9e2..e878a02 100644
--- a/server/container/spring/src/test/java/org/apache/james/container/spring/filesystem/FileSystemImplTest.java
+++ b/server/container/spring/src/test/java/org/apache/james/container/spring/filesystem/FileSystemImplTest.java
@@ -21,7 +21,7 @@ package org.apache.james.container.spring.filesystem;
 import org.apache.james.container.spring.context.JamesServerApplicationContext;
 import org.apache.james.container.spring.resource.DefaultJamesResourceLoader;
 import org.apache.james.container.spring.resource.JamesResourceLoader;
-import org.apache.james.core.JamesServerResourceLoader;
+import org.apache.james.server.core.JamesServerResourceLoader;
 import org.apache.james.filesystem.api.AbstractFileSystemTest;
 import org.apache.james.filesystem.api.FileSystem;
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/data/data-api/src/main/java/org/apache/james/user/api/UsersRepository.java
----------------------------------------------------------------------
diff --git a/server/data/data-api/src/main/java/org/apache/james/user/api/UsersRepository.java b/server/data/data-api/src/main/java/org/apache/james/user/api/UsersRepository.java
index 038fd30..8cb09ac 100644
--- a/server/data/data-api/src/main/java/org/apache/james/user/api/UsersRepository.java
+++ b/server/data/data-api/src/main/java/org/apache/james/user/api/UsersRepository.java
@@ -22,7 +22,7 @@ package org.apache.james.user.api;
 import java.util.Iterator;
 
 import org.apache.james.user.api.model.User;
-import org.apache.mailet.MailAddress;
+import org.apache.james.core.MailAddress;
 
 /**
  * Interface for a repository of users. A repository represents a logical

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/data/data-api/src/main/java/org/apache/james/user/api/model/JamesUser.java
----------------------------------------------------------------------
diff --git a/server/data/data-api/src/main/java/org/apache/james/user/api/model/JamesUser.java b/server/data/data-api/src/main/java/org/apache/james/user/api/model/JamesUser.java
index 65dda8a..1db501d 100644
--- a/server/data/data-api/src/main/java/org/apache/james/user/api/model/JamesUser.java
+++ b/server/data/data-api/src/main/java/org/apache/james/user/api/model/JamesUser.java
@@ -19,7 +19,7 @@
 
 package org.apache.james.user.api.model;
 
-import org.apache.mailet.MailAddress;
+import org.apache.james.core.MailAddress;
 
 /**
  * Interface for objects representing users of an email/ messaging system.

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/data/data-file/src/main/java/org/apache/james/mailrepository/file/FileMailRepository.java
----------------------------------------------------------------------
diff --git a/server/data/data-file/src/main/java/org/apache/james/mailrepository/file/FileMailRepository.java b/server/data/data-file/src/main/java/org/apache/james/mailrepository/file/FileMailRepository.java
index b26d2e2..9865783 100644
--- a/server/data/data-file/src/main/java/org/apache/james/mailrepository/file/FileMailRepository.java
+++ b/server/data/data-file/src/main/java/org/apache/james/mailrepository/file/FileMailRepository.java
@@ -35,8 +35,8 @@ import javax.mail.internet.MimeMessage;
 
 import org.apache.commons.configuration.DefaultConfigurationBuilder;
 import org.apache.commons.configuration.HierarchicalConfiguration;
-import org.apache.james.core.MimeMessageCopyOnWriteProxy;
-import org.apache.james.core.MimeMessageWrapper;
+import org.apache.james.server.core.MimeMessageCopyOnWriteProxy;
+import org.apache.james.server.core.MimeMessageWrapper;
 import org.apache.james.filesystem.api.FileSystem;
 import org.apache.james.mailrepository.lib.AbstractMailRepository;
 import org.apache.james.repository.file.FilePersistentObjectRepository;

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/data/data-file/src/main/java/org/apache/james/mailrepository/file/MBoxMailRepository.java
----------------------------------------------------------------------
diff --git a/server/data/data-file/src/main/java/org/apache/james/mailrepository/file/MBoxMailRepository.java b/server/data/data-file/src/main/java/org/apache/james/mailrepository/file/MBoxMailRepository.java
index f96e883..2ea4417 100755
--- a/server/data/data-file/src/main/java/org/apache/james/mailrepository/file/MBoxMailRepository.java
+++ b/server/data/data-file/src/main/java/org/apache/james/mailrepository/file/MBoxMailRepository.java
@@ -72,7 +72,7 @@ import javax.mail.internet.MimeMessage;
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.HierarchicalConfiguration;
 import org.apache.commons.io.FileUtils;
-import org.apache.james.core.MailImpl;
+import org.apache.james.server.core.MailImpl;
 import org.apache.james.lifecycle.api.Configurable;
 import org.apache.james.mailrepository.api.MailRepository;
 import org.apache.mailet.Mail;

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/data/data-file/src/main/java/org/apache/james/mailrepository/file/MimeMessageStreamRepositorySource.java
----------------------------------------------------------------------
diff --git a/server/data/data-file/src/main/java/org/apache/james/mailrepository/file/MimeMessageStreamRepositorySource.java b/server/data/data-file/src/main/java/org/apache/james/mailrepository/file/MimeMessageStreamRepositorySource.java
index 4cc7c71..a06475f 100644
--- a/server/data/data-file/src/main/java/org/apache/james/mailrepository/file/MimeMessageStreamRepositorySource.java
+++ b/server/data/data-file/src/main/java/org/apache/james/mailrepository/file/MimeMessageStreamRepositorySource.java
@@ -19,7 +19,7 @@
 
 package org.apache.james.mailrepository.file;
 
-import org.apache.james.core.MimeMessageSource;
+import org.apache.james.server.core.MimeMessageSource;
 import org.apache.james.repository.api.StreamRepository;
 
 import java.io.IOException;
@@ -87,7 +87,7 @@ public class MimeMessageStreamRepositorySource extends MimeMessageSource {
     }
 
     /**
-     * @see org.apache.james.core.MimeMessageSource#getMessageSize()
+     * @see org.apache.james.server.core.MimeMessageSource#getMessageSize()
      */
     public long getMessageSize() throws IOException {
         if (size == -1) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/data/data-jcr/src/main/java/org/apache/james/mailrepository/jcr/JCRMailRepository.java
----------------------------------------------------------------------
diff --git a/server/data/data-jcr/src/main/java/org/apache/james/mailrepository/jcr/JCRMailRepository.java b/server/data/data-jcr/src/main/java/org/apache/james/mailrepository/jcr/JCRMailRepository.java
index 475bc45..6c3e796 100644
--- a/server/data/data-jcr/src/main/java/org/apache/james/mailrepository/jcr/JCRMailRepository.java
+++ b/server/data/data-jcr/src/main/java/org/apache/james/mailrepository/jcr/JCRMailRepository.java
@@ -58,11 +58,11 @@ import org.apache.commons.io.IOUtils;
 import org.apache.jackrabbit.commons.cnd.CndImporter;
 import org.apache.jackrabbit.util.ISO9075;
 import org.apache.jackrabbit.util.Text;
-import org.apache.james.core.MailImpl;
+import org.apache.james.server.core.MailImpl;
 import org.apache.james.mailrepository.api.MailRepository;
 import org.apache.james.mailrepository.lib.AbstractMailRepository;
 import org.apache.mailet.Mail;
-import org.apache.mailet.MailAddress;
+import org.apache.james.core.MailAddress;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/JDBCMailRepository.java
----------------------------------------------------------------------
diff --git a/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/JDBCMailRepository.java b/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/JDBCMailRepository.java
index 00c5d2a..d1ad86c 100644
--- a/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/JDBCMailRepository.java
+++ b/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/JDBCMailRepository.java
@@ -51,16 +51,16 @@ import javax.sql.DataSource;
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.DefaultConfigurationBuilder;
 import org.apache.commons.configuration.HierarchicalConfiguration;
-import org.apache.james.core.MailImpl;
-import org.apache.james.core.MimeMessageCopyOnWriteProxy;
-import org.apache.james.core.MimeMessageWrapper;
+import org.apache.james.server.core.MailImpl;
+import org.apache.james.server.core.MimeMessageCopyOnWriteProxy;
+import org.apache.james.server.core.MimeMessageWrapper;
 import org.apache.james.filesystem.api.FileSystem;
 import org.apache.james.mailrepository.lib.AbstractMailRepository;
 import org.apache.james.repository.file.FilePersistentStreamRepository;
 import org.apache.james.util.sql.JDBCUtil;
 import org.apache.james.util.sql.SqlResources;
 import org.apache.mailet.Mail;
-import org.apache.mailet.MailAddress;
+import org.apache.james.core.MailAddress;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/MessageInputStream.java
----------------------------------------------------------------------
diff --git a/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/MessageInputStream.java b/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/MessageInputStream.java
index 1474431..4985da6 100644
--- a/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/MessageInputStream.java
+++ b/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/MessageInputStream.java
@@ -30,9 +30,9 @@ import java.io.PipedOutputStream;
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeMessage;
 
-import org.apache.james.core.MimeMessageCopyOnWriteProxy;
-import org.apache.james.core.MimeMessageUtil;
-import org.apache.james.core.MimeMessageWrapper;
+import org.apache.james.server.core.MimeMessageCopyOnWriteProxy;
+import org.apache.james.server.core.MimeMessageUtil;
+import org.apache.james.server.core.MimeMessageWrapper;
 import org.apache.james.repository.api.StreamRepository;
 import org.apache.mailet.Mail;
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/MimeMessageJDBCSource.java
----------------------------------------------------------------------
diff --git a/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/MimeMessageJDBCSource.java b/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/MimeMessageJDBCSource.java
index 53373da..fab0714 100644
--- a/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/MimeMessageJDBCSource.java
+++ b/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/MimeMessageJDBCSource.java
@@ -29,7 +29,7 @@ import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 
-import org.apache.james.core.MimeMessageSource;
+import org.apache.james.server.core.MimeMessageSource;
 import org.apache.james.repository.api.StreamRepository;
 import org.apache.james.util.sql.JDBCUtil;
 
@@ -117,7 +117,7 @@ public class MimeMessageJDBCSource extends MimeMessageSource {
      * is to support a repository with the entire message in the database, which
      * is how James 1.2 worked.
      * 
-     * @see org.apache.james.core.MimeMessageSource#getInputStream()
+     * @see org.apache.james.server.core.MimeMessageSource#getInputStream()
      */
     public synchronized InputStream getInputStream() throws IOException {
         Connection conn = null;
@@ -176,7 +176,7 @@ public class MimeMessageJDBCSource extends MimeMessageSource {
     /**
      * Runs a custom SQL statement to check the size of the message body
      * 
-     * @see org.apache.james.core.MimeMessageSource#getMessageSize()
+     * @see org.apache.james.server.core.MimeMessageSource#getMessageSize()
      */
     public synchronized long getMessageSize() throws IOException {
         if (size != -1)

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/data/data-jdbc/src/main/java/org/apache/james/user/jdbc/JamesUsersJdbcRepository.java
----------------------------------------------------------------------
diff --git a/server/data/data-jdbc/src/main/java/org/apache/james/user/jdbc/JamesUsersJdbcRepository.java b/server/data/data-jdbc/src/main/java/org/apache/james/user/jdbc/JamesUsersJdbcRepository.java
index 6f2756d..ed3f182 100644
--- a/server/data/data-jdbc/src/main/java/org/apache/james/user/jdbc/JamesUsersJdbcRepository.java
+++ b/server/data/data-jdbc/src/main/java/org/apache/james/user/jdbc/JamesUsersJdbcRepository.java
@@ -22,7 +22,7 @@ package org.apache.james.user.jdbc;
 import org.apache.james.user.api.model.User;
 import org.apache.james.user.lib.model.DefaultJamesUser;
 import org.apache.james.user.lib.model.DefaultUser;
-import org.apache.mailet.MailAddress;
+import org.apache.james.core.MailAddress;
 
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/vacation/RecipientId.java
----------------------------------------------------------------------
diff --git a/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/vacation/RecipientId.java b/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/vacation/RecipientId.java
index 9bae604..f8e8f2c 100644
--- a/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/vacation/RecipientId.java
+++ b/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/vacation/RecipientId.java
@@ -21,7 +21,7 @@ package org.apache.james.jmap.api.vacation;
 
 import java.util.Objects;
 
-import org.apache.mailet.MailAddress;
+import org.apache.james.core.MailAddress;
 
 import com.google.common.base.Preconditions;
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/vacation/AbstractNotificationRegistryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/vacation/AbstractNotificationRegistryTest.java b/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/vacation/AbstractNotificationRegistryTest.java
index ba687d0..dd31bae 100644
--- a/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/vacation/AbstractNotificationRegistryTest.java
+++ b/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/vacation/AbstractNotificationRegistryTest.java
@@ -29,7 +29,7 @@ import java.util.Optional;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.james.util.date.ZonedDateTimeProvider;
-import org.apache.mailet.MailAddress;
+import org.apache.james.core.MailAddress;
 import org.junit.Before;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/data/data-ldap-integration-testing/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-ldap-integration-testing/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java b/server/data/data-ldap-integration-testing/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java
index 785d74f..619f2af 100644
--- a/server/data/data-ldap-integration-testing/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java
+++ b/server/data/data-ldap-integration-testing/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java
@@ -23,7 +23,7 @@ import static org.assertj.core.api.Assertions.assertThat;
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.HierarchicalConfiguration;
 import org.apache.commons.configuration.plist.PropertyListConfiguration;
-import org.apache.mailet.MailAddress;
+import org.apache.james.core.MailAddress;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepository.java
----------------------------------------------------------------------
diff --git a/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepository.java b/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepository.java
index bae64b4..27092ac 100644
--- a/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepository.java
+++ b/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepository.java
@@ -50,7 +50,7 @@ import org.apache.james.util.retry.naming.ldap.RetryingLdapContext;
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.HierarchicalConfiguration;
 import org.apache.commons.lang.StringUtils;
-import org.apache.mailet.MailAddress;
+import org.apache.james.core.MailAddress;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTable.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTable.java b/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTable.java
index ff40572..7e429f5 100644
--- a/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTable.java
+++ b/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTable.java
@@ -34,7 +34,7 @@ import org.apache.james.lifecycle.api.Configurable;
 import org.apache.james.rrt.api.RecipientRewriteTable;
 import org.apache.james.rrt.api.RecipientRewriteTableException;
 import org.apache.james.rrt.lib.Mapping.Type;
-import org.apache.mailet.MailAddress;
+import org.apache.james.core.MailAddress;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/data/data-library/src/main/java/org/apache/james/rrt/lib/RecipientRewriteTableUtil.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/main/java/org/apache/james/rrt/lib/RecipientRewriteTableUtil.java b/server/data/data-library/src/main/java/org/apache/james/rrt/lib/RecipientRewriteTableUtil.java
index c3859e0..966feee 100644
--- a/server/data/data-library/src/main/java/org/apache/james/rrt/lib/RecipientRewriteTableUtil.java
+++ b/server/data/data-library/src/main/java/org/apache/james/rrt/lib/RecipientRewriteTableUtil.java
@@ -27,7 +27,7 @@ import java.util.regex.Pattern;
 import java.util.regex.PatternSyntaxException;
 
 import org.apache.james.rrt.api.RecipientRewriteTable;
-import org.apache.mailet.MailAddress;
+import org.apache.james.core.MailAddress;
 
 /**
  * This helper class contains methods for the RecipientRewriteTable implementations

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractUsersRepository.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractUsersRepository.java b/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractUsersRepository.java
index 28f6128..ebc60ee 100644
--- a/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractUsersRepository.java
+++ b/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractUsersRepository.java
@@ -30,7 +30,7 @@ import org.apache.james.user.api.UsersRepository;
 import org.apache.james.user.api.UsersRepositoryException;
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.HierarchicalConfiguration;
-import org.apache.mailet.MailAddress;
+import org.apache.james.core.MailAddress;
 
 import com.google.common.annotations.VisibleForTesting;
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/data/data-library/src/main/java/org/apache/james/user/lib/model/DefaultJamesUser.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/main/java/org/apache/james/user/lib/model/DefaultJamesUser.java b/server/data/data-library/src/main/java/org/apache/james/user/lib/model/DefaultJamesUser.java
index 29e449a..6f0960e 100644
--- a/server/data/data-library/src/main/java/org/apache/james/user/lib/model/DefaultJamesUser.java
+++ b/server/data/data-library/src/main/java/org/apache/james/user/lib/model/DefaultJamesUser.java
@@ -20,7 +20,7 @@
 package org.apache.james.user.lib.model;
 
 import org.apache.james.user.api.model.JamesUser;
-import org.apache.mailet.MailAddress;
+import org.apache.james.core.MailAddress;
 
 /**
  * Implementation of User Interface.
@@ -87,7 +87,7 @@ public class DefaultJamesUser extends DefaultUser implements JamesUser {
     }
 
     /**
-     * @see org.apache.james.user.api.model.JamesUser#setForwardingDestination(org.apache.mailet.MailAddress)
+     * @see org.apache.james.user.api.model.JamesUser#setForwardingDestination(MailAddress)
      */
     public boolean setForwardingDestination(MailAddress address) {
         /* TODO: Some verification would be good */

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/data/data-library/src/test/java/org/apache/james/mailrepository/AbstractMailRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/test/java/org/apache/james/mailrepository/AbstractMailRepositoryTest.java b/server/data/data-library/src/test/java/org/apache/james/mailrepository/AbstractMailRepositoryTest.java
index 56e3979..571d314 100644
--- a/server/data/data-library/src/test/java/org/apache/james/mailrepository/AbstractMailRepositoryTest.java
+++ b/server/data/data-library/src/test/java/org/apache/james/mailrepository/AbstractMailRepositoryTest.java
@@ -33,13 +33,13 @@ import javax.mail.MessagingException;
 import javax.mail.internet.MimeMessage;
 import javax.mail.util.SharedByteArrayInputStream;
 
-import org.apache.james.core.MailImpl;
-import org.apache.james.core.MimeMessageCopyOnWriteProxy;
-import org.apache.james.core.MimeMessageInputStreamSource;
+import org.apache.james.server.core.MailImpl;
+import org.apache.james.server.core.MimeMessageCopyOnWriteProxy;
+import org.apache.james.server.core.MimeMessageInputStreamSource;
 import org.apache.james.lifecycle.api.LifecycleUtil;
 import org.apache.james.mailrepository.api.MailRepository;
 import org.apache.mailet.Mail;
-import org.apache.mailet.MailAddress;
+import org.apache.james.core.MailAddress;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/data/data-library/src/test/java/org/apache/james/user/lib/AbstractUsersRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/test/java/org/apache/james/user/lib/AbstractUsersRepositoryTest.java b/server/data/data-library/src/test/java/org/apache/james/user/lib/AbstractUsersRepositoryTest.java
index a4d889d..dd52a7f 100644
--- a/server/data/data-library/src/test/java/org/apache/james/user/lib/AbstractUsersRepositoryTest.java
+++ b/server/data/data-library/src/test/java/org/apache/james/user/lib/AbstractUsersRepositoryTest.java
@@ -28,7 +28,7 @@ import org.apache.james.lifecycle.api.LifecycleUtil;
 import org.apache.james.user.api.AlreadyExistInUsersRepositoryException;
 import org.apache.james.user.api.UsersRepositoryException;
 import org.apache.james.user.api.model.User;
-import org.apache.mailet.MailAddress;
+import org.apache.james.core.MailAddress;
 import org.junit.Assume;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/TemporaryFilesystemModule.java
----------------------------------------------------------------------
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/TemporaryFilesystemModule.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/TemporaryFilesystemModule.java
index 7aee891..22eaac4 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/TemporaryFilesystemModule.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/TemporaryFilesystemModule.java
@@ -30,7 +30,7 @@ import java.util.List;
 import java.util.function.Supplier;
 
 import org.apache.commons.io.IOUtils;
-import org.apache.james.core.JamesServerResourceLoader;
+import org.apache.james.server.core.JamesServerResourceLoader;
 import org.apache.james.filesystem.api.FileSystem;
 import org.apache.james.filesystem.api.JamesDirectoriesProvider;
 import org.apache.james.modules.CommonServicesModule;

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/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 01a3e02..47f71c4 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
@@ -37,7 +37,7 @@ import org.apache.james.util.streams.SwarmGenericContainer;
 import org.apache.james.utils.IMAPMessageReader;
 import org.apache.james.utils.DataProbeImpl;
 import org.apache.mailet.Mail;
-import org.apache.mailet.MailAddress;
+import org.apache.james.core.MailAddress;
 import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.After;

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/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 15b1fac..6247e2e 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
@@ -39,7 +39,7 @@ import org.apache.james.util.streams.SwarmGenericContainer;
 import org.apache.james.utils.IMAPMessageReader;
 import org.apache.james.utils.DataProbeImpl;
 import org.apache.mailet.Mail;
-import org.apache.mailet.MailAddress;
+import org.apache.james.core.MailAddress;
 import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.After;

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/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 b11d216..bb24326 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
@@ -35,7 +35,7 @@ import org.apache.james.probe.DataProbe;
 import org.apache.james.utils.IMAPMessageReader;
 import org.apache.james.utils.DataProbeImpl;
 import org.apache.mailet.Mail;
-import org.apache.mailet.MailAddress;
+import org.apache.james.core.MailAddress;
 import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.After;

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/mailet/mailetcontainer-api/src/test/java/org/apache/james/mailetcontainer/api/mock/ExceptionThrowingMatcher.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailetcontainer-api/src/test/java/org/apache/james/mailetcontainer/api/mock/ExceptionThrowingMatcher.java b/server/mailet/mailetcontainer-api/src/test/java/org/apache/james/mailetcontainer/api/mock/ExceptionThrowingMatcher.java
index cd5e98e..839c981 100644
--- a/server/mailet/mailetcontainer-api/src/test/java/org/apache/james/mailetcontainer/api/mock/ExceptionThrowingMatcher.java
+++ b/server/mailet/mailetcontainer-api/src/test/java/org/apache/james/mailetcontainer/api/mock/ExceptionThrowingMatcher.java
@@ -21,7 +21,7 @@ package org.apache.james.mailetcontainer.api.mock;
 import java.util.Collection;
 import javax.mail.MessagingException;
 import org.apache.mailet.Mail;
-import org.apache.mailet.MailAddress;
+import org.apache.james.core.MailAddress;
 import org.apache.mailet.Matcher;
 import org.apache.mailet.MatcherConfig;
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/mailet/mailetcontainer-api/src/test/java/org/apache/james/mailetcontainer/api/mock/MockMailetContext.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailetcontainer-api/src/test/java/org/apache/james/mailetcontainer/api/mock/MockMailetContext.java b/server/mailet/mailetcontainer-api/src/test/java/org/apache/james/mailetcontainer/api/mock/MockMailetContext.java
index 8662256..ac061d7 100644
--- a/server/mailet/mailetcontainer-api/src/test/java/org/apache/james/mailetcontainer/api/mock/MockMailetContext.java
+++ b/server/mailet/mailetcontainer-api/src/test/java/org/apache/james/mailetcontainer/api/mock/MockMailetContext.java
@@ -32,7 +32,7 @@ import javax.mail.internet.MimeMessage;
 import org.apache.mailet.HostAddress;
 import org.apache.mailet.LookupException;
 import org.apache.mailet.Mail;
-import org.apache.mailet.MailAddress;
+import org.apache.james.core.MailAddress;
 import org.apache.mailet.MailetContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/mailet/mailetcontainer-api/src/test/java/org/apache/james/mailetcontainer/api/mock/MockMatcher.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailetcontainer-api/src/test/java/org/apache/james/mailetcontainer/api/mock/MockMatcher.java b/server/mailet/mailetcontainer-api/src/test/java/org/apache/james/mailetcontainer/api/mock/MockMatcher.java
index 6407eb8..170e83f 100644
--- a/server/mailet/mailetcontainer-api/src/test/java/org/apache/james/mailetcontainer/api/mock/MockMatcher.java
+++ b/server/mailet/mailetcontainer-api/src/test/java/org/apache/james/mailetcontainer/api/mock/MockMatcher.java
@@ -26,7 +26,7 @@ import java.util.List;
 import javax.mail.MessagingException;
 
 import org.apache.mailet.Mail;
-import org.apache.mailet.MailAddress;
+import org.apache.james.core.MailAddress;
 import org.apache.mailet.Matcher;
 import org.apache.mailet.MatcherConfig;
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java
index c0fa112..197035e 100644
--- a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java
+++ b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java
@@ -40,7 +40,7 @@ import javax.mail.internet.ParseException;
 
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.HierarchicalConfiguration;
-import org.apache.james.core.MailImpl;
+import org.apache.james.server.core.MailImpl;
 import org.apache.james.dnsservice.api.DNSService;
 import org.apache.james.dnsservice.api.TemporaryResolutionException;
 import org.apache.james.dnsservice.library.MXHostAddressIterator;
@@ -55,7 +55,7 @@ import org.apache.james.user.api.UsersRepositoryException;
 import org.apache.mailet.HostAddress;
 import org.apache.mailet.LookupException;
 import org.apache.mailet.Mail;
-import org.apache.mailet.MailAddress;
+import org.apache.james.core.MailAddress;
 import org.apache.mailet.MailetContext;
 import org.apache.mailet.base.RFC2822Headers;
 import org.slf4j.Logger;

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/ProcessorUtil.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/ProcessorUtil.java b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/ProcessorUtil.java
index 1d127c4..25adf18 100644
--- a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/ProcessorUtil.java
+++ b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/ProcessorUtil.java
@@ -26,7 +26,7 @@ import java.util.Collection;
 import javax.mail.MessagingException;
 
 import org.apache.mailet.Mail;
-import org.apache.mailet.MailAddress;
+import org.apache.james.core.MailAddress;
 import org.apache.mailet.MailetException;
 import org.slf4j.Logger;
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/camel/MatcherSplitter.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/camel/MatcherSplitter.java b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/camel/MatcherSplitter.java
index ff5b812..df09138 100644
--- a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/camel/MatcherSplitter.java
+++ b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/camel/MatcherSplitter.java
@@ -32,14 +32,14 @@ import org.apache.camel.Body;
 import org.apache.camel.ExchangeProperty;
 import org.apache.camel.Handler;
 import org.apache.camel.InOnly;
-import org.apache.james.core.MailImpl;
+import org.apache.james.server.core.MailImpl;
 import org.apache.james.mailetcontainer.impl.ProcessorUtil;
 import org.apache.james.mailetcontainer.lib.AbstractStateMailetProcessor.MailetProcessorListener;
 import org.apache.james.metrics.api.MetricFactory;
 import org.apache.james.metrics.api.TimeMetric;
 import org.apache.james.util.MDCBuilder;
 import org.apache.mailet.Mail;
-import org.apache.mailet.MailAddress;
+import org.apache.james.core.MailAddress;
 import org.apache.mailet.Matcher;
 import org.slf4j.Logger;
 


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