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 ad...@apache.org on 2017/12/05 07:30:41 UTC

[01/19] james-project git commit: JAMES-2242 Correct logback in mailet integration tests

Repository: james-project
Updated Branches:
  refs/heads/master 534f081d6 -> 16410ae2d


JAMES-2242 Correct logback in mailet integration 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/6a2d0b2a
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/6a2d0b2a
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/6a2d0b2a

Branch: refs/heads/master
Commit: 6a2d0b2a47e082eb8bdc9c18ec80333e7be9811d
Parents: 534f081
Author: benwa <bt...@linagora.com>
Authored: Tue Nov 28 17:29:18 2017 +0700
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Mon Dec 4 14:42:12 2017 +0100

----------------------------------------------------------------------
 .../src/test/resources/logback-test.xml         |  4 +++-
 .../src/test/resources/logback.xml              | 23 --------------------
 2 files changed, 3 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/6a2d0b2a/server/mailet/integration-testing/src/test/resources/logback-test.xml
----------------------------------------------------------------------
diff --git a/server/mailet/integration-testing/src/test/resources/logback-test.xml b/server/mailet/integration-testing/src/test/resources/logback-test.xml
index 665c8be..0524945 100644
--- a/server/mailet/integration-testing/src/test/resources/logback-test.xml
+++ b/server/mailet/integration-testing/src/test/resources/logback-test.xml
@@ -8,8 +8,10 @@
                 </encoder>
         </appender>
 
-        <root level="INFO">
+        <root level="WARN">
                 <appender-ref ref="CONSOLE" />
         </root>
 
+        <logger name="org.apache.james" level="DEBUG"/>
+
 </configuration>

http://git-wip-us.apache.org/repos/asf/james-project/blob/6a2d0b2a/server/mailet/integration-testing/src/test/resources/logback.xml
----------------------------------------------------------------------
diff --git a/server/mailet/integration-testing/src/test/resources/logback.xml b/server/mailet/integration-testing/src/test/resources/logback.xml
deleted file mode 100644
index b6c3147..0000000
--- a/server/mailet/integration-testing/src/test/resources/logback.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<configuration>
-
-        <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
-                <resetJUL>true</resetJUL>
-        </contextListener>
-
-        <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
-                <encoder>
-                        <pattern>%d{HH:mm:ss.SSS} [%-5level] %logger{15} - %msg%n%rEx</pattern>
-                        <immediateFlush>false</immediateFlush>
-                </encoder>
-        </appender>
-
-        <root level="WARN">
-                <appender-ref ref="CONSOLE" />
-        </root>
-
-        <logger name="org.apache.james.mailetcontainer.impl.JamesMailetContext" level="DEBUG"/>
-
-        <logger name="com.datastax.driver.core.QueryLogger.SLOW" level="DEBUG" />
-
-</configuration>


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


[10/19] james-project git commit: JAMES-2242 Memory mail queue should preserve state

Posted by ad...@apache.org.
JAMES-2242 Memory mail queue should preserve state


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

Branch: refs/heads/master
Commit: be236f0da099e37f39f043632981fb7b86ef0657
Parents: 775de66
Author: benwa <bt...@linagora.com>
Authored: Wed Nov 29 15:19:20 2017 +0700
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Mon Dec 4 14:42:18 2017 +0100

----------------------------------------------------------------------
 .../modules/server/MemoryMailQueueFactory.java    |  3 ++-
 .../james/server/MemoryMailQueueFactoryTest.java  | 18 ++++++++++++++++++
 2 files changed, 20 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/be236f0d/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 8fcc941..5918d5b 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,10 +27,10 @@ import java.util.concurrent.TimeUnit;
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeMessage;
 
-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;
+import org.apache.james.server.core.MailImpl;
 import org.apache.mailet.Mail;
 
 import com.github.fge.lambdas.Throwing;
@@ -88,6 +88,7 @@ public class MemoryMailQueueFactory implements MailQueueFactory {
 
         private Mail cloneMail(Mail mail) throws MessagingException {
             MailImpl mailImpl = MailImpl.duplicate(mail);
+            mailImpl.setState(mail.getState());
             Optional.ofNullable(mail.getMessage())
                     .ifPresent(Throwing.consumer(message -> mailImpl.setMessage(new MimeMessage(message))));
             return mailImpl;

http://git-wip-us.apache.org/repos/asf/james-project/blob/be236f0d/server/container/guice/memory-guice/src/test/java/org/apache/james/server/MemoryMailQueueFactoryTest.java
----------------------------------------------------------------------
diff --git a/server/container/guice/memory-guice/src/test/java/org/apache/james/server/MemoryMailQueueFactoryTest.java b/server/container/guice/memory-guice/src/test/java/org/apache/james/server/MemoryMailQueueFactoryTest.java
index eaf22b8..62357bb 100644
--- a/server/container/guice/memory-guice/src/test/java/org/apache/james/server/MemoryMailQueueFactoryTest.java
+++ b/server/container/guice/memory-guice/src/test/java/org/apache/james/server/MemoryMailQueueFactoryTest.java
@@ -97,6 +97,24 @@ public class MemoryMailQueueFactoryTest {
     }
 
     @Test
+    public void dequeueShouldPreserveState() throws Exception{
+        String state = "state";
+        Mail mail = FakeMail.builder()
+                .name(NAME_1)
+                .state(state)
+                .build();
+        memoryMailQueueFactory.getQueue(KEY).enQueue(mail);
+
+        String newState = memoryMailQueueFactory
+            .getQueue(KEY)
+            .deQueue()
+            .getMail()
+            .getState();
+
+        assertThat(newState).isEqualTo(state);
+    }
+
+    @Test
     public void dequeueShouldWorkWithMultipleMessages() throws Exception{
         Mail mail1 = FakeMail.builder()
                 .name(NAME_1)


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


[06/19] james-project git commit: JAMES-2242 Avoid swallowing exceptions in bouncer

Posted by ad...@apache.org.
JAMES-2242 Avoid swallowing exceptions in bouncer


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

Branch: refs/heads/master
Commit: b483910843d7cf8f79c711e9928a6b39741252dc
Parents: 0b4923b
Author: benwa <bt...@linagora.com>
Authored: Wed Nov 29 14:25:47 2017 +0700
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Mon Dec 4 14:42:16 2017 +0100

----------------------------------------------------------------------
 .../apache/james/transport/mailets/remoteDelivery/Bouncer.java | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/b4839108/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/Bouncer.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/Bouncer.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/Bouncer.java
index 8cca867..05a302b 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/Bouncer.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/Bouncer.java
@@ -28,8 +28,8 @@ import java.net.UnknownHostException;
 import javax.mail.MessagingException;
 import javax.mail.SendFailedException;
 
-import org.apache.mailet.Mail;
 import org.apache.james.core.MailAddress;
+import org.apache.mailet.Mail;
 import org.apache.mailet.MailetContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -70,9 +70,9 @@ public class Bouncer {
         try {
             mailetContext.bounce(mail, explanationText(mail, ex));
         } catch (MessagingException me) {
-            LOGGER.warn("Encountered unexpected messaging exception while bouncing message: {}", me.getMessage());
+            LOGGER.warn("Encountered unexpected messaging exception while bouncing message", me);
         } catch (Exception e) {
-            LOGGER.warn("Encountered unexpected exception while bouncing message: {}", e.getMessage());
+            LOGGER.warn("Encountered unexpected exception while bouncing message", e);
         }
     }
 


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


[12/19] james-project git commit: JAMES-2242 Add integration tests for Bouncing related mailets

Posted by ad...@apache.org.
JAMES-2242 Add integration tests for Bouncing related mailets


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

Branch: refs/heads/master
Commit: 4936fb01f74c18f3c59e4235813e2b0feac4b75b
Parents: 9c1a7cd
Author: benwa <bt...@linagora.com>
Authored: Wed Nov 29 16:53:22 2017 +0700
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Mon Dec 4 14:42:20 2017 +0100

----------------------------------------------------------------------
 .../james/mailets/BounceIntegrationTest.java    | 296 +++++++++++++++++++
 1 file changed, 296 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/4936fb01/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/BounceIntegrationTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/BounceIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/BounceIntegrationTest.java
new file mode 100644
index 0000000..c7216df
--- /dev/null
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/BounceIntegrationTest.java
@@ -0,0 +1,296 @@
+/****************************************************************
+ * 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.mailets;
+
+import org.apache.james.jmap.mailet.VacationMailet;
+import org.apache.james.mailbox.model.MailboxConstants;
+import org.apache.james.mailets.configuration.CommonProcessors;
+import org.apache.james.mailets.configuration.MailetConfiguration;
+import org.apache.james.mailets.configuration.MailetContainer;
+import org.apache.james.mailets.configuration.ProcessorConfiguration;
+import org.apache.james.probe.DataProbe;
+import org.apache.james.transport.mailets.Bounce;
+import org.apache.james.transport.mailets.DSNBounce;
+import org.apache.james.transport.mailets.Forward;
+import org.apache.james.transport.mailets.LocalDelivery;
+import org.apache.james.transport.mailets.NotifyPostmaster;
+import org.apache.james.transport.mailets.NotifySender;
+import org.apache.james.transport.mailets.Redirect;
+import org.apache.james.transport.mailets.RemoveMimeHeader;
+import org.apache.james.transport.mailets.Resend;
+import org.apache.james.transport.mailets.ToProcessor;
+import org.apache.james.transport.matchers.All;
+import org.apache.james.transport.matchers.RecipientIs;
+import org.apache.james.transport.matchers.RecipientIsLocal;
+import org.apache.james.utils.DataProbeImpl;
+import org.apache.james.utils.IMAPMessageReader;
+import org.apache.james.utils.SMTPMessageSender;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+
+import com.jayway.awaitility.Awaitility;
+import com.jayway.awaitility.Duration;
+import com.jayway.awaitility.core.ConditionFactory;
+
+public class BounceIntegrationTest {
+    private static final String LOCALHOST_IP = "127.0.0.1";
+    private static final int SMTP_PORT = 1025;
+    private static final int IMAP_PORT = 1143;
+    private static final String PASSWORD = "secret";
+
+    private static final String JAMES_APACHE_ORG = "james.org";
+    public static final String POSTMASTER = "postmaster@" + JAMES_APACHE_ORG;
+    public static final String BOUNCE_RECEIVER = "bounce.receiver@" + JAMES_APACHE_ORG;
+    private static final String RECIPIENT = "to@" + JAMES_APACHE_ORG;
+
+    @Rule
+    public TemporaryFolder temporaryFolder = new TemporaryFolder();
+
+    private TemporaryJamesServer jamesServer;
+    private ConditionFactory calmlyAwait;
+    private DataProbe dataProbe;
+
+
+    @Before
+    public void setup() throws Exception {
+        Duration slowPacedPollInterval = Duration.FIVE_HUNDRED_MILLISECONDS;
+        calmlyAwait = Awaitility.with()
+            .pollInterval(slowPacedPollInterval)
+            .and()
+            .with()
+            .pollDelay(slowPacedPollInterval)
+            .await();
+    }
+
+    @After
+    public void tearDown() {
+        jamesServer.shutdown();
+    }
+
+    @Test
+    public void dsnBounceMailetShouldDeliverBounce() throws Exception {
+        jamesServer = new TemporaryJamesServer(temporaryFolder,
+            generateMailetContainerConfiguration(MailetConfiguration.builder()
+                .matcher(All.class)
+                .mailet(DSNBounce.class)
+                .addProperty("passThrough", "false")));
+        dataProbe = jamesServer.getProbe(DataProbeImpl.class);
+
+        dataProbe.addDomain(JAMES_APACHE_ORG);
+        dataProbe.addUser(RECIPIENT, PASSWORD);
+        dataProbe.addUser(BOUNCE_RECEIVER, PASSWORD);
+
+        try (SMTPMessageSender messageSender = SMTPMessageSender.noAuthentication(LOCALHOST_IP, SMTP_PORT, JAMES_APACHE_ORG);
+             IMAPMessageReader imapMessageReader = new IMAPMessageReader(LOCALHOST_IP, IMAP_PORT)) {
+            messageSender.sendMessage(BOUNCE_RECEIVER, RECIPIENT);
+
+            calmlyAwait.atMost(Duration.ONE_MINUTE).until(() ->
+                imapMessageReader.userReceivedMessageInMailbox(BOUNCE_RECEIVER, PASSWORD, MailboxConstants.INBOX));
+        }
+    }
+
+    @Test
+    public void bounceMailetShouldDeliverBounce() throws Exception {
+        jamesServer = new TemporaryJamesServer(temporaryFolder,
+            generateMailetContainerConfiguration(MailetConfiguration.builder()
+                .matcher(All.class)
+                .mailet(Bounce.class)
+                .addProperty("passThrough", "false")));
+        dataProbe = jamesServer.getProbe(DataProbeImpl.class);
+
+        dataProbe.addDomain(JAMES_APACHE_ORG);
+        dataProbe.addUser(RECIPIENT, PASSWORD);
+        dataProbe.addUser(BOUNCE_RECEIVER, PASSWORD);
+
+        try (SMTPMessageSender messageSender = SMTPMessageSender.noAuthentication(LOCALHOST_IP, SMTP_PORT, JAMES_APACHE_ORG);
+             IMAPMessageReader imapMessageReader = new IMAPMessageReader(LOCALHOST_IP, IMAP_PORT)) {
+            messageSender.sendMessage(BOUNCE_RECEIVER, RECIPIENT);
+
+            calmlyAwait.atMost(Duration.ONE_MINUTE).until(() ->
+                imapMessageReader.userReceivedMessageInMailbox(BOUNCE_RECEIVER, PASSWORD, MailboxConstants.INBOX));
+        }
+    }
+
+    @Test
+    public void forwardMailetShouldDeliverBounce() throws Exception {
+        jamesServer = new TemporaryJamesServer(temporaryFolder,
+            generateMailetContainerConfiguration(MailetConfiguration.builder()
+                .matcher(All.class)
+                .mailet(Forward.class)
+                .addProperty("forwardTo", BOUNCE_RECEIVER)
+                .addProperty("passThrough", "false")));
+        dataProbe = jamesServer.getProbe(DataProbeImpl.class);
+
+        dataProbe.addDomain(JAMES_APACHE_ORG);
+        dataProbe.addUser(RECIPIENT, PASSWORD);
+        dataProbe.addUser(BOUNCE_RECEIVER, PASSWORD);
+
+        try (SMTPMessageSender messageSender = SMTPMessageSender.noAuthentication(LOCALHOST_IP, SMTP_PORT, JAMES_APACHE_ORG);
+             IMAPMessageReader imapMessageReader = new IMAPMessageReader(LOCALHOST_IP, IMAP_PORT)) {
+            messageSender.sendMessage("any@" + JAMES_APACHE_ORG, RECIPIENT);
+
+            calmlyAwait.atMost(Duration.ONE_MINUTE).until(() ->
+                imapMessageReader.userReceivedMessageInMailbox(BOUNCE_RECEIVER, PASSWORD, MailboxConstants.INBOX));
+        }
+    }
+
+    @Test
+    public void redirectMailetShouldDeliverBounce() throws Exception {
+        jamesServer = new TemporaryJamesServer(temporaryFolder,
+            generateMailetContainerConfiguration(MailetConfiguration.builder()
+                .matcher(All.class)
+                .mailet(Redirect.class)
+                .addProperty("recipients", BOUNCE_RECEIVER)
+                .addProperty("passThrough", "false")));
+        dataProbe = jamesServer.getProbe(DataProbeImpl.class);
+
+        dataProbe.addDomain(JAMES_APACHE_ORG);
+        dataProbe.addUser(RECIPIENT, PASSWORD);
+        dataProbe.addUser(BOUNCE_RECEIVER, PASSWORD);
+
+        try (SMTPMessageSender messageSender = SMTPMessageSender.noAuthentication(LOCALHOST_IP, SMTP_PORT, JAMES_APACHE_ORG);
+             IMAPMessageReader imapMessageReader = new IMAPMessageReader(LOCALHOST_IP, IMAP_PORT)) {
+            messageSender.sendMessage("any@" + JAMES_APACHE_ORG, RECIPIENT);
+
+            calmlyAwait.atMost(Duration.ONE_MINUTE).until(() ->
+                imapMessageReader.userReceivedMessageInMailbox(BOUNCE_RECEIVER, PASSWORD, MailboxConstants.INBOX));
+        }
+    }
+
+    @Test
+    public void resendMailetShouldDeliverBounce() throws Exception {
+        jamesServer = new TemporaryJamesServer(temporaryFolder,
+            generateMailetContainerConfiguration(MailetConfiguration.builder()
+                .matcher(All.class)
+                .mailet(Resend.class)
+                .addProperty("recipients", BOUNCE_RECEIVER)
+                .addProperty("passThrough", "false")));
+        dataProbe = jamesServer.getProbe(DataProbeImpl.class);
+
+        dataProbe.addDomain(JAMES_APACHE_ORG);
+        dataProbe.addUser(RECIPIENT, PASSWORD);
+        dataProbe.addUser(BOUNCE_RECEIVER, PASSWORD);
+
+        try (SMTPMessageSender messageSender = SMTPMessageSender.noAuthentication(LOCALHOST_IP, SMTP_PORT, JAMES_APACHE_ORG);
+             IMAPMessageReader imapMessageReader = new IMAPMessageReader(LOCALHOST_IP, IMAP_PORT)) {
+            messageSender.sendMessage("any@" + JAMES_APACHE_ORG, RECIPIENT);
+
+            calmlyAwait.atMost(Duration.ONE_MINUTE).until(() ->
+                imapMessageReader.userReceivedMessageInMailbox(BOUNCE_RECEIVER, PASSWORD, MailboxConstants.INBOX));
+        }
+    }
+
+    @Test
+    public void notifySenderMailetShouldDeliverBounce() throws Exception {
+        jamesServer = new TemporaryJamesServer(temporaryFolder,
+            generateMailetContainerConfiguration(MailetConfiguration.builder()
+                .matcher(All.class)
+                .mailet(NotifySender.class)
+                .addProperty("passThrough", "false")));
+        dataProbe = jamesServer.getProbe(DataProbeImpl.class);
+
+        dataProbe.addDomain(JAMES_APACHE_ORG);
+        dataProbe.addUser(RECIPIENT, PASSWORD);
+        dataProbe.addUser(BOUNCE_RECEIVER, PASSWORD);
+
+        try (SMTPMessageSender messageSender = SMTPMessageSender.noAuthentication(LOCALHOST_IP, SMTP_PORT, JAMES_APACHE_ORG);
+             IMAPMessageReader imapMessageReader = new IMAPMessageReader(LOCALHOST_IP, IMAP_PORT)) {
+            messageSender.sendMessage(BOUNCE_RECEIVER, RECIPIENT);
+
+            calmlyAwait.atMost(Duration.ONE_MINUTE).until(() ->
+                imapMessageReader.userReceivedMessageInMailbox(BOUNCE_RECEIVER, PASSWORD, MailboxConstants.INBOX));
+        }
+    }
+
+    @Test
+    public void notifyPostmasterMailetShouldDeliverBounce() throws Exception {
+        jamesServer = new TemporaryJamesServer(temporaryFolder,
+            generateMailetContainerConfiguration(MailetConfiguration.builder()
+                .matcher(All.class)
+                .mailet(NotifyPostmaster.class)
+                .addProperty("passThrough", "false")));
+        dataProbe = jamesServer.getProbe(DataProbeImpl.class);
+
+        dataProbe.addDomain(JAMES_APACHE_ORG);
+        dataProbe.addUser(RECIPIENT, PASSWORD);
+        dataProbe.addUser(POSTMASTER, PASSWORD);
+
+        try (SMTPMessageSender messageSender = SMTPMessageSender.noAuthentication(LOCALHOST_IP, SMTP_PORT, JAMES_APACHE_ORG);
+             IMAPMessageReader imapMessageReader = new IMAPMessageReader(LOCALHOST_IP, IMAP_PORT)) {
+            messageSender.sendMessage("any@" + JAMES_APACHE_ORG, RECIPIENT);
+
+            calmlyAwait.atMost(Duration.ONE_MINUTE).until(() ->
+                imapMessageReader.userReceivedMessageInMailbox(POSTMASTER, PASSWORD, MailboxConstants.INBOX));
+        }
+    }
+
+    private MailetContainer generateMailetContainerConfiguration(MailetConfiguration.Builder redirectionMailetConfiguration) {
+        return MailetContainer.builder()
+            .postmaster(POSTMASTER)
+            .threads(5)
+            .addProcessor(CommonProcessors.root())
+            .addProcessor(CommonProcessors.error())
+            .addProcessor(transport())
+            .addProcessor(bounces(redirectionMailetConfiguration))
+            .build();
+    }
+
+    private ProcessorConfiguration transport() {
+        // This processor delivers emails to BOUNCE_RECEIVER and POSTMASTER
+        // Other recipients will be bouncing
+        return ProcessorConfiguration.builder()
+            .state("transport")
+            .addMailet(MailetConfiguration.builder()
+                .matcher(All.class)
+                .mailet(RemoveMimeHeader.class)
+                .addProperty("name", "bcc")
+                .build())
+            .addMailet(MailetConfiguration.builder()
+                .matcher(RecipientIsLocal.class)
+                .mailet(VacationMailet.class)
+                .build())
+            .addMailet(MailetConfiguration.builder()
+                .matcher(RecipientIs.class)
+                .matcherCondition(BOUNCE_RECEIVER)
+                .mailet(LocalDelivery.class)
+                .build())
+            .addMailet(MailetConfiguration.builder()
+                .matcher(RecipientIs.class)
+                .matcherCondition(POSTMASTER)
+                .mailet(LocalDelivery.class)
+                .build())
+            .addMailet(MailetConfiguration.builder()
+                .matcher(All.class)
+                .mailet(ToProcessor.class)
+                .addProperty("processor", "bounces")
+                .build())
+            .build();
+    }
+
+    public static ProcessorConfiguration bounces(MailetConfiguration.Builder redirectionMailetConfiguration) {
+        return ProcessorConfiguration.builder()
+            .state("bounces")
+            .addMailet(redirectionMailetConfiguration.build())
+            .build();
+    }
+}


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


[09/19] james-project git commit: JAMES-2242 JamesMailetContext should not fail to bounce when no postmaster address

Posted by ad...@apache.org.
JAMES-2242 JamesMailetContext should not fail to bounce when no postmaster address


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

Branch: refs/heads/master
Commit: 9cc4c6cbce1b272553afded7413ecfb8466fbdbb
Parents: b483910
Author: benwa <bt...@linagora.com>
Authored: Wed Nov 29 14:58:56 2017 +0700
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Mon Dec 4 14:42:17 2017 +0100

----------------------------------------------------------------------
 .../impl/JamesMailetContext.java                | 13 +++++++++---
 .../impl/JamesMailetContextTest.java            | 21 +++++++++++++++++++-
 2 files changed, 30 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/9cc4c6cb/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 197035e..f460d55 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
@@ -27,6 +27,7 @@ import java.util.Hashtable;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Locale;
+import java.util.Optional;
 import java.util.Vector;
 
 import javax.inject.Inject;
@@ -40,7 +41,7 @@ import javax.mail.internet.ParseException;
 
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.HierarchicalConfiguration;
-import org.apache.james.server.core.MailImpl;
+import org.apache.james.core.MailAddress;
 import org.apache.james.dnsservice.api.DNSService;
 import org.apache.james.dnsservice.api.TemporaryResolutionException;
 import org.apache.james.dnsservice.library.MXHostAddressIterator;
@@ -50,17 +51,19 @@ import org.apache.james.lifecycle.api.Configurable;
 import org.apache.james.lifecycle.api.LifecycleUtil;
 import org.apache.james.queue.api.MailQueue;
 import org.apache.james.queue.api.MailQueueFactory;
+import org.apache.james.server.core.MailImpl;
 import org.apache.james.user.api.UsersRepository;
 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.james.core.MailAddress;
 import org.apache.mailet.MailetContext;
 import org.apache.mailet.base.RFC2822Headers;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.github.fge.lambdas.Throwing;
+import com.github.fge.lambdas.consumers.ConsumerChainer;
 import com.google.common.collect.ImmutableSet;
 
 @SuppressWarnings("deprecation")
@@ -193,8 +196,12 @@ public class JamesMailetContext implements MailetContext, Configurable {
         }
 
         MailImpl reply = rawBounce(mail, message);
+
         // Change the sender...
-        reply.getMessage().setFrom(bouncer.toInternetAddress());
+        if (bouncer != null) {
+            reply.getMessage().setFrom(bouncer.toInternetAddress());
+        }
+
         reply.getMessage().saveChanges();
         // Send it off ... with null reverse-path
         reply.setSender(null);

http://git-wip-us.apache.org/repos/asf/james-project/blob/9cc4c6cb/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 f5e5f76..ccb8abd 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
@@ -21,19 +21,26 @@ package org.apache.james.mailetcontainer.impl;
 
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyString;
 import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 import org.apache.commons.configuration.HierarchicalConfiguration;
+import org.apache.james.core.MailAddress;
 import org.apache.james.dnsservice.api.DNSService;
 import org.apache.james.domainlist.lib.AbstractDomainList;
 import org.apache.james.domainlist.memory.MemoryDomainList;
+import org.apache.james.queue.api.MailQueue;
+import org.apache.james.queue.api.MailQueueFactory;
+import org.apache.james.server.core.MailImpl;
 import org.apache.james.user.memory.MemoryUsersRepository;
-import org.apache.james.core.MailAddress;
+import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.Before;
 import org.junit.Test;
 
+import com.google.common.collect.ImmutableList;
+
 public class JamesMailetContextTest {
     public static final String DOMAIN_COM = "domain.com";
     public static final String USERNAME = "user";
@@ -57,6 +64,9 @@ public class JamesMailetContextTest {
         usersRepository = MemoryUsersRepository.withVirtualHosting();
         usersRepository.setDomainList(domainList);
         testee = new JamesMailetContext();
+        MailQueueFactory mailQueueFactory = mock(MailQueueFactory.class);
+        when(mailQueueFactory.getQueue(anyString())).thenReturn(mock(MailQueue.class));
+        testee.retrieveRootMailQueue(mailQueueFactory);
         testee.setDomainList(domainList);
         testee.setUsersRepository(usersRepository);
         mailAddress = new MailAddress(USERMAIL);
@@ -141,4 +151,13 @@ public class JamesMailetContextTest {
     public void isLocalEmailShouldBeFalseWhenMailIsNull() throws Exception {
         assertThat(testee.isLocalEmail(null)).isFalse();
     }
+
+    @Test
+    public void bounceShouldNotFailWhenNonConfiguredPostmaster() throws Exception {
+        MailImpl mail = new MailImpl();
+        mail.setSender(mailAddress);
+        mail.setRecipients(ImmutableList.of(mailAddress));
+        mail.setMessage(MimeMessageBuilder.defaultMimeMessage());
+        testee.bounce(mail, "message");
+    }
 }


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


[19/19] james-project git commit: JAMES-2242 Solve Fake SMTP wait strategy

Posted by ad...@apache.org.
JAMES-2242 Solve Fake SMTP wait strategy

Default Host port strategy waits for the FIRST port to be bound. However Fake SMTP port is slowest to be bound. This can lead to tests targetting the not-yet bound port.

Adding additional polling solves the issue.


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

Branch: refs/heads/master
Commit: 16410ae2daa7f9c331fa226f98f29349cb1c7eb5
Parents: 62b00eb
Author: benwa <bt...@linagora.com>
Authored: Mon Dec 4 18:14:48 2017 +0700
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Mon Dec 4 14:42:23 2017 +0100

----------------------------------------------------------------------
 .../org/apache/james/mpt/smtp/ForwardSmtpTest.java  | 16 +++++++++++++++-
 .../james/util/streams/SwarmGenericContainer.java   | 13 +++++++++++++
 .../GatewayRemoteDeliveryIntegrationTest.java       |  2 ++
 .../james/transport/mailets/GroupMappingTest.java   |  2 ++
 .../james/jmap/VacationRelayIntegrationTest.java    |  2 ++
 5 files changed, 34 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/16410ae2/mpt/impl/smtp/core/src/main/java/org/apache/james/mpt/smtp/ForwardSmtpTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/smtp/core/src/main/java/org/apache/james/mpt/smtp/ForwardSmtpTest.java b/mpt/impl/smtp/core/src/main/java/org/apache/james/mpt/smtp/ForwardSmtpTest.java
index 1e87578..954ebd2 100644
--- a/mpt/impl/smtp/core/src/main/java/org/apache/james/mpt/smtp/ForwardSmtpTest.java
+++ b/mpt/impl/smtp/core/src/main/java/org/apache/james/mpt/smtp/ForwardSmtpTest.java
@@ -27,6 +27,7 @@ import java.net.InetAddress;
 import java.util.Locale;
 
 import org.apache.james.mpt.script.SimpleScriptedTestProtocol;
+import org.apache.james.util.streams.ContainerNames;
 import org.apache.james.util.streams.SwarmGenericContainer;
 import org.junit.Before;
 import org.junit.Rule;
@@ -36,6 +37,9 @@ import org.junit.rules.TemporaryFolder;
 import org.testcontainers.containers.wait.HostPortWaitStrategy;
 
 import com.google.common.base.Charsets;
+import com.jayway.awaitility.Awaitility;
+import com.jayway.awaitility.Duration;
+import com.jayway.awaitility.core.ConditionFactory;
 import com.jayway.restassured.RestAssured;
 import com.jayway.restassured.builder.RequestSpecBuilder;
 import com.jayway.restassured.http.ContentType;
@@ -48,7 +52,7 @@ public abstract class ForwardSmtpTest {
     public static final String PASSWORD = "secret";
 
     private final TemporaryFolder folder = new TemporaryFolder();
-    private final SwarmGenericContainer fakeSmtp = new SwarmGenericContainer("weave/rest-smtp-sink:latest")
+    private final SwarmGenericContainer fakeSmtp = new SwarmGenericContainer(ContainerNames.FAKE_SMTP)
             .withExposedPorts(25)
             .withAffinityToContainer()
             .waitingFor(new HostPortWaitStrategy());
@@ -82,6 +86,16 @@ public abstract class ForwardSmtpTest {
         		.setPort(80)
         		.setBaseUri("http://" + containerIp.getHostAddress())
         		.build();
+
+        Duration slowPacedPollInterval = Duration.FIVE_HUNDRED_MILLISECONDS;
+        ConditionFactory calmlyAwait = Awaitility.with()
+            .pollInterval(slowPacedPollInterval)
+            .and()
+            .with()
+            .pollDelay(slowPacedPollInterval)
+            .await();
+
+        calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> fakeSmtp.tryConnect(25));
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/16410ae2/server/container/util-java8/src/test/java/org/apache/james/util/streams/SwarmGenericContainer.java
----------------------------------------------------------------------
diff --git a/server/container/util-java8/src/test/java/org/apache/james/util/streams/SwarmGenericContainer.java b/server/container/util-java8/src/test/java/org/apache/james/util/streams/SwarmGenericContainer.java
index 8b50aa2..fbecff2 100644
--- a/server/container/util-java8/src/test/java/org/apache/james/util/streams/SwarmGenericContainer.java
+++ b/server/container/util-java8/src/test/java/org/apache/james/util/streams/SwarmGenericContainer.java
@@ -19,9 +19,12 @@
 
 package org.apache.james.util.streams;
 
+import java.net.Socket;
 import java.time.Duration;
 import java.util.List;
 
+import javax.net.SocketFactory;
+
 import org.junit.Assume;
 import org.junit.rules.TestRule;
 import org.junit.runner.Description;
@@ -131,6 +134,16 @@ public class SwarmGenericContainer implements TestRule {
         return container.getContainerInfo();
     }
 
+    public boolean tryConnect(int port) {
+        try {
+            Socket socket = SocketFactory.getDefault().createSocket(getContainerIp(), port);
+            socket.close();
+            return true;
+        } catch (Exception e) {
+            return false;
+        }
+    }
+
     @Override
     public Statement apply(Statement statement, Description description) {
         return container.apply(statement, description);

http://git-wip-us.apache.org/repos/asf/james-project/blob/16410ae2/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java
index 9094ab6..374d7bf 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java
@@ -123,6 +123,8 @@ public class GatewayRemoteDeliveryIntegrationTest {
             .pollDelay(slowPacedPollInterval)
             .await();
 
+        calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> fakeSmtp.tryConnect(25));
+
         RestAssured.requestSpecification = new RequestSpecBuilder()
             .setContentType(ContentType.JSON)
             .setAccept(ContentType.JSON)

http://git-wip-us.apache.org/repos/asf/james-project/blob/16410ae2/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 c9f36f9..4ec65fb 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
@@ -174,6 +174,8 @@ public class GroupMappingTest {
         Duration slowPacedPollInterval = Duration.FIVE_HUNDRED_MILLISECONDS;
         calmlyAwait = Awaitility.with().pollInterval(slowPacedPollInterval).and().with().pollDelay(slowPacedPollInterval).await();
 
+        calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> fakeSmtp.tryConnect(25));
+
         dataProbe = jamesServer.getProbe(DataProbeImpl.class);
         dataProbe.addDomain(DOMAIN1);
         dataProbe.addDomain(DOMAIN2);

http://git-wip-us.apache.org/repos/asf/james-project/blob/16410ae2/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/VacationRelayIntegrationTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/VacationRelayIntegrationTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/VacationRelayIntegrationTest.java
index f0b9108..1887c45 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/VacationRelayIntegrationTest.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/VacationRelayIntegrationTest.java
@@ -116,6 +116,8 @@ public abstract class VacationRelayIntegrationTest {
             .pollInterval(slowPacedPollInterval)
             .and()
             .pollDelay(slowPacedPollInterval).await();
+
+        calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> fakeSmtp.tryConnect(25));
     }
 
     @After


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


[03/19] james-project git commit: JAMES-2242 Forward documentation is not matching actual available arguments

Posted by ad...@apache.org.
JAMES-2242 Forward documentation is not matching actual available arguments


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

Branch: refs/heads/master
Commit: c772f5a5fd9f9386d747f9fa762674b7d3a2bac3
Parents: 41c00e7
Author: benwa <bt...@linagora.com>
Authored: Wed Nov 29 16:01:13 2017 +0700
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Mon Dec 4 14:42:14 2017 +0100

----------------------------------------------------------------------
 .../main/java/org/apache/james/transport/mailets/Forward.java   | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/c772f5a5/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Forward.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Forward.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Forward.java
index 59ca7d1..456ba27 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Forward.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Forward.java
@@ -21,11 +21,13 @@ package org.apache.james.transport.mailets;
 
 import java.util.List;
 import java.util.Optional;
+
 import javax.inject.Inject;
 import javax.mail.MessagingException;
 import javax.mail.internet.AddressException;
 import javax.mail.internet.InternetAddress;
 
+import org.apache.james.core.MailAddress;
 import org.apache.james.dnsservice.api.DNSService;
 import org.apache.james.transport.mailets.redirect.AddressExtractor;
 import org.apache.james.transport.mailets.redirect.InitParameters;
@@ -39,7 +41,6 @@ import org.apache.james.transport.util.ReplyToUtils;
 import org.apache.james.transport.util.SenderUtils;
 import org.apache.james.transport.util.TosUtils;
 import org.apache.mailet.Mail;
-import org.apache.james.core.MailAddress;
 import org.apache.mailet.base.GenericMailet;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -79,7 +80,7 @@ import com.google.common.collect.ImmutableList;
  * <pre>
  * <code>
  * &lt;mailet match="All" class="Resend">
- *   &lt;recipients&gt;comma delimited list of email addresses&lt;/recipients&gt;
+ *   &lt;forwardTo&gt;comma delimited list of email addresses&lt;/recipients&gt;
  *   &lt;passThrough&gt;true or false&lt;/passThrough&gt;
  *   &lt;fakeDomainCheck&gt;<i>true or false</i>&lt;/fakeDomainCheck&gt;
  *   &lt;debug&gt;<i>true or false</i>&lt;/debug&gt;


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


[04/19] james-project git commit: JAMES-2242 Remove unused MailetContext subclass

Posted by ad...@apache.org.
JAMES-2242 Remove unused MailetContext subclass


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

Branch: refs/heads/master
Commit: 41c00e7dc30066c98eead45d05bd94bbca5113ab
Parents: 765a8fd
Author: benwa <bt...@linagora.com>
Authored: Wed Nov 29 16:41:24 2017 +0700
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Mon Dec 4 14:42:14 2017 +0100

----------------------------------------------------------------------
 .../api/mock/MockMailetContext.java             | 195 ---------------
 .../impl/camel/CamelCompositeProcessorTest.java |   4 +-
 .../impl/camel/CamelMailetProcessorTest.java    |   4 +-
 .../transport/mailets/RecordingMailContext.java | 235 -------------------
 .../smtpserver/mock/mailet/MockMailContext.java | 167 -------------
 5 files changed, 4 insertions(+), 601 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/41c00e7d/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
deleted file mode 100644
index ac061d7..0000000
--- a/server/mailet/mailetcontainer-api/src/test/java/org/apache/james/mailetcontainer/api/mock/MockMailetContext.java
+++ /dev/null
@@ -1,195 +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.mailetcontainer.api.mock;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import javax.mail.MessagingException;
-import javax.mail.internet.AddressException;
-import javax.mail.internet.MimeMessage;
-
-import org.apache.mailet.HostAddress;
-import org.apache.mailet.LookupException;
-import org.apache.mailet.Mail;
-import org.apache.james.core.MailAddress;
-import org.apache.mailet.MailetContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@SuppressWarnings("deprecation")
-public class MockMailetContext implements MailetContext {
-
-    private static final Logger LOGGER = LoggerFactory.getLogger(MockMailetContext.class);
-
-    private final Map<String, Object> attributes = new HashMap<>();
-    private final List<Mail> mails = new ArrayList<>();
-
-    @Override
-    public void bounce(Mail arg0, String arg1) throws MessagingException {
-        throw new UnsupportedOperationException("Not implemented");
-    }
-
-    @Override
-    public void bounce(Mail arg0, String arg1, MailAddress arg2) throws MessagingException {
-        throw new UnsupportedOperationException("Not implemented");
-    }
-
-    @Override
-    public List<String> dnsLookup(String s, RecordType recordType) throws LookupException {
-        throw new UnsupportedOperationException("Not implemented");
-    }
-
-    @Override
-    public Object getAttribute(String arg0) {
-        return attributes.get(arg0);
-    }
-
-    @Override
-    public Iterator<String> getAttributeNames() {
-        return attributes.keySet().iterator();
-    }
-
-    /**
-     * Return an {@link Collection} which holds "mx.localhost" if the given host
-     * was "localhost". Otherwise and empty {@link Collection} is returned
-     */
-    @Override
-    public Collection<String> getMailServers(String host) {
-        List<String> servers = new ArrayList<>();
-        if ("localhost".equalsIgnoreCase(host)) {
-            servers.add("mx.localhost");
-        }
-        return servers;
-    }
-
-    @Override
-    public int getMajorVersion() {
-        return 0;
-    }
-
-    @Override
-    public int getMinorVersion() {
-        return 0;
-    }
-
-    @Override
-    public MailAddress getPostmaster() {
-        try {
-            return new MailAddress("postmaster@localhost");
-        } catch (AddressException e) {
-            // will never happen
-            return null;
-        }
-    }
-
-    @Override
-    public Iterator<HostAddress> getSMTPHostAddresses(String arg0) {
-        return new ArrayList<HostAddress>().iterator();
-    }
-
-    @Override
-    public String getServerInfo() {
-        return "Mock Server";
-    }
-
-    /**
-     * @see #isLocalUser(String)
-     */
-    @Override
-    public boolean isLocalEmail(MailAddress arg0) {
-        return isLocalUser(arg0.toString());
-    }
-
-    /**
-     * Return true if "localhost" was given
-     */
-    @Override
-    public boolean isLocalServer(String server) {
-        return "localhost".equalsIgnoreCase(server);
-    }
-
-    /**
-     * Return true if "localuser@localhost" was given
-     */
-    @Override
-    public boolean isLocalUser(String user) {
-        return "localuser@localhost".equalsIgnoreCase(user);
-    }
-
-    @Override
-    public void log(String msg) {
-        System.out.println(msg);
-    }
-
-    @Override
-    public void log(String arg0, Throwable arg1) {
-        System.out.println(arg0);
-        arg1.printStackTrace();
-    }
-
-    @Override
-    public void log(LogLevel logLevel, String s) {
-        throw new UnsupportedOperationException("Not implemented");
-    }
-
-    @Override
-    public void log(LogLevel logLevel, String s, Throwable throwable) {
-        throw new UnsupportedOperationException("Not implemented");
-    }
-
-    @Override
-    public void removeAttribute(String arg0) {
-        attributes.remove(arg0);
-    }
-
-    @Override
-    public void sendMail(MimeMessage arg0) throws MessagingException {
-        throw new UnsupportedOperationException("Not implemented");
-    }
-
-    @Override
-    public void sendMail(Mail mail) throws MessagingException {
-        mails.add(mail);
-    }
-
-    @Override
-    public void sendMail(MailAddress arg0, Collection<MailAddress> arg1, MimeMessage arg2) throws MessagingException {
-        throw new UnsupportedOperationException("Not implemented");
-    }
-
-    @Override
-    public void sendMail(MailAddress arg0, Collection<MailAddress> arg1, MimeMessage arg2, String arg3) throws MessagingException {
-        throw new UnsupportedOperationException("Not implemented");
-    }
-
-    @Override
-    public void setAttribute(String arg0, Object arg1) {
-        attributes.put(arg0, arg1);
-    }
-
-    @Override
-    public Logger getLogger() {
-        return LOGGER;
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/41c00e7d/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/impl/camel/CamelCompositeProcessorTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/impl/camel/CamelCompositeProcessorTest.java b/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/impl/camel/CamelCompositeProcessorTest.java
index d1373ce..7dd9a6a 100644
--- a/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/impl/camel/CamelCompositeProcessorTest.java
+++ b/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/impl/camel/CamelCompositeProcessorTest.java
@@ -20,12 +20,12 @@ package org.apache.james.mailetcontainer.impl.camel;
 
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.commons.configuration.HierarchicalConfiguration;
-import org.apache.james.mailetcontainer.api.mock.MockMailetContext;
 import org.apache.james.mailetcontainer.api.mock.MockMailetLoader;
 import org.apache.james.mailetcontainer.api.mock.MockMatcherLoader;
 import org.apache.james.mailetcontainer.lib.AbstractStateCompositeProcessor;
 import org.apache.james.mailetcontainer.lib.AbstractStateCompositeProcessorTest;
 import org.apache.james.metrics.api.NoopMetricFactory;
+import org.apache.mailet.base.test.FakeMailContext;
 
 public class CamelCompositeProcessorTest extends AbstractStateCompositeProcessorTest {
 
@@ -36,7 +36,7 @@ public class CamelCompositeProcessorTest extends AbstractStateCompositeProcessor
             processor.setCamelContext(new DefaultCamelContext());
             processor.setMailetLoader(new MockMailetLoader());
             processor.setMatcherLoader(new MockMatcherLoader());
-            processor.setMailetContext(new MockMailetContext());
+            processor.setMailetContext(FakeMailContext.defaultContext());
             processor.configure(config);
             processor.init();
             return processor;

http://git-wip-us.apache.org/repos/asf/james-project/blob/41c00e7d/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/impl/camel/CamelMailetProcessorTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/impl/camel/CamelMailetProcessorTest.java b/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/impl/camel/CamelMailetProcessorTest.java
index d76bae2..9a8488c 100644
--- a/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/impl/camel/CamelMailetProcessorTest.java
+++ b/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/impl/camel/CamelMailetProcessorTest.java
@@ -24,12 +24,12 @@ import static org.mockito.Mockito.mock;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.commons.configuration.HierarchicalConfiguration;
 import org.apache.james.mailetcontainer.api.MailProcessor;
-import org.apache.james.mailetcontainer.api.mock.MockMailetContext;
 import org.apache.james.mailetcontainer.api.mock.MockMailetLoader;
 import org.apache.james.mailetcontainer.api.mock.MockMatcherLoader;
 import org.apache.james.mailetcontainer.lib.AbstractStateMailetProcessor;
 import org.apache.james.mailetcontainer.lib.AbstractStateMailetProcessorTest;
 import org.apache.james.metrics.api.NoopMetricFactory;
+import org.apache.mailet.base.test.FakeMailContext;
 
 public class CamelMailetProcessorTest extends AbstractStateMailetProcessorTest {
 
@@ -39,7 +39,7 @@ public class CamelMailetProcessorTest extends AbstractStateMailetProcessorTest {
         try {
             processor = new CamelMailetProcessor(new NoopMetricFactory());
             processor.setCamelContext(new DefaultCamelContext());
-            processor.setMailetContext(new MockMailetContext());
+            processor.setMailetContext(FakeMailContext.defaultContext());
             processor.setMailetLoader(new MockMailetLoader());
             processor.setMatcherLoader(new MockMatcherLoader());
             processor.setRootMailProcessor(mock(MailProcessor.class));

http://git-wip-us.apache.org/repos/asf/james-project/blob/41c00e7d/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/RecordingMailContext.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/RecordingMailContext.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/RecordingMailContext.java
deleted file mode 100644
index 6866a48..0000000
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/RecordingMailContext.java
+++ /dev/null
@@ -1,235 +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.transport.mailets;
-
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-
-import javax.mail.MessagingException;
-import javax.mail.internet.MimeMessage;
-
-import org.apache.mailet.HostAddress;
-import org.apache.mailet.LookupException;
-import org.apache.mailet.Mail;
-import org.apache.james.core.MailAddress;
-import org.apache.mailet.MailetContext;
-import org.apache.mailet.TemporaryLookupException;
-import org.apache.mailet.base.test.FakeMailContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * @since 15.12.12 12:02
- */
-@SuppressWarnings("deprecation")
-public class RecordingMailContext implements MailetContext {
-    private static final Logger LOGGER = LoggerFactory.getLogger(RecordingMailContext.class);
-
-    private final List<SendMailEvent> sendmails = new LinkedList<>();
-    private final FakeMailContext context;
-
-    public RecordingMailContext() {
-        context = FakeMailContext.defaultContext();
-    }
-
-    @Override
-    public boolean isLocalServer(String serverName) {
-        return "localhost".equals(serverName);
-    }
-
-    @Override
-    public void sendMail(Mail mail) throws MessagingException {
-        sendmails.add(new SendMailEvent(mail));
-    }
-
-    @Override
-    public void sendMail(MimeMessage msg) throws MessagingException {
-       sendmails.add(new SendMailEvent(msg));
-    }
-
-    @Override
-    public void sendMail(MailAddress sender, Collection<MailAddress> recipients, MimeMessage msg) throws MessagingException {
-        sendmails.add(new SendMailEvent(msg, sender, recipients));
-    }
-
-    @Override
-    public void sendMail(MailAddress sender, Collection<MailAddress> recipients, MimeMessage msg, String state) throws MessagingException {
-        sendmails.add(new SendMailEvent(msg, sender, recipients, state));
-    }
-
-    public List<SendMailEvent> getSendmails() {
-        return sendmails;
-    }
-
-    public static class SendMailEvent {
-        private final Object message;
-        private final MailAddress sender;
-        private final Collection<MailAddress> recipients;
-        private final String state;
-
-        private SendMailEvent(Object message, MailAddress sender, Collection<MailAddress> recipients, String state) {
-            this.message = message;
-            this.sender = sender;
-            this.recipients = recipients;
-            this.state = state;
-        }
-
-        public SendMailEvent(Mail mail) {
-            this(mail, null, null, null);
-        }
-
-        public SendMailEvent(MimeMessage mail) {
-            this(mail, null, null, null);
-        }
-
-        public SendMailEvent(MimeMessage mail, MailAddress sender, Collection<MailAddress> recipients) {
-            this(mail, sender, recipients, null);
-        }
-        public SendMailEvent(MimeMessage mail, MailAddress sender, Collection<MailAddress> recipients, String state) {
-            this((Object)mail, sender, recipients, state);
-        }
-
-        public Mail getMail() {
-            if (message instanceof Mail) {
-                return (Mail) message;
-            }
-            return null;
-        }
-        public MimeMessage getMessage() {
-            if (message instanceof MimeMessage) {
-                return  (MimeMessage) message;
-            }
-            return null;
-        }
-
-        public MailAddress getSender() {
-            return sender;
-        }
-
-        public Collection<MailAddress> getRecipients() {
-            return recipients;
-        }
-
-        public String getState() {
-            return state;
-        }
-    }
-
-    @Override
-    public int getMajorVersion() {
-        return context.getMajorVersion();
-    }
-
-    @Override
-    public int getMinorVersion() {
-        return context.getMinorVersion();
-    }
-
-    @Override
-    public String getServerInfo() {
-        return context.getServerInfo();
-    }
-
-    @Override
-    public Iterator<String> getAttributeNames() {
-        return context.getAttributeNames();
-    }
-
-    @Override
-    public Object getAttribute(String name) {
-        return context.getAttribute(name);
-    }
-
-    @Override
-    public void setAttribute(String name, Object value) {
-        context.setAttribute(name, value);
-    }
-
-    @Override
-    public void removeAttribute(String name) {
-        context.removeAttribute(name);
-    }
-
-    @Override
-    public void log(String message) {
-        LOGGER.info(message);
-    }
-
-    @Override
-    public void log(String message, Throwable t) {
-        LOGGER.error(message, t);
-    }
-
-    @Override
-    public void log(LogLevel level, String message) {
-        context.log(level, message);
-    }
-
-    @Override
-    public void log(LogLevel level, String message, Throwable t) {
-        context.log(level, message, t);
-    }
-
-    @Override
-    public MailAddress getPostmaster() {
-        return context.getPostmaster();
-    }
-
-    @Override
-    public boolean isLocalUser(String userAccount) {
-        return context.isLocalUser(userAccount);
-    }
-
-    @Override
-    public boolean isLocalEmail(MailAddress mailAddress) {
-        return context.isLocalEmail(mailAddress);
-    }
-
-    @Override
-    public Collection<String> getMailServers(String domain) {
-        return context.getMailServers(domain);
-    }
-
-    @Override
-    public Iterator<HostAddress> getSMTPHostAddresses(String domain) {
-        return context.getSMTPHostAddresses(domain);
-    }
-
-    @Override
-    public void bounce(Mail mail, String message) throws MessagingException {
-        context.bounce(mail, message);
-    }
-
-    @Override
-    public void bounce(Mail mail, String message, MailAddress bouncer) throws MessagingException {
-        context.bounce(mail, message, bouncer);
-    }
-
-    @Override
-    public List<String> dnsLookup(String name, RecordType type) throws TemporaryLookupException, LookupException {
-        return context.dnsLookup(name, type);
-    }
-
-    @Override
-    public Logger getLogger() {
-        return context.getLogger();
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/41c00e7d/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/mock/mailet/MockMailContext.java
----------------------------------------------------------------------
diff --git a/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/mock/mailet/MockMailContext.java b/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/mock/mailet/MockMailContext.java
deleted file mode 100644
index 9e1b342..0000000
--- a/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/mock/mailet/MockMailContext.java
+++ /dev/null
@@ -1,167 +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.smtpserver.mock.mailet;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-
-import javax.mail.MessagingException;
-import javax.mail.internet.MimeMessage;
-
-import org.apache.mailet.HostAddress;
-import org.apache.mailet.LookupException;
-import org.apache.mailet.Mail;
-import org.apache.james.core.MailAddress;
-import org.apache.mailet.MailetContext;
-import org.slf4j.Logger;
-
-@SuppressWarnings("deprecation")
-public class MockMailContext implements MailetContext {
-
-    final HashMap<String, Object> attributes = new HashMap<>();
-
-    @Override
-    public void bounce(Mail mail, String message) throws MessagingException {
-        // trivial implementation
-    }
-
-    @Override
-    public void bounce(Mail mail, String message, MailAddress bouncer) throws MessagingException {
-        // trivial implementation
-    }
-
-    @Override
-    public List<String> dnsLookup(String s, RecordType recordType) throws LookupException {
-        throw new UnsupportedOperationException("Not yet implemented");
-    }
-
-    @Override
-    public Collection<String> getMailServers(String host) {
-        return null; // trivial implementation
-    }
-
-    @Override
-    public MailAddress getPostmaster() {
-        return null; // trivial implementation
-    }
-
-    @Override
-    public Object getAttribute(String name) {
-        return attributes.get(name);
-    }
-
-    @Override
-    public Iterator<String> getAttributeNames() {
-        return attributes.keySet().iterator();
-    }
-
-    @Override
-    public int getMajorVersion() {
-        return 0; // trivial implementation
-    }
-
-    @Override
-    public int getMinorVersion() {
-        return 0; // trivial implementation
-    }
-
-    @Override
-    public String getServerInfo() {
-        return "Mock Server";
-    }
-
-    @Override
-    public boolean isLocalServer(String serverName) {
-        return false; // trivial implementation
-    }
-
-    @Override
-    public boolean isLocalUser(String userAccount) {
-        return false; // trivial implementation
-    }
-
-    @Override
-    public boolean isLocalEmail(MailAddress mailAddress) {
-        return false; // trivial implementation
-    }
-
-    @Override
-    public void log(String message) {
-        System.out.println(message);
-    }
-
-    @Override
-    public void log(String message, Throwable t) {
-        System.out.println(message);
-        t.printStackTrace(System.out);
-    }
-
-    @Override
-    public void log(LogLevel logLevel, String s) {
-        //To change body of implemented methods use File | Settings | File Templates.
-    }
-
-    @Override
-    public void log(LogLevel logLevel, String s, Throwable throwable) {
-        //To change body of implemented methods use File | Settings | File Templates.
-    }
-
-    @Override
-    public void removeAttribute(String name) {
-        // trivial implementation
-    }
-
-    @Override
-    public void sendMail(MimeMessage msg) throws MessagingException {
-        throw new UnsupportedOperationException("MOCKed method");
-    }
-
-    @Override
-    public void sendMail(MailAddress sender, Collection<MailAddress> recipients, MimeMessage msg) throws MessagingException {
-        throw new UnsupportedOperationException("MOCKed method");
-    }
-
-    @Override
-    public void sendMail(MailAddress sender, Collection<MailAddress> recipients, MimeMessage msg, String state) throws
-            MessagingException {
-        throw new UnsupportedOperationException("MOCKed method");
-    }
-
-    @Override
-    public void sendMail(Mail mail) throws MessagingException {
-        throw new UnsupportedOperationException("MOCKed method");
-    }
-
-    @Override
-    public void setAttribute(String name, Object object) {
-        attributes.put(name, object);
-    }
-
-    @Override
-    public Iterator<HostAddress> getSMTPHostAddresses(String domainName) {
-        return null; // trivial implementation
-    }
-
-    @Override
-    public Logger getLogger() {
-        return null;
-    }
-}


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


[05/19] james-project git commit: JAMES-2242 InMemory DNS resolver should throw UnknownHostException upon unknown entry

Posted by ad...@apache.org.
JAMES-2242 InMemory DNS resolver should throw UnknownHostException upon unknown entry


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

Branch: refs/heads/master
Commit: 2949c9185c6c2074addc85982ab8765377b6c93a
Parents: c772f5a
Author: benwa <bt...@linagora.com>
Authored: Wed Nov 29 15:16:35 2017 +0700
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Mon Dec 4 14:42:15 2017 +0100

----------------------------------------------------------------------
 .../dnsservice/api/InMemoryDNSService.java      | 25 +++++++++++++++-----
 1 file changed, 19 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/2949c918/server/dns-service/dnsservice-api/src/test/java/org/apache/james/dnsservice/api/InMemoryDNSService.java
----------------------------------------------------------------------
diff --git a/server/dns-service/dnsservice-api/src/test/java/org/apache/james/dnsservice/api/InMemoryDNSService.java b/server/dns-service/dnsservice-api/src/test/java/org/apache/james/dnsservice/api/InMemoryDNSService.java
index 0af0ac9..851ace7 100644
--- a/server/dns-service/dnsservice-api/src/test/java/org/apache/james/dnsservice/api/InMemoryDNSService.java
+++ b/server/dns-service/dnsservice-api/src/test/java/org/apache/james/dnsservice/api/InMemoryDNSService.java
@@ -27,6 +27,7 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.function.Predicate;
 
+import com.google.common.base.Throwables;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Maps;
 import com.google.common.net.InetAddresses;
@@ -65,12 +66,20 @@ public class InMemoryDNSService implements DNSService {
 
     @Override
     public Collection<String> findMXRecords(String hostname) throws TemporaryResolutionException {
-        return hostRecord(hostname).mxRecords;
+        try {
+            return hostRecord(hostname).mxRecords;
+        } catch (UnknownHostException e) {
+            throw Throwables.propagate(e);
+        }
     }
 
     @Override
     public Collection<String> findTXTRecords(String hostname) {
-        return hostRecord(hostname).txtRecords;
+        try {
+            return hostRecord(hostname).txtRecords;
+        } catch (UnknownHostException e) {
+            throw Throwables.propagate(e);
+        }
     }
 
     @Override
@@ -83,7 +92,7 @@ public class InMemoryDNSService implements DNSService {
         return hostRecord(host).addresses.get(0);
     }
 
-    private DNSRecord hostRecord(final String host) {
+    private DNSRecord hostRecord(final String host) throws UnknownHostException {
         Predicate<? super Entry<String, DNSRecord>> filterByKey = entry -> entry.getKey().equals(host);
         return getDNSEntry(filterByKey).getValue();
     }
@@ -97,14 +106,18 @@ public class InMemoryDNSService implements DNSService {
     public String getHostName(final InetAddress addr) {
         Predicate<? super Entry<String, DNSRecord>> filterByValue = entry -> entry.getValue().contains(addr);
 
-        return getDNSEntry(filterByValue).getKey();
+        try {
+            return getDNSEntry(filterByValue).getKey();
+        } catch (UnknownHostException e) {
+            throw Throwables.propagate(e);
+        }
     }
 
-    private Entry<String, DNSRecord> getDNSEntry(Predicate<? super Entry<String, DNSRecord>> filter) {
+    private Entry<String, DNSRecord> getDNSEntry(Predicate<? super Entry<String, DNSRecord>> filter) throws UnknownHostException {
         return records.entrySet().stream()
             .filter(filter)
             .findFirst()
-            .get();
+            .orElseThrow(() -> new UnknownHostException());
     }
 
     private static class DNSRecord {


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


[11/19] james-project git commit: JAMES-2242 Make sure JMS based mail queue preserves state

Posted by ad...@apache.org.
JAMES-2242 Make sure JMS based mail queue preserves state


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

Branch: refs/heads/master
Commit: 8e606529b623cb896b47b287f66997de8ce3ad7e
Parents: be236f0
Author: benwa <bt...@linagora.com>
Authored: Wed Nov 29 15:21:55 2017 +0700
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Mon Dec 4 14:42:19 2017 +0100

----------------------------------------------------------------------
 server/queue/queue-activemq/pom.xml                |  5 +++++
 server/queue/queue-jms/pom.xml                     |  5 +++++
 .../james/queue/jms/AbstractJMSMailQueueTest.java  | 17 +++++++++++++++++
 3 files changed, 27 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/8e606529/server/queue/queue-activemq/pom.xml
----------------------------------------------------------------------
diff --git a/server/queue/queue-activemq/pom.xml b/server/queue/queue-activemq/pom.xml
index 952d425..48cfeec 100644
--- a/server/queue/queue-activemq/pom.xml
+++ b/server/queue/queue-activemq/pom.xml
@@ -94,6 +94,11 @@
             <artifactId>geronimo-annotation_1.1_spec</artifactId>
         </dependency>
         <dependency>
+            <groupId>org.assertj</groupId>
+            <artifactId>assertj-core</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>org.mockito</groupId>
             <artifactId>mockito-core</artifactId>
         </dependency>

http://git-wip-us.apache.org/repos/asf/james-project/blob/8e606529/server/queue/queue-jms/pom.xml
----------------------------------------------------------------------
diff --git a/server/queue/queue-jms/pom.xml b/server/queue/queue-jms/pom.xml
index a033819..f809620 100644
--- a/server/queue/queue-jms/pom.xml
+++ b/server/queue/queue-jms/pom.xml
@@ -93,6 +93,11 @@
             <artifactId>protocols-smtp</artifactId>
         </dependency>
         <dependency>
+            <groupId>org.assertj</groupId>
+            <artifactId>assertj-core</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>org.mockito</groupId>
             <artifactId>mockito-core</artifactId>
             <scope>test</scope>

http://git-wip-us.apache.org/repos/asf/james-project/blob/8e606529/server/queue/queue-jms/src/test/java/org/apache/james/queue/jms/AbstractJMSMailQueueTest.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-jms/src/test/java/org/apache/james/queue/jms/AbstractJMSMailQueueTest.java b/server/queue/queue-jms/src/test/java/org/apache/james/queue/jms/AbstractJMSMailQueueTest.java
index 56211d8..ccb32f2 100644
--- a/server/queue/queue-jms/src/test/java/org/apache/james/queue/jms/AbstractJMSMailQueueTest.java
+++ b/server/queue/queue-jms/src/test/java/org/apache/james/queue/jms/AbstractJMSMailQueueTest.java
@@ -18,6 +18,7 @@
  ****************************************************************/
 package org.apache.james.queue.jms;
 
+import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
@@ -115,6 +116,22 @@ public abstract class AbstractJMSMailQueueTest {
     }
 
     @Test
+    public void dequeueShouldPreserveState() throws Exception {
+        Mail mail = createMail();
+        String state = "state";
+        mail.setState(state);
+
+        queue.enQueue(mail);
+
+        MailQueueItem item = queue.deQueue();
+        try {
+            assertThat(item.getMail().getState()).isEqualTo(state);
+        } finally {
+            item.done(true);
+        }
+    }
+
+    @Test
     public void testDelayedDeQueue() throws Exception {
         // should be empty
         assertEquals(0, queue.getSize());


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


[13/19] james-project git commit: JAMES-2242 Make JamesMailetContext match its documentation

Posted by ad...@apache.org.
JAMES-2242 Make JamesMailetContext match its documentation

 - sendMail(mail) intend to have the same behaviour as incoming SMTP
   - It was not the case, mail was set on top of the mail state, Hence the mail was directly processed by THAT processor, and not executed by ROOT processor
   - When correcting that issue, we then miss a way to send a mail to a specific processor. We need to add a method for that.

 Hence, I added sendMail(mail, state)

 This solves the `Boucing issues` encountered in RemoteDelivery


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

Branch: refs/heads/master
Commit: 9c1a7cdb57f3a39d392d51c512fd036b2475358c
Parents: 8e60652
Author: benwa <bt...@linagora.com>
Authored: Wed Nov 29 16:49:49 2017 +0700
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Mon Dec 4 14:42:20 2017 +0100

----------------------------------------------------------------------
 .../java/org/apache/mailet/MailetContext.java   |  17 +++
 .../mailet/base/test/FakeMailContext.java       |   9 +-
 .../GatewayRemoteDeliveryIntegrationTest.java   |   8 --
 .../impl/JamesMailetContext.java                |   9 +-
 .../impl/JamesMailetContextTest.java            | 113 ++++++++++++++++++-
 .../mailets/remoteDelivery/Bouncer.java         |   3 +-
 6 files changed, 144 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/9c1a7cdb/mailet/api/src/main/java/org/apache/mailet/MailetContext.java
----------------------------------------------------------------------
diff --git a/mailet/api/src/main/java/org/apache/mailet/MailetContext.java b/mailet/api/src/main/java/org/apache/mailet/MailetContext.java
index 202caf7..e43b201 100644
--- a/mailet/api/src/main/java/org/apache/mailet/MailetContext.java
+++ b/mailet/api/src/main/java/org/apache/mailet/MailetContext.java
@@ -338,6 +338,23 @@ public interface MailetContext {
     void sendMail(Mail mail)
             throws MessagingException;
 
+
+
+    /**
+     * Sends an outgoing message to the top of this mailet container's root queue,
+     * targeting a specific processing state.
+     *
+     * This functionally allows mail treatment done out of the MailetProcessor to be sent
+     * to a specific processor inside the MailetContainer. This is for instance useful for bouncing mail
+     * being remote delivered (asynchronously to original mail treatment)
+     *
+     * @param message The message to send
+     * @param state   The state of the message, indicating the name of the processor for
+     *                which the message will be queued
+     * @throws MessagingException if an error occurs accessing or sending the message
+     */
+    void sendMail(Mail mail, String state) throws MessagingException;
+
     /**
      * Bounces the message using a standard format with the given message.
      * <p/>

http://git-wip-us.apache.org/repos/asf/james-project/blob/9c1a7cdb/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMailContext.java
----------------------------------------------------------------------
diff --git a/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMailContext.java b/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMailContext.java
index 9c54dc0..62d2c9d 100644
--- a/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMailContext.java
+++ b/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMailContext.java
@@ -27,13 +27,14 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
+
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeMessage;
 
+import org.apache.james.core.MailAddress;
 import org.apache.mailet.HostAddress;
 import org.apache.mailet.LookupException;
 import org.apache.mailet.Mail;
-import org.apache.james.core.MailAddress;
 import org.apache.mailet.MailetContext;
 import org.slf4j.Logger;
 
@@ -404,6 +405,12 @@ public class FakeMailContext implements MailetContext {
     }
 
     public void sendMail(Mail mail) throws MessagingException {
+        sendMail(mail, Mail.DEFAULT);
+    }
+
+    @Override
+    public void sendMail(Mail mail, String state) throws MessagingException {
+        mail.setState(state);
         sentMails.add(fromMail(mail));
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/9c1a7cdb/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java
index 2e01488..e325ef2 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java
@@ -52,7 +52,6 @@ import org.apache.james.utils.IMAPMessageReader;
 import org.apache.james.utils.SMTPMessageSender;
 import org.junit.After;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.RuleChain;
@@ -220,13 +219,6 @@ public class GatewayRemoteDeliveryIntegrationTest {
                 .body("", hasSize(0));
         }
     }
-
-    @Ignore("JAMES-2242" +
-        "https://issues.apache.org/jira/browse/JAMES-2242?focusedCommentId=16270289&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-16270289" +
-        "Bouncing is failing due to several issues:" +
-        " - A loop in Bounce processor, keeps posting in bounce processor (DSNBounce processor don't rest mail state)" +
-        " - Memory mail queue don't preserve state field like other Mail Queue implementations" +
-        " - Memory DNS returns RuntimeExceptions upon absent address, not DNS failures")
     @Test
     public void remoteDeliveryShouldBounceUponFailure() throws Exception {
         String gatewayProperty = "invalid.domain";

http://git-wip-us.apache.org/repos/asf/james-project/blob/9c1a7cdb/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 f460d55..51d01f9 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
@@ -406,15 +406,20 @@ public class JamesMailetContext implements MailetContext, Configurable {
 
     @Override
     public void sendMail(Mail mail) throws MessagingException {
+        sendMail(mail, Mail.DEFAULT);
+    }
+
+    @Override
+    public void sendMail(Mail mail, String state) throws MessagingException {
         mail.setAttribute(Mail.SENT_BY_MAILET, "true");
+        mail.setState(state);
         rootMailQueue.enQueue(mail);
     }
 
     public void sendMail(MailAddress sender, Collection<MailAddress> recipients, MimeMessage message, String state) throws MessagingException {
         MailImpl mail = new MailImpl(MailImpl.getId(), sender, recipients, message);
         try {
-            mail.setState(state);
-            sendMail(mail);
+            sendMail(mail, state);
         } finally {
             LifecycleUtil.dispose(mail);
         }

http://git-wip-us.apache.org/repos/asf/james-project/blob/9c1a7cdb/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 ccb8abd..61abeeb 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
@@ -21,11 +21,14 @@ package org.apache.james.mailetcontainer.impl;
 
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyString;
 import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
 import static org.mockito.Mockito.when;
 
+import javax.mail.internet.MimeMessage;
+
 import org.apache.commons.configuration.HierarchicalConfiguration;
 import org.apache.james.core.MailAddress;
 import org.apache.james.dnsservice.api.DNSService;
@@ -35,9 +38,11 @@ import org.apache.james.queue.api.MailQueue;
 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.junit.Before;
 import org.junit.Test;
+import org.mockito.ArgumentCaptor;
 
 import com.google.common.collect.ImmutableList;
 
@@ -52,6 +57,7 @@ public class JamesMailetContextTest {
     private MemoryUsersRepository usersRepository;
     private JamesMailetContext testee;
     private MailAddress mailAddress;
+    private MailQueue spoolMailQueue;
 
     @Before
     public void setUp() throws Exception {
@@ -65,7 +71,8 @@ public class JamesMailetContextTest {
         usersRepository.setDomainList(domainList);
         testee = new JamesMailetContext();
         MailQueueFactory mailQueueFactory = mock(MailQueueFactory.class);
-        when(mailQueueFactory.getQueue(anyString())).thenReturn(mock(MailQueue.class));
+        spoolMailQueue = mock(MailQueue.class);
+        when(mailQueueFactory.getQueue(MailQueueFactory.SPOOL)).thenReturn(spoolMailQueue);
         testee.retrieveRootMailQueue(mailQueueFactory);
         testee.setDomainList(domainList);
         testee.setUsersRepository(usersRepository);
@@ -160,4 +167,106 @@ public class JamesMailetContextTest {
         mail.setMessage(MimeMessageBuilder.defaultMimeMessage());
         testee.bounce(mail, "message");
     }
+
+    @Test
+    public void bounceShouldEnqueueEmailWithRootState() throws Exception {
+        MailImpl mail = new MailImpl();
+        mail.setSender(mailAddress);
+        mail.setRecipients(ImmutableList.of(mailAddress));
+        mail.setMessage(MimeMessageBuilder.defaultMimeMessage());
+        testee.bounce(mail, "message");
+
+        ArgumentCaptor<Mail> mailArgumentCaptor = ArgumentCaptor.forClass(Mail.class);
+        verify(spoolMailQueue).enQueue(mailArgumentCaptor.capture());
+        verifyNoMoreInteractions(spoolMailQueue);
+
+        assertThat(mailArgumentCaptor.getValue().getState()).isEqualTo(Mail.DEFAULT);
+    }
+
+    @Test
+    public void sendMailShouldEnqueueEmailWithRootState() throws Exception {
+        MailImpl mail = new MailImpl();
+        mail.setSender(mailAddress);
+        mail.setRecipients(ImmutableList.of(mailAddress));
+        mail.setMessage(MimeMessageBuilder.defaultMimeMessage());
+        testee.sendMail(mail);
+
+        ArgumentCaptor<Mail> mailArgumentCaptor = ArgumentCaptor.forClass(Mail.class);
+        verify(spoolMailQueue).enQueue(mailArgumentCaptor.capture());
+        verifyNoMoreInteractions(spoolMailQueue);
+
+        assertThat(mailArgumentCaptor.getValue().getState()).isEqualTo(Mail.DEFAULT);
+    }
+
+    @Test
+    public void sendMailShouldEnqueueEmailWithOtherStateWhenSpecified() throws Exception {
+        MailImpl mail = new MailImpl();
+        mail.setSender(mailAddress);
+        mail.setRecipients(ImmutableList.of(mailAddress));
+        mail.setMessage(MimeMessageBuilder.defaultMimeMessage());
+        String other = "other";
+        testee.sendMail(mail, other);
+
+        ArgumentCaptor<Mail> mailArgumentCaptor = ArgumentCaptor.forClass(Mail.class);
+        verify(spoolMailQueue).enQueue(mailArgumentCaptor.capture());
+        verifyNoMoreInteractions(spoolMailQueue);
+
+        assertThat(mailArgumentCaptor.getValue().getState()).isEqualTo(other);
+    }
+
+    @Test
+    public void sendMailForMessageShouldEnqueueEmailWithRootState() throws Exception {
+        MimeMessage message = MimeMessageBuilder.mimeMessageBuilder()
+            .addFrom(mailAddress.asString())
+            .addToRecipient(mailAddress.asString())
+            .setText("Simple text")
+            .build();
+
+        testee.sendMail(message);
+
+        ArgumentCaptor<Mail> mailArgumentCaptor = ArgumentCaptor.forClass(Mail.class);
+        verify(spoolMailQueue).enQueue(mailArgumentCaptor.capture());
+        verifyNoMoreInteractions(spoolMailQueue);
+
+        assertThat(mailArgumentCaptor.getValue().getState()).isEqualTo(Mail.DEFAULT);
+    }
+
+    @Test
+    public void sendMailForMessageAndEnvelopeShouldEnqueueEmailWithRootState() throws Exception {
+        MimeMessage message = MimeMessageBuilder.mimeMessageBuilder()
+            .addFrom(mailAddress.asString())
+            .addToRecipient(mailAddress.asString())
+            .setText("Simple text")
+            .build();
+
+        MailAddress sender = mailAddress;
+        ImmutableList<MailAddress> recipients = ImmutableList.of(mailAddress);
+        testee.sendMail(sender, recipients, message);
+
+        ArgumentCaptor<Mail> mailArgumentCaptor = ArgumentCaptor.forClass(Mail.class);
+        verify(spoolMailQueue).enQueue(mailArgumentCaptor.capture());
+        verifyNoMoreInteractions(spoolMailQueue);
+
+        assertThat(mailArgumentCaptor.getValue().getState()).isEqualTo(Mail.DEFAULT);
+    }
+
+    @Test
+    public void sendMailForMessageAndEnvelopeShouldEnqueueEmailWithOtherStateWhenSpecified() throws Exception {
+        MimeMessage message = MimeMessageBuilder.mimeMessageBuilder()
+            .addFrom(mailAddress.asString())
+            .addToRecipient(mailAddress.asString())
+            .setText("Simple text")
+            .build();
+
+        MailAddress sender = mailAddress;
+        ImmutableList<MailAddress> recipients = ImmutableList.of(mailAddress);
+        String otherState = "other";
+        testee.sendMail(sender, recipients, message, otherState);
+
+        ArgumentCaptor<Mail> mailArgumentCaptor = ArgumentCaptor.forClass(Mail.class);
+        verify(spoolMailQueue).enQueue(mailArgumentCaptor.capture());
+        verifyNoMoreInteractions(spoolMailQueue);
+
+        assertThat(mailArgumentCaptor.getValue().getState()).isEqualTo(otherState);
+    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/9c1a7cdb/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/Bouncer.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/Bouncer.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/Bouncer.java
index 05a302b..ce2539c 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/Bouncer.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/Bouncer.java
@@ -52,9 +52,8 @@ public class Bouncer {
         } else {
             if (configuration.getBounceProcessor() != null) {
                 mail.setAttribute(DELIVERY_ERROR, getErrorMsg(ex));
-                mail.setState(configuration.getBounceProcessor());
                 try {
-                    mailetContext.sendMail(mail);
+                    mailetContext.sendMail(mail, configuration.getBounceProcessor());
                 } catch (MessagingException e) {
                     LOGGER.warn("Exception re-inserting failed mail: ", e);
                 }


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


[07/19] james-project git commit: JAMES-2242 Implement test demonstrating RemoteDelivery gateway feature works

Posted by ad...@apache.org.
JAMES-2242 Implement test demonstrating RemoteDelivery gateway feature works


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

Branch: refs/heads/master
Commit: 0b4923b2e54f8e2a0bf038bce2f2b53969f5b54b
Parents: 2949c91
Author: benwa <bt...@linagora.com>
Authored: Tue Nov 28 17:29:58 2017 +0700
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Mon Dec 4 14:42:16 2017 +0100

----------------------------------------------------------------------
 .../GatewayRemoteDeliveryIntegrationTest.java   | 482 +++++++++++++++++++
 1 file changed, 482 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/0b4923b2/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java
new file mode 100644
index 0000000..2e01488
--- /dev/null
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java
@@ -0,0 +1,482 @@
+/****************************************************************
+ * 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.mailets;
+
+import static com.jayway.restassured.RestAssured.when;
+import static com.jayway.restassured.config.EncoderConfig.encoderConfig;
+import static com.jayway.restassured.config.RestAssuredConfig.newConfig;
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.hasSize;
+
+import java.net.InetAddress;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.james.dnsservice.api.DNSService;
+import org.apache.james.dnsservice.api.InMemoryDNSService;
+import org.apache.james.jmap.mailet.VacationMailet;
+import org.apache.james.mailbox.model.MailboxConstants;
+import org.apache.james.mailets.configuration.CommonProcessors;
+import org.apache.james.mailets.configuration.MailetConfiguration;
+import org.apache.james.mailets.configuration.MailetContainer;
+import org.apache.james.mailets.configuration.ProcessorConfiguration;
+import org.apache.james.probe.DataProbe;
+import org.apache.james.transport.mailets.LocalDelivery;
+import org.apache.james.transport.mailets.Null;
+import org.apache.james.transport.mailets.PostmasterAlias;
+import org.apache.james.transport.mailets.RemoteDelivery;
+import org.apache.james.transport.mailets.RemoveMimeHeader;
+import org.apache.james.transport.mailets.ToProcessor;
+import org.apache.james.transport.matchers.All;
+import org.apache.james.transport.matchers.RecipientIsLocal;
+import org.apache.james.transport.matchers.RelayLimit;
+import org.apache.james.util.streams.SwarmGenericContainer;
+import org.apache.james.utils.DataProbeImpl;
+import org.apache.james.utils.IMAPMessageReader;
+import org.apache.james.utils.SMTPMessageSender;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.RuleChain;
+import org.junit.rules.TemporaryFolder;
+import org.testcontainers.containers.wait.HostPortWaitStrategy;
+
+import com.google.common.base.Charsets;
+import com.jayway.awaitility.Awaitility;
+import com.jayway.awaitility.Duration;
+import com.jayway.awaitility.core.ConditionFactory;
+import com.jayway.restassured.RestAssured;
+import com.jayway.restassured.builder.RequestSpecBuilder;
+import com.jayway.restassured.http.ContentType;
+
+public class GatewayRemoteDeliveryIntegrationTest {
+    private static final String LOCALHOST_IP = "127.0.0.1";
+    private static final int SMTP_PORT = 1025;
+    private static final int IMAP_PORT = 1143;
+    private static final String PASSWORD = "secret";
+
+    private static final String JAMES_APACHE_ORG = "james.org";
+    private static final String JAMES_ANOTHER_DOMAIN = "james.com";
+
+    private static final String FROM = "from@" + JAMES_APACHE_ORG;
+    private static final String RECIPIENT = "touser@" + JAMES_ANOTHER_DOMAIN;
+
+    @Rule
+    public TemporaryFolder temporaryFolder = new TemporaryFolder();
+
+    private final TemporaryFolder smtpFolder = new TemporaryFolder();
+    private final SwarmGenericContainer fakeSmtp = new SwarmGenericContainer("weave/rest-smtp-sink:latest")
+        .withExposedPorts(25)
+        .withAffinityToContainer()
+        .waitingFor(new HostPortWaitStrategy());
+
+    @Rule
+    public final RuleChain chain = RuleChain.outerRule(smtpFolder).around(fakeSmtp);
+
+    private TemporaryJamesServer jamesServer;
+    private ConditionFactory calmlyAwait;
+    private DataProbe dataProbe;
+
+
+    @Before
+    public void setup() throws Exception {
+        Duration slowPacedPollInterval = Duration.FIVE_HUNDRED_MILLISECONDS;
+        calmlyAwait = Awaitility.with()
+            .pollInterval(slowPacedPollInterval)
+            .and()
+            .with()
+            .pollDelay(slowPacedPollInterval)
+            .await();
+
+        RestAssured.requestSpecification = new RequestSpecBuilder()
+            .setContentType(ContentType.JSON)
+            .setAccept(ContentType.JSON)
+            .setConfig(newConfig().encoderConfig(encoderConfig().defaultContentCharset(Charsets.UTF_8)))
+            .setPort(80)
+            .setBaseUri("http://" + fakeSmtp.getContainerIp())
+            .build();
+    }
+
+    @After
+    public void tearDown() {
+        if (jamesServer != null) {
+            jamesServer.shutdown();
+        }
+    }
+
+    @Test
+    public void outgoingMailShouldTransitThroughGatewayWhenNoPort() throws Exception {
+        String gatewayProperty = fakeSmtp.getContainerIp();
+
+        jamesServer = new TemporaryJamesServer(temporaryFolder,
+            generateMailetContainerConfiguration(gatewayProperty));
+        dataProbe = jamesServer.getProbe(DataProbeImpl.class);
+
+        dataProbe.addDomain(JAMES_APACHE_ORG);
+        dataProbe.addUser(FROM, PASSWORD);
+
+        try (SMTPMessageSender messageSender = SMTPMessageSender.noAuthentication(LOCALHOST_IP, SMTP_PORT, JAMES_APACHE_ORG)) {
+            messageSender.sendMessage(FROM, RECIPIENT);
+
+            calmlyAwait.atMost(Duration.ONE_MINUTE).until(this::messageIsReceivedByTheSmtpServer);
+        }
+    }
+
+    @Test
+    public void outgoingMailShouldTransitThroughGatewayWhenPort() throws Exception {
+        String gatewayProperty = fakeSmtp.getContainerIp() + ":25";
+
+        jamesServer = new TemporaryJamesServer(temporaryFolder,
+            generateMailetContainerConfiguration(gatewayProperty));
+        dataProbe = jamesServer.getProbe(DataProbeImpl.class);
+
+        dataProbe.addDomain(JAMES_APACHE_ORG);
+        dataProbe.addUser(FROM, PASSWORD);
+
+        try (SMTPMessageSender messageSender = SMTPMessageSender.noAuthentication(LOCALHOST_IP, SMTP_PORT, JAMES_APACHE_ORG)) {
+            messageSender.sendMessage(FROM, RECIPIENT);
+
+            calmlyAwait.atMost(Duration.ONE_MINUTE).until(this::messageIsReceivedByTheSmtpServer);
+        }
+    }
+
+    @Test
+    public void outgoingMailShouldTransitThroughGatewayWhenSeveralIps() throws Exception {
+        String gatewayProperty = fakeSmtp.getContainerIp() + ",invalid.domain";
+
+        jamesServer = new TemporaryJamesServer(temporaryFolder,
+            generateMailetContainerConfiguration(gatewayProperty));
+        dataProbe = jamesServer.getProbe(DataProbeImpl.class);
+
+        dataProbe.addDomain(JAMES_APACHE_ORG);
+        dataProbe.addUser(FROM, PASSWORD);
+
+        try (SMTPMessageSender messageSender = SMTPMessageSender.noAuthentication(LOCALHOST_IP, SMTP_PORT, JAMES_APACHE_ORG)) {
+            messageSender.sendMessage(FROM, RECIPIENT);
+
+            calmlyAwait.atMost(Duration.ONE_MINUTE).until(this::messageIsReceivedByTheSmtpServer);
+        }
+    }
+
+    @Test
+    public void outgoingMailShouldFallbackToSecondGatewayWhenFirstInvalid() throws Exception {
+        String gatewayProperty = "invalid.domain," + fakeSmtp.getContainerIp();
+
+        jamesServer = new TemporaryJamesServer(temporaryFolder,
+            generateMailetContainerConfiguration(gatewayProperty));
+        dataProbe = jamesServer.getProbe(DataProbeImpl.class);
+
+        dataProbe.addDomain(JAMES_APACHE_ORG);
+        dataProbe.addUser(FROM, PASSWORD);
+
+        try (SMTPMessageSender messageSender = SMTPMessageSender.noAuthentication(LOCALHOST_IP, SMTP_PORT, JAMES_APACHE_ORG)) {
+            messageSender.sendMessage(FROM, RECIPIENT);
+
+            calmlyAwait.atMost(Duration.ONE_MINUTE).until(this::messageIsReceivedByTheSmtpServer);
+        }
+    }
+
+    @Test
+    public void outgoingMailShouldNotBeSentDirectlyToTheHostWhenGatewayFails() throws Exception {
+        String gatewayProperty = "invalid.domain";
+        InMemoryDNSService inMemoryDNSService = new InMemoryDNSService();
+        InetAddress containerIp = InetAddress.getByName(fakeSmtp.getContainerIp());
+        inMemoryDNSService.registerRecord(JAMES_ANOTHER_DOMAIN, containerIp, JAMES_ANOTHER_DOMAIN);
+
+        jamesServer = new TemporaryJamesServer(temporaryFolder,
+            generateMailetContainerConfiguration(gatewayProperty),
+            binder -> binder.bind(DNSService.class).toInstance(inMemoryDNSService));
+        dataProbe = jamesServer.getProbe(DataProbeImpl.class);
+
+        dataProbe.addDomain(JAMES_APACHE_ORG);
+        dataProbe.addUser(FROM, PASSWORD);
+
+        try (SMTPMessageSender messageSender = SMTPMessageSender.noAuthentication(LOCALHOST_IP, SMTP_PORT, JAMES_APACHE_ORG)) {
+            messageSender.sendMessage(FROM, RECIPIENT);
+
+            Thread.sleep(TimeUnit.SECONDS.toMillis(5));
+            when()
+                .get("/api/email")
+            .then()
+                .statusCode(200)
+                .body("", hasSize(0));
+        }
+    }
+
+    @Ignore("JAMES-2242" +
+        "https://issues.apache.org/jira/browse/JAMES-2242?focusedCommentId=16270289&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-16270289" +
+        "Bouncing is failing due to several issues:" +
+        " - A loop in Bounce processor, keeps posting in bounce processor (DSNBounce processor don't rest mail state)" +
+        " - Memory mail queue don't preserve state field like other Mail Queue implementations" +
+        " - Memory DNS returns RuntimeExceptions upon absent address, not DNS failures")
+    @Test
+    public void remoteDeliveryShouldBounceUponFailure() throws Exception {
+        String gatewayProperty = "invalid.domain";
+        InMemoryDNSService inMemoryDNSService = new InMemoryDNSService();
+        InetAddress containerIp = InetAddress.getByName(fakeSmtp.getContainerIp());
+        inMemoryDNSService.registerRecord(JAMES_ANOTHER_DOMAIN, containerIp, JAMES_ANOTHER_DOMAIN);
+
+        jamesServer = new TemporaryJamesServer(temporaryFolder,
+            MailetContainer.builder()
+                .postmaster("postmaster@" + JAMES_APACHE_ORG)
+                .threads(5)
+                .addProcessor(root())
+                .addProcessor(CommonProcessors.error())
+                .addProcessor(relayAndLocalDeliveryTransport(gatewayProperty))
+                .addProcessor(CommonProcessors.bounces())
+                .build(),
+            binder -> binder.bind(DNSService.class).toInstance(inMemoryDNSService));
+        dataProbe = jamesServer.getProbe(DataProbeImpl.class);
+
+        dataProbe.addDomain(JAMES_APACHE_ORG);
+        dataProbe.addUser(FROM, PASSWORD);
+
+        try (SMTPMessageSender messageSender = SMTPMessageSender.noAuthentication(LOCALHOST_IP, SMTP_PORT, JAMES_APACHE_ORG);
+             IMAPMessageReader imapMessageReader = new IMAPMessageReader(LOCALHOST_IP, IMAP_PORT)) {
+            messageSender.sendMessage(FROM, RECIPIENT);
+
+            calmlyAwait.atMost(Duration.ONE_MINUTE).until(() ->
+                imapMessageReader.userReceivedMessageInMailbox(FROM, PASSWORD, MailboxConstants.INBOX));
+        }
+    }
+
+    @Test
+    public void remoteDeliveryShouldBounceUponFailureWhenNoBounceProcessor() throws Exception {
+        String gatewayProperty = "invalid.domain";
+        InMemoryDNSService inMemoryDNSService = new InMemoryDNSService();
+        InetAddress containerIp = InetAddress.getByName(fakeSmtp.getContainerIp());
+        inMemoryDNSService.registerRecord(JAMES_ANOTHER_DOMAIN, containerIp, JAMES_ANOTHER_DOMAIN);
+
+        jamesServer = new TemporaryJamesServer(temporaryFolder,
+            MailetContainer.builder()
+                .postmaster("postmaster@" + JAMES_APACHE_ORG)
+                .threads(5)
+                .addProcessor(root())
+                .addProcessor(CommonProcessors.error())
+                .addProcessor(ProcessorConfiguration.builder()
+                    .state("transport")
+                    .enableJmx(true)
+                    .addMailet(MailetConfiguration.builder()
+                        .matcher(All.class)
+                        .mailet(RemoveMimeHeader.class)
+                        .addProperty("name", "bcc")
+                        .build())
+                    .addMailet(MailetConfiguration.builder()
+                        .matcher(RecipientIsLocal.class)
+                        .mailet(VacationMailet.class)
+                        .build())
+                    .addMailet(MailetConfiguration.builder()
+                        .matcher(RecipientIsLocal.class)
+                        .mailet(LocalDelivery.class)
+                        .build())
+                    .addMailet(MailetConfiguration.builder()
+                        .matcher(All.class)
+                        .mailet(RemoteDelivery.class)
+                        .addProperty("outgoingQueue", "outgoing")
+                        .addProperty("delayTime", "5000, 100000, 500000")
+                        .addProperty("maxRetries", "2")
+                        .addProperty("maxDnsProblemRetries", "0")
+                        .addProperty("deliveryThreads", "2")
+                        .addProperty("sendpartial", "true")
+                        .addProperty("gateway", gatewayProperty)
+                        .build())
+                    .build())
+                .addProcessor(CommonProcessors.bounces())
+                .build(),
+            binder -> binder.bind(DNSService.class).toInstance(inMemoryDNSService));
+        dataProbe = jamesServer.getProbe(DataProbeImpl.class);
+
+        dataProbe.addDomain(JAMES_APACHE_ORG);
+        dataProbe.addUser(FROM, PASSWORD);
+
+        try (SMTPMessageSender messageSender = SMTPMessageSender.noAuthentication(LOCALHOST_IP, SMTP_PORT, JAMES_APACHE_ORG);
+             IMAPMessageReader imapMessageReader = new IMAPMessageReader(LOCALHOST_IP, IMAP_PORT)) {
+            messageSender.sendMessage(FROM, RECIPIENT);
+
+            calmlyAwait.atMost(Duration.ONE_MINUTE).until(() ->
+                imapMessageReader.userReceivedMessageInMailbox(FROM, PASSWORD, MailboxConstants.INBOX));
+        }
+    }
+
+    @Test
+    public void directResolutionShouldBeWellPerformed() throws Exception {
+        InMemoryDNSService inMemoryDNSService = new InMemoryDNSService();
+        InetAddress containerIp = InetAddress.getByName(fakeSmtp.getContainerIp());
+        inMemoryDNSService.registerRecord(JAMES_ANOTHER_DOMAIN, containerIp, JAMES_ANOTHER_DOMAIN);
+
+        jamesServer = new TemporaryJamesServer(temporaryFolder,
+            MailetContainer.builder()
+                .postmaster("postmaster@" + JAMES_APACHE_ORG)
+                .threads(5)
+                .addProcessor(root())
+                .addProcessor(CommonProcessors.error())
+                .addProcessor(directResolutionTransport())
+                .addProcessor(CommonProcessors.bounces())
+                .build(),
+            binder -> binder.bind(DNSService.class).toInstance(inMemoryDNSService));
+        dataProbe = jamesServer.getProbe(DataProbeImpl.class);
+
+        dataProbe.addDomain(JAMES_APACHE_ORG);
+        dataProbe.addUser(FROM, PASSWORD);
+
+        try (SMTPMessageSender messageSender = SMTPMessageSender.noAuthentication(LOCALHOST_IP, SMTP_PORT, JAMES_APACHE_ORG)) {
+            messageSender.sendMessage(FROM, RECIPIENT);
+
+            calmlyAwait.atMost(Duration.ONE_MINUTE).until(this::messageIsReceivedByTheSmtpServer);
+        }
+    }
+
+    private boolean messageIsReceivedByTheSmtpServer() {
+        try {
+            when()
+                .get("/api/email")
+            .then()
+                .statusCode(200)
+                .body("", hasSize(1))
+                .body("[0].from", equalTo(FROM))
+                .body("[0].subject", equalTo("test"));
+            return true;
+        } catch (Exception e) {
+            return false;
+        }
+    }
+
+    private MailetContainer generateMailetContainerConfiguration(String gatewayProperty) {
+        return MailetContainer.builder()
+            .postmaster("postmaster@" + JAMES_APACHE_ORG)
+            .threads(5)
+            .addProcessor(root())
+            .addProcessor(CommonProcessors.error())
+            .addProcessor(relayOnlyTransport(gatewayProperty))
+            .addProcessor(CommonProcessors.bounces())
+            .build();
+    }
+
+    public ProcessorConfiguration root() {
+        // Custom in memory DNS resolution is not possible combined with InSpamerBackList
+        return ProcessorConfiguration.builder()
+            .state("root")
+            .enableJmx(true)
+            .addMailet(MailetConfiguration.builder()
+                .matcher(All.class)
+                .mailet(PostmasterAlias.class)
+                .build())
+            .addMailet(MailetConfiguration.builder()
+                .matcher(RelayLimit.class)
+                .matcherCondition("30")
+                .mailet(Null.class)
+                .build())
+            .addMailet(MailetConfiguration.builder()
+                .matcher(All.class)
+                .mailet(ToProcessor.class)
+                .addProperty("processor", "transport")
+                .build())
+            .build();
+    }
+
+    private ProcessorConfiguration relayOnlyTransport(String gatewayProperty) {
+        return ProcessorConfiguration.builder()
+            .state("transport")
+            .enableJmx(true)
+            .addMailet(MailetConfiguration.builder()
+                .matcher(All.class)
+                .mailet(RemoveMimeHeader.class)
+                .addProperty("name", "bcc")
+                .build())
+            .addMailet(MailetConfiguration.builder()
+                .matcher(RecipientIsLocal.class)
+                .mailet(VacationMailet.class)
+                .build())
+            .addMailet(MailetConfiguration.builder()
+                .matcher(All.class)
+                .mailet(RemoteDelivery.class)
+                .addProperty("outgoingQueue", "outgoing")
+                .addProperty("delayTime", "5000, 100000, 500000")
+                .addProperty("maxRetries", "2")
+                .addProperty("maxDnsProblemRetries", "0")
+                .addProperty("deliveryThreads", "2")
+                .addProperty("sendpartial", "true")
+                .addProperty("bounceProcessor", "bounces")
+                .addProperty("gateway", gatewayProperty)
+                .build())
+            .build();
+    }
+
+    private ProcessorConfiguration relayAndLocalDeliveryTransport(String gatewayProperty) {
+        return ProcessorConfiguration.builder()
+            .state("transport")
+            .enableJmx(true)
+            .addMailet(MailetConfiguration.builder()
+                .matcher(All.class)
+                .mailet(RemoveMimeHeader.class)
+                .addProperty("name", "bcc")
+                .build())
+            .addMailet(MailetConfiguration.builder()
+                .matcher(RecipientIsLocal.class)
+                .mailet(VacationMailet.class)
+                .build())
+            .addMailet(MailetConfiguration.builder()
+                .matcher(RecipientIsLocal.class)
+                .mailet(LocalDelivery.class)
+                .build())
+            .addMailet(MailetConfiguration.builder()
+                .matcher(All.class)
+                .mailet(RemoteDelivery.class)
+                .addProperty("outgoingQueue", "outgoing")
+                .addProperty("delayTime", "5000, 100000, 500000")
+                .addProperty("maxRetries", "2")
+                .addProperty("maxDnsProblemRetries", "0")
+                .addProperty("deliveryThreads", "2")
+                .addProperty("sendpartial", "true")
+                .addProperty("bounceProcessor", "bounces")
+                .addProperty("gateway", gatewayProperty)
+                .build())
+            .build();
+    }
+
+    private ProcessorConfiguration directResolutionTransport() {
+        return ProcessorConfiguration.builder()
+            .state("transport")
+            .enableJmx(true)
+            .addMailet(MailetConfiguration.builder()
+                .matcher(All.class)
+                .mailet(RemoveMimeHeader.class)
+                .addProperty("name", "bcc")
+                .build())
+            .addMailet(MailetConfiguration.builder()
+                .matcher(RecipientIsLocal.class)
+                .mailet(VacationMailet.class)
+                .build())
+            .addMailet(MailetConfiguration.builder()
+                .matcher(All.class)
+                .mailet(RemoteDelivery.class)
+                .addProperty("outgoingQueue", "outgoing")
+                .addProperty("delayTime", "5000, 100000, 500000")
+                .addProperty("maxRetries", "2")
+                .addProperty("maxDnsProblemRetries", "0")
+                .addProperty("deliveryThreads", "2")
+                .addProperty("sendpartial", "true")
+                .addProperty("bounceProcessor", "bounces")
+                .build())
+            .build();
+    }
+
+}


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


[18/19] james-project git commit: JAMES-2242 Factorize and centralize docker images definitions

Posted by ad...@apache.org.
JAMES-2242 Factorize and centralize docker images definitions


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

Branch: refs/heads/master
Commit: 62b00ebf4b1c10a7372aed20ef55e810b6b857f9
Parents: 992a4d0
Author: benwa <bt...@linagora.com>
Authored: Mon Dec 4 18:12:03 2017 +0700
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Mon Dec 4 14:42:23 2017 +0100

----------------------------------------------------------------------
 .../james/mailbox/tika/TikaContainer.java       |  3 ++-
 .../apache/james/DockerElasticSearchRule.java   |  3 ++-
 .../apache/james/metric/es/ESReporterTest.java  |  3 ++-
 .../james/util/streams/ContainerNames.java      | 28 ++++++++++++++++++++
 .../GatewayRemoteDeliveryIntegrationTest.java   |  3 ++-
 .../mailets/AmqpForwardAttachmentTest.java      |  3 ++-
 .../transport/mailets/ContactExtractorTest.java |  3 ++-
 .../transport/mailets/GroupMappingTest.java     |  3 ++-
 .../mailets/ICSAttachmentWorkflowTest.java      |  3 ++-
 .../org/apache/james/jmap/ContainerTest.java    |  3 ++-
 .../jmap/VacationRelayIntegrationTest.java      |  3 ++-
 11 files changed, 48 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/62b00ebf/mailbox/tika/src/test/java/org/apache/james/mailbox/tika/TikaContainer.java
----------------------------------------------------------------------
diff --git a/mailbox/tika/src/test/java/org/apache/james/mailbox/tika/TikaContainer.java b/mailbox/tika/src/test/java/org/apache/james/mailbox/tika/TikaContainer.java
index 82ac712..adb451b 100644
--- a/mailbox/tika/src/test/java/org/apache/james/mailbox/tika/TikaContainer.java
+++ b/mailbox/tika/src/test/java/org/apache/james/mailbox/tika/TikaContainer.java
@@ -21,6 +21,7 @@ package org.apache.james.mailbox.tika;
 import java.time.Duration;
 import java.util.concurrent.TimeUnit;
 
+import org.apache.james.util.streams.ContainerNames;
 import org.apache.james.util.streams.SwarmGenericContainer;
 import org.junit.rules.ExternalResource;
 import org.testcontainers.containers.wait.Wait;
@@ -35,7 +36,7 @@ public class TikaContainer extends ExternalResource {
     private final SwarmGenericContainer tika;
 
     public TikaContainer() {
-        tika = new SwarmGenericContainer("logicalspark/docker-tikaserver:1.15rc2")
+        tika = new SwarmGenericContainer(ContainerNames.TIKA)
                 .withExposedPorts(DEFAULT_TIKA_PORT)
                 .waitingFor(Wait.forHttp("/tika"))
                 .withStartupTimeout(Duration.ofSeconds(30));

http://git-wip-us.apache.org/repos/asf/james-project/blob/62b00ebf/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DockerElasticSearchRule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DockerElasticSearchRule.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DockerElasticSearchRule.java
index 85171ba..06b5d44 100644
--- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DockerElasticSearchRule.java
+++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DockerElasticSearchRule.java
@@ -22,6 +22,7 @@ package org.apache.james;
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.PropertiesConfiguration;
 import org.apache.james.modules.mailbox.ElasticSearchConfiguration;
+import org.apache.james.util.streams.ContainerNames;
 import org.apache.james.util.streams.SwarmGenericContainer;
 import org.junit.runner.Description;
 import org.junit.runners.model.Statement;
@@ -59,7 +60,7 @@ public class DockerElasticSearchRule implements GuiceModuleTestRule {
         }
     }
 
-    private SwarmGenericContainer elasticSearchContainer = new SwarmGenericContainer("elasticsearch:2.2.2")
+    private SwarmGenericContainer elasticSearchContainer = new SwarmGenericContainer(ContainerNames.ELASTICSEARCH)
         .withExposedPorts(ELASTIC_SEARCH_HTTP_PORT, ELASTIC_SEARCH_PORT);
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/62b00ebf/server/container/metrics/metrics-es-reporter/src/test/java/org/apache/james/metric/es/ESReporterTest.java
----------------------------------------------------------------------
diff --git a/server/container/metrics/metrics-es-reporter/src/test/java/org/apache/james/metric/es/ESReporterTest.java b/server/container/metrics/metrics-es-reporter/src/test/java/org/apache/james/metric/es/ESReporterTest.java
index 2878e90..3cd77bd 100644
--- a/server/container/metrics/metrics-es-reporter/src/test/java/org/apache/james/metric/es/ESReporterTest.java
+++ b/server/container/metrics/metrics-es-reporter/src/test/java/org/apache/james/metric/es/ESReporterTest.java
@@ -31,6 +31,7 @@ import org.apache.james.metrics.api.TimeMetric;
 import org.apache.james.metrics.dropwizard.DropWizardMetricFactory;
 import org.apache.james.metrics.es.ESMetricReporter;
 import org.apache.james.metrics.es.ESReporterConfiguration;
+import org.apache.james.util.streams.ContainerNames;
 import org.apache.james.util.streams.SwarmGenericContainer;
 import org.elasticsearch.client.Client;
 import org.elasticsearch.index.query.QueryBuilders;
@@ -52,7 +53,7 @@ public class ESReporterTest {
     public static final int ES_HTTP_PORT = 9200;
 
     @Rule
-    public SwarmGenericContainer esContainer = new SwarmGenericContainer("elasticsearch:2.2.2")
+    public SwarmGenericContainer esContainer = new SwarmGenericContainer(ContainerNames.ELASTICSEARCH)
         .withAffinityToContainer()
         .withExposedPorts(ES_HTTP_PORT, ES_APPLICATIVE_PORT);
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/62b00ebf/server/container/util-java8/src/test/java/org/apache/james/util/streams/ContainerNames.java
----------------------------------------------------------------------
diff --git a/server/container/util-java8/src/test/java/org/apache/james/util/streams/ContainerNames.java b/server/container/util-java8/src/test/java/org/apache/james/util/streams/ContainerNames.java
new file mode 100644
index 0000000..908cea2
--- /dev/null
+++ b/server/container/util-java8/src/test/java/org/apache/james/util/streams/ContainerNames.java
@@ -0,0 +1,28 @@
+/****************************************************************
+ * 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.util.streams;
+
+public interface ContainerNames {
+    String FAKE_SMTP = "weave/rest-smtp-sink:latest";
+    String RABBITMQ = "rabbitmq:3";
+    String ELASTICSEARCH = "elasticsearch:2.2.2";
+    String NGINX = "nginx:1.7.1";
+    String TIKA = "logicalspark/docker-tikaserver:1.15rc2";
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/62b00ebf/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java
index 8c9e63a..9094ab6 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java
@@ -52,6 +52,7 @@ import org.apache.james.transport.mailets.ToProcessor;
 import org.apache.james.transport.matchers.All;
 import org.apache.james.transport.matchers.RecipientIsLocal;
 import org.apache.james.transport.matchers.RelayLimit;
+import org.apache.james.util.streams.ContainerNames;
 import org.apache.james.util.streams.SwarmGenericContainer;
 import org.apache.james.utils.DataProbeImpl;
 import org.apache.james.utils.IMAPMessageReader;
@@ -100,7 +101,7 @@ public class GatewayRemoteDeliveryIntegrationTest {
     public TemporaryFolder temporaryFolder = new TemporaryFolder();
 
     private final TemporaryFolder smtpFolder = new TemporaryFolder();
-    private final SwarmGenericContainer fakeSmtp = new SwarmGenericContainer("weave/rest-smtp-sink:latest")
+    private final SwarmGenericContainer fakeSmtp = new SwarmGenericContainer(ContainerNames.FAKE_SMTP)
         .withExposedPorts(25)
         .withAffinityToContainer()
         .waitingFor(new HostPortWaitStrategy());

http://git-wip-us.apache.org/repos/asf/james-project/blob/62b00ebf/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 04471a0..0b19dd4 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
@@ -36,6 +36,7 @@ import org.apache.james.probe.DataProbe;
 import org.apache.james.transport.mailets.amqp.AmqpRule;
 import org.apache.james.transport.matchers.All;
 import org.apache.james.transport.matchers.RecipientIsLocal;
+import org.apache.james.util.streams.ContainerNames;
 import org.apache.james.util.streams.SwarmGenericContainer;
 import org.apache.james.utils.DataProbeImpl;
 import org.apache.james.utils.IMAPMessageReader;
@@ -73,7 +74,7 @@ public class AmqpForwardAttachmentTest {
     
     private static final byte[] TEST_ATTACHMENT_CONTENT = "Test attachment content".getBytes(Charsets.UTF_8);
 
-    public SwarmGenericContainer rabbitMqContainer = new SwarmGenericContainer("rabbitmq:3")
+    public SwarmGenericContainer rabbitMqContainer = new SwarmGenericContainer(ContainerNames.RABBITMQ)
             .withAffinityToContainer();
 
     public TemporaryFolder temporaryFolder = new TemporaryFolder();

http://git-wip-us.apache.org/repos/asf/james-project/blob/62b00ebf/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 16ef6a8..34c9a36 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
@@ -36,6 +36,7 @@ import org.apache.james.transport.mailets.amqp.AmqpRule;
 import org.apache.james.transport.matchers.All;
 import org.apache.james.transport.matchers.RecipientIsLocal;
 import org.apache.james.transport.matchers.SMTPAuthSuccessful;
+import org.apache.james.util.streams.ContainerNames;
 import org.apache.james.util.streams.SwarmGenericContainer;
 import org.apache.james.utils.DataProbeImpl;
 import org.apache.james.utils.IMAPMessageReader;
@@ -66,7 +67,7 @@ public class ContactExtractorTest {
     public static final String EXCHANGE = "collector:email";
     public static final String ROUTING_KEY = "";
 
-    public SwarmGenericContainer rabbit = new SwarmGenericContainer("rabbitmq:3");
+    public SwarmGenericContainer rabbit = new SwarmGenericContainer(ContainerNames.RABBITMQ);
     public AmqpRule amqpRule = new AmqpRule(rabbit, EXCHANGE, ROUTING_KEY);
     public TemporaryFolder folder = new TemporaryFolder();
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/62b00ebf/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 0222ce0..c9f36f9 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
@@ -44,6 +44,7 @@ import org.apache.james.transport.matchers.All;
 import org.apache.james.transport.matchers.RecipientIsLocal;
 import org.apache.james.transport.matchers.RelayLimit;
 import org.apache.james.transport.matchers.SMTPAuthSuccessful;
+import org.apache.james.util.streams.ContainerNames;
 import org.apache.james.util.streams.SwarmGenericContainer;
 import org.apache.james.utils.DataProbeImpl;
 import org.apache.james.utils.IMAPMessageReader;
@@ -90,7 +91,7 @@ public class GroupMappingTest {
     private RequestSpecification restApiRequest;
 
     @Rule
-    public final SwarmGenericContainer fakeSmtp = new SwarmGenericContainer("weave/rest-smtp-sink:latest")
+    public final SwarmGenericContainer fakeSmtp = new SwarmGenericContainer(ContainerNames.FAKE_SMTP)
         .withExposedPorts(25)
         .withAffinityToContainer()
         .waitingFor(new HostPortWaitStrategy());

http://git-wip-us.apache.org/repos/asf/james-project/blob/62b00ebf/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 e44853e..56e80f3 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,6 +39,7 @@ import org.apache.james.probe.DataProbe;
 import org.apache.james.transport.mailets.amqp.AmqpRule;
 import org.apache.james.transport.matchers.All;
 import org.apache.james.transport.matchers.RecipientIsLocal;
+import org.apache.james.util.streams.ContainerNames;
 import org.apache.james.util.streams.SwarmGenericContainer;
 import org.apache.james.utils.DataProbeImpl;
 import org.apache.james.utils.IMAPMessageReader;
@@ -434,7 +435,7 @@ public class ICSAttachmentWorkflowTest {
             "END:VCALENDAR\r\n" +
             "";
 
-    public SwarmGenericContainer rabbitMqContainer = new SwarmGenericContainer("rabbitmq:3")
+    public SwarmGenericContainer rabbitMqContainer = new SwarmGenericContainer(ContainerNames.RABBITMQ)
             .withAffinityToContainer();
     public TemporaryFolder temporaryFolder = new TemporaryFolder();
     public AmqpRule amqpRule = new AmqpRule(rabbitMqContainer, EXCHANGE_NAME, ROUTING_KEY);

http://git-wip-us.apache.org/repos/asf/james-project/blob/62b00ebf/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/ContainerTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/ContainerTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/ContainerTest.java
index a403ed1..2bd0288 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/ContainerTest.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/ContainerTest.java
@@ -26,6 +26,7 @@ import java.net.URISyntaxException;
 import org.apache.http.client.fluent.Request;
 import org.apache.http.client.fluent.Response;
 import org.apache.http.client.utils.URIBuilder;
+import org.apache.james.util.streams.ContainerNames;
 import org.apache.james.util.streams.SwarmGenericContainer;
 import org.junit.Rule;
 import org.junit.Test;
@@ -34,7 +35,7 @@ import org.testcontainers.containers.wait.HttpWaitStrategy;
 public class ContainerTest {
 
     @Rule
-    public SwarmGenericContainer container = new SwarmGenericContainer("nginx:1.7.1")
+    public SwarmGenericContainer container = new SwarmGenericContainer(ContainerNames.NGINX)
         .withAffinityToContainer()
         .withExposedPorts(80)
         .waitingFor(new HttpWaitStrategy().forStatusCode(200));

http://git-wip-us.apache.org/repos/asf/james-project/blob/62b00ebf/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/VacationRelayIntegrationTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/VacationRelayIntegrationTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/VacationRelayIntegrationTest.java
index a750699..f0b9108 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/VacationRelayIntegrationTest.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/VacationRelayIntegrationTest.java
@@ -36,6 +36,7 @@ import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.store.probe.MailboxProbe;
 import org.apache.james.modules.MailboxProbeImpl;
 import org.apache.james.probe.DataProbe;
+import org.apache.james.util.streams.ContainerNames;
 import org.apache.james.util.streams.SwarmGenericContainer;
 import org.apache.james.utils.DataProbeImpl;
 import org.apache.james.utils.JmapGuiceProbe;
@@ -66,7 +67,7 @@ public abstract class VacationRelayIntegrationTest {
     private static final int REST_SMTP_SINK_PORT = 25;
 
     @Rule
-    public final SwarmGenericContainer fakeSmtp = new SwarmGenericContainer("weave/rest-smtp-sink:latest")
+    public final SwarmGenericContainer fakeSmtp = new SwarmGenericContainer(ContainerNames.FAKE_SMTP)
         .withExposedPorts(REST_SMTP_SINK_PORT)
         .waitingFor(new HostPortWaitStrategy());
 


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


[08/19] james-project git commit: JAMES-2242 JamesMailetContext was not bound as Singleton by Guice

Posted by ad...@apache.org.
JAMES-2242 JamesMailetContext was not bound as Singleton by Guice

This is why I ended up with a null postmaster while bouncing...


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

Branch: refs/heads/master
Commit: 775de66bba207ee31728e1b9b3a707bf842d7445
Parents: 9cc4c6c
Author: benwa <bt...@linagora.com>
Authored: Wed Nov 29 15:09:39 2017 +0700
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Mon Dec 4 14:42:17 2017 +0100

----------------------------------------------------------------------
 .../apache/james/modules/server/CamelMailetContainerModule.java  | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/775de66b/server/container/guice/mailet/src/main/java/org/apache/james/modules/server/CamelMailetContainerModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/mailet/src/main/java/org/apache/james/modules/server/CamelMailetContainerModule.java b/server/container/guice/mailet/src/main/java/org/apache/james/modules/server/CamelMailetContainerModule.java
index 576bef2..3680c0a 100644
--- a/server/container/guice/mailet/src/main/java/org/apache/james/modules/server/CamelMailetContainerModule.java
+++ b/server/container/guice/mailet/src/main/java/org/apache/james/modules/server/CamelMailetContainerModule.java
@@ -73,6 +73,8 @@ public class CamelMailetContainerModule extends AbstractModule {
         bind(JamesMailSpooler.class).in(Scopes.SINGLETON);
         bind(MailSpoolerMBean.class).to(JamesMailSpooler.class);
 
+        bind(MailetContext.class).to(JamesMailetContext.class);
+
         bind(MailetLoader.class).to(GuiceMailetLoader.class);
         bind(MatcherLoader.class).to(GuiceMatcherLoader.class);
 
@@ -84,7 +86,7 @@ public class CamelMailetContainerModule extends AbstractModule {
 
     @Provides
     @Singleton
-    private MailetContext provideMailetContext(MailQueueFactory mailQueueFactory,
+    private JamesMailetContext provideMailetContext(MailQueueFactory mailQueueFactory,
                                                     DNSService dns,
                                                     UsersRepository localusers,
                                                     DomainList domains) {


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


[17/19] james-project git commit: JAMES-2242 Guice meta-modules should be in upper case

Posted by ad...@apache.org.
JAMES-2242 Guice meta-modules should be in upper case


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

Branch: refs/heads/master
Commit: 992a4d07dd0f6e29ce639ca58b3909e74e3bbc85
Parents: 9ad1616
Author: benwa <bt...@linagora.com>
Authored: Fri Dec 1 15:59:00 2017 +0700
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Mon Dec 4 14:42:23 2017 +0100

----------------------------------------------------------------------
 .../smtp/host/CassandraJamesSmtpHostSystem.java |  2 +-
 .../apache/james/CassandraJamesServerMain.java  | 10 +++++-----
 .../org/apache/james/CassandraJmapTestRule.java |  2 +-
 .../james/JamesCapabilitiesServerTest.java      |  2 +-
 .../james/CassandraLdapJamesServerMain.java     |  2 +-
 .../org/apache/james/JPAJamesServerMain.java    | 10 +++++-----
 .../org/apache/james/JPAJamesServerTest.java    |  2 +-
 .../james/JamesCapabilitiesServerTest.java      |  2 +-
 .../org/apache/james/JPAJamesServerMain.java    |  6 +++---
 .../org/apache/james/JPAJamesServerTest.java    |  2 +-
 .../org/apache/james/MemoryJamesServerMain.java | 20 ++++++++++----------
 .../org/apache/james/MemoryJmapTestRule.java    |  2 +-
 .../GatewayRemoteDeliveryIntegrationTest.java   |  2 +-
 .../james/mailets/TemporaryJamesServer.java     |  2 +-
 .../cassandra/cucumber/CassandraStepdefs.java   |  2 +-
 .../jmap/memory/cucumber/MemoryStepdefs.java    |  2 +-
 16 files changed, 35 insertions(+), 35 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/992a4d07/mpt/impl/smtp/cassandra/src/test/java/org/apache/james/mpt/smtp/host/CassandraJamesSmtpHostSystem.java
----------------------------------------------------------------------
diff --git a/mpt/impl/smtp/cassandra/src/test/java/org/apache/james/mpt/smtp/host/CassandraJamesSmtpHostSystem.java b/mpt/impl/smtp/cassandra/src/test/java/org/apache/james/mpt/smtp/host/CassandraJamesSmtpHostSystem.java
index a7a3fbf..3556014 100644
--- a/mpt/impl/smtp/cassandra/src/test/java/org/apache/james/mpt/smtp/host/CassandraJamesSmtpHostSystem.java
+++ b/mpt/impl/smtp/cassandra/src/test/java/org/apache/james/mpt/smtp/host/CassandraJamesSmtpHostSystem.java
@@ -102,7 +102,7 @@ public class CassandraJamesSmtpHostSystem extends ExternalSessionFactory impleme
 
     protected GuiceJamesServer createJamesServer() {
         return new GuiceJamesServer()
-            .combineWith(CassandraJamesServerMain.cassandraServerModule, CassandraJamesServerMain.protocols, new ProtocolHandlerModule())
+            .combineWith(CassandraJamesServerMain.CASSANDRA_SERVER_MODULE, CassandraJamesServerMain.PROTOCOLS, new ProtocolHandlerModule())
             .overrideWith(new CassandraJmapServerModule(folder::getRoot, embeddedElasticSearch, cassandraHost, cassandraPort),
                 (binder) -> binder.bind(DNSService.class).toInstance(inMemoryDNSService));
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/992a4d07/server/container/guice/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java
index fc7b762..8a81e4c 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java
@@ -51,14 +51,14 @@ import com.google.inject.util.Modules;
 
 public class CassandraJamesServerMain {
 
-    public static final Module webadmin = Modules.combine(
+    public static final Module WEBADMIN = Modules.combine(
         new CassandraRoutesModule(),
         new DataRoutesModules(),
         new MailboxRoutesModule(),
         new SwaggerRoutesModule(),
         new WebAdminServerModule());
 
-    public static final Module protocols = Modules.combine(
+    public static final Module PROTOCOLS = Modules.combine(
         new IMAPServerModule(),
         new LMTPServerModule(),
         new ManageSieveServerModule(),
@@ -66,9 +66,9 @@ public class CassandraJamesServerMain {
         new ProtocolHandlerModule(),
         new SMTPServerModule(),
         new JMAPServerModule(),
-        webadmin);
+        WEBADMIN);
 
-    public static final Module cassandraServerModule = Modules.combine(
+    public static final Module CASSANDRA_SERVER_MODULE = Modules.combine(
         new ActiveMQQueueModule(),
         new CassandraDomainListModule(),
         new CassandraJmapModule(),
@@ -85,7 +85,7 @@ public class CassandraJamesServerMain {
 
     public static void main(String[] args) throws Exception {
         GuiceJamesServer server = new GuiceJamesServer()
-                    .combineWith(cassandraServerModule, protocols, new JMXServerModule());
+                    .combineWith(CASSANDRA_SERVER_MODULE, PROTOCOLS, new JMXServerModule());
         server.start();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/992a4d07/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraJmapTestRule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraJmapTestRule.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraJmapTestRule.java
index 5d45c16..36eae85 100644
--- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraJmapTestRule.java
+++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraJmapTestRule.java
@@ -48,7 +48,7 @@ public class CassandraJmapTestRule implements TestRule {
 
     public GuiceJamesServer jmapServer(Module... additionals) {
         return new GuiceJamesServer()
-            .combineWith(CassandraJamesServerMain.cassandraServerModule, CassandraJamesServerMain.protocols)
+            .combineWith(CassandraJamesServerMain.CASSANDRA_SERVER_MODULE, CassandraJamesServerMain.PROTOCOLS)
             .overrideWith(binder -> binder.bind(TextExtractor.class).to(PDFTextExtractor.class))
             .overrideWith(new TestJMAPServerModule(LIMIT_TO_3_MESSAGES))
             .overrideWith(new TestESMetricReporterModule())

http://git-wip-us.apache.org/repos/asf/james-project/blob/992a4d07/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesCapabilitiesServerTest.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesCapabilitiesServerTest.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesCapabilitiesServerTest.java
index 5f561b5..1bce059 100644
--- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesCapabilitiesServerTest.java
+++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesCapabilitiesServerTest.java
@@ -61,7 +61,7 @@ public class JamesCapabilitiesServerTest {
         Module mockMailboxManager = (binder) -> binder.bind(MailboxManager.class).toInstance(mailboxManager);
         
         return new GuiceJamesServer()
-            .combineWith(CassandraJamesServerMain.cassandraServerModule, CassandraJamesServerMain.protocols)
+            .combineWith(CassandraJamesServerMain.CASSANDRA_SERVER_MODULE, CassandraJamesServerMain.PROTOCOLS)
             .overrideWith((binder) -> binder.bind(PersistenceAdapter.class).to(MemoryPersistenceAdapter.class))
             .overrideWith(new TestElasticSearchModule(embeddedElasticSearch),
                 new TestFilesystemModule(temporaryFolder),

http://git-wip-us.apache.org/repos/asf/james-project/blob/992a4d07/server/container/guice/cassandra-ldap-guice/src/main/java/org/apache/james/CassandraLdapJamesServerMain.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-ldap-guice/src/main/java/org/apache/james/CassandraLdapJamesServerMain.java b/server/container/guice/cassandra-ldap-guice/src/main/java/org/apache/james/CassandraLdapJamesServerMain.java
index 746abec..042cb2b 100644
--- a/server/container/guice/cassandra-ldap-guice/src/main/java/org/apache/james/CassandraLdapJamesServerMain.java
+++ b/server/container/guice/cassandra-ldap-guice/src/main/java/org/apache/james/CassandraLdapJamesServerMain.java
@@ -27,7 +27,7 @@ import com.google.inject.util.Modules;
 
 public class CassandraLdapJamesServerMain {
 
-    public static final Module cassandraLdapServerModule = Modules.override(CassandraJamesServerMain.cassandraServerModule, CassandraJamesServerMain.protocols)
+    public static final Module cassandraLdapServerModule = Modules.override(CassandraJamesServerMain.CASSANDRA_SERVER_MODULE, CassandraJamesServerMain.PROTOCOLS)
         .with(new LdapUsersRepositoryModule());
 
     public static void main(String[] args) throws Exception {

http://git-wip-us.apache.org/repos/asf/james-project/blob/992a4d07/server/container/guice/jpa-guice/src/main/java/org/apache/james/JPAJamesServerMain.java
----------------------------------------------------------------------
diff --git a/server/container/guice/jpa-guice/src/main/java/org/apache/james/JPAJamesServerMain.java b/server/container/guice/jpa-guice/src/main/java/org/apache/james/JPAJamesServerMain.java
index 783b1bd..141df5f 100644
--- a/server/container/guice/jpa-guice/src/main/java/org/apache/james/JPAJamesServerMain.java
+++ b/server/container/guice/jpa-guice/src/main/java/org/apache/james/JPAJamesServerMain.java
@@ -47,22 +47,22 @@ import com.google.inject.util.Modules;
 
 public class JPAJamesServerMain {
 
-    public static final Module webadmin = Modules.combine(
+    public static final Module WEBADMIN = Modules.combine(
         new WebAdminServerModule(),
         new DataRoutesModules(),
         new MailboxRoutesModule(),
         new SwaggerRoutesModule());
 
-    public static final Module protocols = Modules.combine(
+    public static final Module PROTOCOLS = Modules.combine(
         new IMAPServerModule(),
         new LMTPServerModule(),
         new ManageSieveServerModule(),
         new POP3ServerModule(),
         new ProtocolHandlerModule(),
         new SMTPServerModule(),
-        webadmin);
+        WEBADMIN);
     
-    public static final Module jpaServerModule = Modules.combine(
+    public static final Module JPA_SERVER_MODULE = Modules.combine(
         new ActiveMQQueueModule(),
         new DefaultProcessorsConfigurationProviderModule(),
         new ElasticSearchMetricReporterModule(),
@@ -76,7 +76,7 @@ public class JPAJamesServerMain {
 
     public static void main(String[] args) throws Exception {
         GuiceJamesServer server = new GuiceJamesServer()
-                    .combineWith(jpaServerModule, protocols, 
+                    .combineWith(JPA_SERVER_MODULE, PROTOCOLS,
                             new JMXServerModule(), 
                             new LuceneSearchMailboxModule());
         server.start();

http://git-wip-us.apache.org/repos/asf/james-project/blob/992a4d07/server/container/guice/jpa-guice/src/test/java/org/apache/james/JPAJamesServerTest.java
----------------------------------------------------------------------
diff --git a/server/container/guice/jpa-guice/src/test/java/org/apache/james/JPAJamesServerTest.java b/server/container/guice/jpa-guice/src/test/java/org/apache/james/JPAJamesServerTest.java
index 1977930..00f1507 100644
--- a/server/container/guice/jpa-guice/src/test/java/org/apache/james/JPAJamesServerTest.java
+++ b/server/container/guice/jpa-guice/src/test/java/org/apache/james/JPAJamesServerTest.java
@@ -31,7 +31,7 @@ public class JPAJamesServerTest extends AbstractJamesServerTest {
     @Override
     protected GuiceJamesServer createJamesServer() {
         return new GuiceJamesServer()
-            .combineWith(JPAJamesServerMain.jpaServerModule, JPAJamesServerMain.protocols)
+            .combineWith(JPAJamesServerMain.JPA_SERVER_MODULE, JPAJamesServerMain.PROTOCOLS)
             .overrideWith(new TestFilesystemModule(temporaryFolder),
                     new TestJPAConfigurationModule());
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/992a4d07/server/container/guice/jpa-guice/src/test/java/org/apache/james/JamesCapabilitiesServerTest.java
----------------------------------------------------------------------
diff --git a/server/container/guice/jpa-guice/src/test/java/org/apache/james/JamesCapabilitiesServerTest.java b/server/container/guice/jpa-guice/src/test/java/org/apache/james/JamesCapabilitiesServerTest.java
index 82e728a..9078637 100644
--- a/server/container/guice/jpa-guice/src/test/java/org/apache/james/JamesCapabilitiesServerTest.java
+++ b/server/container/guice/jpa-guice/src/test/java/org/apache/james/JamesCapabilitiesServerTest.java
@@ -50,7 +50,7 @@ public class JamesCapabilitiesServerTest {
         Module mockMailboxManager = (binder) -> binder.bind(MailboxManager.class).toInstance(mailboxManager);
         
         return new GuiceJamesServer()
-            .combineWith(JPAJamesServerMain.jpaServerModule)
+            .combineWith(JPAJamesServerMain.JPA_SERVER_MODULE)
             .overrideWith(
                 new TestFilesystemModule(temporaryFolder),
                 new TestJPAConfigurationModule(),

http://git-wip-us.apache.org/repos/asf/james-project/blob/992a4d07/server/container/guice/jpa-smtp/src/main/java/org/apache/james/JPAJamesServerMain.java
----------------------------------------------------------------------
diff --git a/server/container/guice/jpa-smtp/src/main/java/org/apache/james/JPAJamesServerMain.java b/server/container/guice/jpa-smtp/src/main/java/org/apache/james/JPAJamesServerMain.java
index a2079c6..0c36736 100644
--- a/server/container/guice/jpa-smtp/src/main/java/org/apache/james/JPAJamesServerMain.java
+++ b/server/container/guice/jpa-smtp/src/main/java/org/apache/james/JPAJamesServerMain.java
@@ -38,7 +38,7 @@ import com.google.inject.util.Modules;
 
 public class JPAJamesServerMain {
 
-    public static final Module protocols = Modules.combine(
+    public static final Module PROTOCOLS = Modules.combine(
         new ProtocolHandlerModule(),
         new SMTPServerModule(),
         new WebAdminServerModule(),
@@ -46,7 +46,7 @@ public class JPAJamesServerMain {
         new NoJwtModule(),
         new DefaultProcessorsConfigurationProviderModule());
     
-    public static final Module jpaServerModule = Modules.combine(
+    public static final Module JPA_SERVER_MODULE = Modules.combine(
         new JPADataModule(),
         (binder) -> binder.bind(EntityManagerFactory.class).toProvider(OpenJPAPersistence::getEntityManagerFactory),
         new ActiveMQQueueModule(),
@@ -55,7 +55,7 @@ public class JPAJamesServerMain {
 
     public static void main(String[] args) throws Exception {
         GuiceJamesServer server = new GuiceJamesServer()
-                    .combineWith(jpaServerModule, protocols);
+                    .combineWith(JPA_SERVER_MODULE, PROTOCOLS);
         server.start();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/992a4d07/server/container/guice/jpa-smtp/src/test/java/org/apache/james/JPAJamesServerTest.java
----------------------------------------------------------------------
diff --git a/server/container/guice/jpa-smtp/src/test/java/org/apache/james/JPAJamesServerTest.java b/server/container/guice/jpa-smtp/src/test/java/org/apache/james/JPAJamesServerTest.java
index 7a22c19..01e6b36 100644
--- a/server/container/guice/jpa-smtp/src/test/java/org/apache/james/JPAJamesServerTest.java
+++ b/server/container/guice/jpa-smtp/src/test/java/org/apache/james/JPAJamesServerTest.java
@@ -57,7 +57,7 @@ public class JPAJamesServerTest {
 
     private org.apache.james.GuiceJamesServer createJamesServer() {
         return new GuiceJamesServer()
-                .combineWith(JPAJamesServerMain.jpaServerModule, JPAJamesServerMain.protocols)
+                .combineWith(JPAJamesServerMain.JPA_SERVER_MODULE, JPAJamesServerMain.PROTOCOLS)
                 .overrideWith(
                         new TestFilesystemModule(temporaryFolder),
                         new TestJPAConfigurationModule(),

http://git-wip-us.apache.org/repos/asf/james-project/blob/992a4d07/server/container/guice/memory-guice/src/main/java/org/apache/james/MemoryJamesServerMain.java
----------------------------------------------------------------------
diff --git a/server/container/guice/memory-guice/src/main/java/org/apache/james/MemoryJamesServerMain.java b/server/container/guice/memory-guice/src/main/java/org/apache/james/MemoryJamesServerMain.java
index 38ab031..d1dcf41 100644
--- a/server/container/guice/memory-guice/src/main/java/org/apache/james/MemoryJamesServerMain.java
+++ b/server/container/guice/memory-guice/src/main/java/org/apache/james/MemoryJamesServerMain.java
@@ -42,13 +42,13 @@ import com.google.inject.util.Modules;
 
 public class MemoryJamesServerMain {
 
-    public static final Module webadmin = Modules.combine(
+    public static final Module WEBADMIN = Modules.combine(
         new WebAdminServerModule(),
         new DataRoutesModules(),
         new MailboxRoutesModule(),
         new SwaggerRoutesModule());
 
-    public static final Module protocols = Modules.combine(
+    public static final Module PROTOCOLS = Modules.combine(
         new IMAPServerModule(),
         new LMTPServerModule(),
         new ManageSieveServerModule(),
@@ -56,25 +56,25 @@ public class MemoryJamesServerMain {
         new ProtocolHandlerModule(),
         new SMTPServerModule());
 
-    public static final Module jmap = Modules.combine(
+    public static final Module JMAP = Modules.combine(
         new MemoryDataJmapModule(),
         new JMAPServerModule());
 
-    public static final Module inMemoryServerModule = Modules.combine(
+    public static final Module IN_MEMORY_SERVER_MODULE = Modules.combine(
         new MemoryDataModule(),
         new MemoryMailboxModule(),
         new MemoryMailQueueModule(),
         new MailboxModule());
 
-    public static final Module inMemoryServerAggregateModule = Modules.combine(
-        inMemoryServerModule,
-        protocols,
-        jmap,
-        webadmin);
+    public static final Module IN_MEMORY_SERVER_AGGREGATE_MODULE = Modules.combine(
+        IN_MEMORY_SERVER_MODULE,
+        PROTOCOLS,
+        JMAP,
+        WEBADMIN);
 
     public static void main(String[] args) throws Exception {
         new GuiceJamesServer()
-            .combineWith(inMemoryServerAggregateModule, new JMXServerModule())
+            .combineWith(IN_MEMORY_SERVER_AGGREGATE_MODULE, new JMXServerModule())
             .start();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/992a4d07/server/container/guice/memory-guice/src/test/java/org/apache/james/MemoryJmapTestRule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/memory-guice/src/test/java/org/apache/james/MemoryJmapTestRule.java b/server/container/guice/memory-guice/src/test/java/org/apache/james/MemoryJmapTestRule.java
index 97c1e27..c884e84 100644
--- a/server/container/guice/memory-guice/src/test/java/org/apache/james/MemoryJmapTestRule.java
+++ b/server/container/guice/memory-guice/src/test/java/org/apache/james/MemoryJmapTestRule.java
@@ -42,7 +42,7 @@ public class MemoryJmapTestRule implements TestRule {
 
     public GuiceJamesServer jmapServer(Module... modules) {
         return new GuiceJamesServer()
-            .combineWith(MemoryJamesServerMain.inMemoryServerAggregateModule)
+            .combineWith(MemoryJamesServerMain.IN_MEMORY_SERVER_AGGREGATE_MODULE)
             .overrideWith(modules)
             .overrideWith(new TestFilesystemModule(temporaryFolder),
                 new TestJMAPServerModule(LIMIT_TO_3_MESSAGES))

http://git-wip-us.apache.org/repos/asf/james-project/blob/992a4d07/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java
index 7d4b6d1..8c9e63a 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java
@@ -86,7 +86,7 @@ public class GatewayRemoteDeliveryIntegrationTest {
     private static final String FROM = "from@" + JAMES_APACHE_ORG;
     private static final String RECIPIENT = "touser@" + JAMES_ANOTHER_DOMAIN;
     private static final Module SMTP_ONLY_MODULE = Modules.combine(
-        MemoryJamesServerMain.inMemoryServerModule,
+        MemoryJamesServerMain.IN_MEMORY_SERVER_MODULE,
         new ProtocolHandlerModule(),
         new SMTPServerModule(),
         new RawPostDequeueDecoratorModule(),

http://git-wip-us.apache.org/repos/asf/james-project/blob/992a4d07/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/TemporaryJamesServer.java
----------------------------------------------------------------------
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/TemporaryJamesServer.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/TemporaryJamesServer.java
index 6fc4496..0d32c46 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/TemporaryJamesServer.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/TemporaryJamesServer.java
@@ -70,7 +70,7 @@ public class TemporaryJamesServer {
             return new TemporaryJamesServer(
                 temporaryFolder,
                 mailetContainer,
-                module.orElse(MemoryJamesServerMain.inMemoryServerAggregateModule),
+                module.orElse(MemoryJamesServerMain.IN_MEMORY_SERVER_AGGREGATE_MODULE),
                 overrideModules.build());
         }
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/992a4d07/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraStepdefs.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraStepdefs.java b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraStepdefs.java
index 22f60ea..1e86126 100644
--- a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraStepdefs.java
+++ b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraStepdefs.java
@@ -60,7 +60,7 @@ public class CassandraStepdefs {
         embeddedElasticSearch.before();
         mainStepdefs.messageIdFactory = new CassandraMessageId.Factory();
         mainStepdefs.jmapServer = new GuiceJamesServer()
-                .combineWith(CassandraJamesServerMain.cassandraServerModule, CassandraJamesServerMain.protocols)
+                .combineWith(CassandraJamesServerMain.CASSANDRA_SERVER_MODULE, CassandraJamesServerMain.PROTOCOLS)
                 .overrideWith(new CassandraJmapServerModule(temporaryFolder, embeddedElasticSearch, cassandraServer.getIp(), cassandraServer.getBindingPort()))
                 .overrideWith((binder) -> binder.bind(PersistenceAdapter.class).to(MemoryPersistenceAdapter.class));
         mainStepdefs.awaitMethod = () -> embeddedElasticSearch.awaitForElasticSearch();

http://git-wip-us.apache.org/repos/asf/james-project/blob/992a4d07/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryStepdefs.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryStepdefs.java b/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryStepdefs.java
index 138b1ed..f4ad385 100644
--- a/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryStepdefs.java
+++ b/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryStepdefs.java
@@ -52,7 +52,7 @@ public class MemoryStepdefs {
         temporaryFolder.create();
         mainStepdefs.messageIdFactory = new InMemoryMessageId.Factory();
         mainStepdefs.jmapServer = new GuiceJamesServer()
-                .combineWith(MemoryJamesServerMain.inMemoryServerAggregateModule)
+                .combineWith(MemoryJamesServerMain.IN_MEMORY_SERVER_AGGREGATE_MODULE)
                 .overrideWith(new MemoryJmapServerModule(temporaryFolder),
                 		(binder) -> binder.bind(MessageId.Factory.class).toInstance(mainStepdefs.messageIdFactory))
                 .overrideWith((binder) -> binder.bind(PersistenceAdapter.class).to(MemoryPersistenceAdapter.class));


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


[15/19] james-project git commit: JAMES-2242 Improve Guice memory module composition

Posted by ad...@apache.org.
JAMES-2242 Improve Guice memory module composition

Inclusions should not be done by default to give more options for composition


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

Branch: refs/heads/master
Commit: 2a5f46b2d7e54bba3ef6ceb301d171dc4aa2c5b2
Parents: 70ec6ca
Author: benwa <bt...@linagora.com>
Authored: Thu Nov 30 16:27:58 2017 +0700
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Mon Dec 4 14:42:21 2017 +0100

----------------------------------------------------------------------
 .../org/apache/james/MemoryJamesServerMain.java | 47 ++++++++++++--------
 .../org/apache/james/MemoryJmapTestRule.java    |  2 +-
 .../james/mailets/TemporaryJamesServer.java     |  2 +-
 3 files changed, 30 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/2a5f46b2/server/container/guice/memory-guice/src/main/java/org/apache/james/MemoryJamesServerMain.java
----------------------------------------------------------------------
diff --git a/server/container/guice/memory-guice/src/main/java/org/apache/james/MemoryJamesServerMain.java b/server/container/guice/memory-guice/src/main/java/org/apache/james/MemoryJamesServerMain.java
index 2cb650d..98fe669 100644
--- a/server/container/guice/memory-guice/src/main/java/org/apache/james/MemoryJamesServerMain.java
+++ b/server/container/guice/memory-guice/src/main/java/org/apache/james/MemoryJamesServerMain.java
@@ -19,6 +19,7 @@
 
 package org.apache.james;
 
+import org.apache.james.jmap.send.PostDequeueDecoratorFactory;
 import org.apache.james.modules.MailboxModule;
 import org.apache.james.modules.data.MemoryDataJmapModule;
 import org.apache.james.modules.data.MemoryDataModule;
@@ -36,6 +37,7 @@ import org.apache.james.modules.server.MailboxRoutesModule;
 import org.apache.james.modules.server.MemoryMailQueueModule;
 import org.apache.james.modules.server.SwaggerRoutesModule;
 import org.apache.james.modules.server.WebAdminServerModule;
+import org.apache.james.queue.api.MailQueueItemDecoratorFactory;
 
 import com.google.inject.Module;
 import com.google.inject.util.Modules;
@@ -43,32 +45,39 @@ import com.google.inject.util.Modules;
 public class MemoryJamesServerMain {
 
     public static final Module webadmin = Modules.combine(
-            new WebAdminServerModule(),
-            new DataRoutesModules(),
-            new MailboxRoutesModule(),
-            new SwaggerRoutesModule());
+        new WebAdminServerModule(),
+        new DataRoutesModules(),
+        new MailboxRoutesModule(),
+        new SwaggerRoutesModule());
 
     public static final Module protocols = Modules.combine(
-            new IMAPServerModule(),
-            new JMAPServerModule(),
-            new LMTPServerModule(),
-            new ManageSieveServerModule(),
-            new POP3ServerModule(),
-            new ProtocolHandlerModule(),
-            new SMTPServerModule(),
-            webadmin);
+        new IMAPServerModule(),
+        new LMTPServerModule(),
+        new ManageSieveServerModule(),
+        new POP3ServerModule(),
+        new ProtocolHandlerModule(),
+        new SMTPServerModule());
+
+    public static final Module jmap = Modules.combine(
+        new MemoryDataJmapModule(),
+        new JMAPServerModule(),
+        binder -> binder.bind(MailQueueItemDecoratorFactory.class).to(PostDequeueDecoratorFactory.class));
 
     public static final Module inMemoryServerModule = Modules.combine(
-            new MemoryDataModule(),
-            new MemoryDataJmapModule(),
-            new MemoryMailboxModule(),
-            new MemoryMailQueueModule(),
-            new MailboxModule(),
-            protocols);
+        new MemoryDataModule(),
+        new MemoryMailboxModule(),
+        new MemoryMailQueueModule(),
+        new MailboxModule());
+
+    public static final Module inMemoryServerAggregateModule = Modules.combine(
+        inMemoryServerModule,
+        protocols,
+        jmap,
+        webadmin);
 
     public static void main(String[] args) throws Exception {
         new GuiceJamesServer()
-            .combineWith(inMemoryServerModule, new JMXServerModule())
+            .combineWith(inMemoryServerAggregateModule, new JMXServerModule())
             .start();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/2a5f46b2/server/container/guice/memory-guice/src/test/java/org/apache/james/MemoryJmapTestRule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/memory-guice/src/test/java/org/apache/james/MemoryJmapTestRule.java b/server/container/guice/memory-guice/src/test/java/org/apache/james/MemoryJmapTestRule.java
index 0aadadb..97c1e27 100644
--- a/server/container/guice/memory-guice/src/test/java/org/apache/james/MemoryJmapTestRule.java
+++ b/server/container/guice/memory-guice/src/test/java/org/apache/james/MemoryJmapTestRule.java
@@ -42,7 +42,7 @@ public class MemoryJmapTestRule implements TestRule {
 
     public GuiceJamesServer jmapServer(Module... modules) {
         return new GuiceJamesServer()
-            .combineWith(MemoryJamesServerMain.inMemoryServerModule)
+            .combineWith(MemoryJamesServerMain.inMemoryServerAggregateModule)
             .overrideWith(modules)
             .overrideWith(new TestFilesystemModule(temporaryFolder),
                 new TestJMAPServerModule(LIMIT_TO_3_MESSAGES))

http://git-wip-us.apache.org/repos/asf/james-project/blob/2a5f46b2/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/TemporaryJamesServer.java
----------------------------------------------------------------------
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/TemporaryJamesServer.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/TemporaryJamesServer.java
index 7ed7d5d..3ebaa1e 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/TemporaryJamesServer.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/TemporaryJamesServer.java
@@ -54,7 +54,7 @@ public class TemporaryJamesServer {
         appendMailetConfigurations(temporaryFolder, mailetContainer);
 
         jamesServer = new GuiceJamesServer()
-            .combineWith(MemoryJamesServerMain.inMemoryServerModule)
+            .combineWith(MemoryJamesServerMain.inMemoryServerAggregateModule)
             .overrideWith((binder) -> binder.bind(PersistenceAdapter.class).to(MemoryPersistenceAdapter.class))
             .overrideWith(additionalModules)
             .overrideWith(new TestJMAPServerModule(LIMIT_TO_3_MESSAGES))


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


[16/19] james-project git commit: JAMES-2242 RemoteDelivery should be run on a SMTP only server

Posted by ad...@apache.org.
JAMES-2242 RemoteDelivery should be run on a SMTP only server


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

Branch: refs/heads/master
Commit: 9ad1616766d5eeb9d5e213ae6c6dd125dc194d62
Parents: 2a5f46b
Author: benwa <bt...@linagora.com>
Authored: Thu Nov 30 17:10:23 2017 +0700
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Mon Dec 4 14:42:22 2017 +0100

----------------------------------------------------------------------
 .../java/org/apache/james/GuiceJamesServer.java |  5 ++
 .../org/apache/james/MemoryJamesServerMain.java |  5 +-
 .../modules/server/MemoryMailQueueModule.java   |  2 -
 .../james/mailets/AddDeliveredToHeaderTest.java |  4 +-
 .../james/mailets/BounceIntegrationTest.java    | 14 +--
 .../mailets/CommonMailetConfigurationTest.java  |  6 +-
 .../GatewayRemoteDeliveryIntegrationTest.java   | 91 +++++++++++---------
 .../RecipientRewriteTableIntegrationTest.java   |  4 +-
 .../org/apache/james/mailets/SieveDelivery.java |  6 +-
 .../james/mailets/TemporaryJamesServer.java     | 42 ++++++++-
 .../crypto/SMIMEDecryptIntegrationTest.java     |  5 +-
 .../crypto/SMIMESignIntegrationTest.java        |  5 +-
 .../mailets/AmqpForwardAttachmentTest.java      | 12 +--
 .../transport/mailets/ContactExtractorTest.java |  2 +-
 .../transport/mailets/GroupMappingTest.java     |  4 +-
 .../mailets/ICSAttachmentWorkflowTest.java      |  2 +-
 .../transport/mailets/StripAttachmentTest.java  |  2 +-
 .../jmap/memory/cucumber/MemoryStepdefs.java    |  2 +-
 18 files changed, 131 insertions(+), 82 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/9ad16167/server/container/guice/guice-common/src/main/java/org/apache/james/GuiceJamesServer.java
----------------------------------------------------------------------
diff --git a/server/container/guice/guice-common/src/main/java/org/apache/james/GuiceJamesServer.java b/server/container/guice/guice-common/src/main/java/org/apache/james/GuiceJamesServer.java
index 075f5c4..510a85b 100644
--- a/server/container/guice/guice-common/src/main/java/org/apache/james/GuiceJamesServer.java
+++ b/server/container/guice/guice-common/src/main/java/org/apache/james/GuiceJamesServer.java
@@ -19,6 +19,7 @@
 package org.apache.james;
 
 import java.util.Arrays;
+import java.util.List;
 
 import javax.annotation.PreDestroy;
 
@@ -62,6 +63,10 @@ public class GuiceJamesServer {
         return new GuiceJamesServer(Modules.override(module).with(overrides));
     }
 
+    public GuiceJamesServer overrideWith(List<Module> overrides) {
+        return new GuiceJamesServer(Modules.override(module).with(overrides));
+    }
+
     public void start() throws Exception {
         Injector injector = Guice.createInjector(module);
         preDestroy = injector.getInstance(Key.get(new TypeLiteral<Stager<PreDestroy>>() {}));

http://git-wip-us.apache.org/repos/asf/james-project/blob/9ad16167/server/container/guice/memory-guice/src/main/java/org/apache/james/MemoryJamesServerMain.java
----------------------------------------------------------------------
diff --git a/server/container/guice/memory-guice/src/main/java/org/apache/james/MemoryJamesServerMain.java b/server/container/guice/memory-guice/src/main/java/org/apache/james/MemoryJamesServerMain.java
index 98fe669..38ab031 100644
--- a/server/container/guice/memory-guice/src/main/java/org/apache/james/MemoryJamesServerMain.java
+++ b/server/container/guice/memory-guice/src/main/java/org/apache/james/MemoryJamesServerMain.java
@@ -19,7 +19,6 @@
 
 package org.apache.james;
 
-import org.apache.james.jmap.send.PostDequeueDecoratorFactory;
 import org.apache.james.modules.MailboxModule;
 import org.apache.james.modules.data.MemoryDataJmapModule;
 import org.apache.james.modules.data.MemoryDataModule;
@@ -37,7 +36,6 @@ import org.apache.james.modules.server.MailboxRoutesModule;
 import org.apache.james.modules.server.MemoryMailQueueModule;
 import org.apache.james.modules.server.SwaggerRoutesModule;
 import org.apache.james.modules.server.WebAdminServerModule;
-import org.apache.james.queue.api.MailQueueItemDecoratorFactory;
 
 import com.google.inject.Module;
 import com.google.inject.util.Modules;
@@ -60,8 +58,7 @@ public class MemoryJamesServerMain {
 
     public static final Module jmap = Modules.combine(
         new MemoryDataJmapModule(),
-        new JMAPServerModule(),
-        binder -> binder.bind(MailQueueItemDecoratorFactory.class).to(PostDequeueDecoratorFactory.class));
+        new JMAPServerModule());
 
     public static final Module inMemoryServerModule = Modules.combine(
         new MemoryDataModule(),

http://git-wip-us.apache.org/repos/asf/james-project/blob/9ad16167/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/server/MemoryMailQueueModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/server/MemoryMailQueueModule.java b/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/server/MemoryMailQueueModule.java
index 0e2964e..fe41a1c 100644
--- a/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/server/MemoryMailQueueModule.java
+++ b/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/server/MemoryMailQueueModule.java
@@ -19,7 +19,6 @@
 
 package org.apache.james.modules.server;
 
-import org.apache.james.jmap.send.PostDequeueDecoratorFactory;
 import org.apache.james.queue.api.MailQueueFactory;
 
 import com.google.inject.AbstractModule;
@@ -30,7 +29,6 @@ public class MemoryMailQueueModule extends AbstractModule {
     @Override
     protected void configure() {
         bind(MemoryMailQueueFactory.class).in(Scopes.SINGLETON);
-        bind(PostDequeueDecoratorFactory.class).in(Scopes.SINGLETON);
 
         bind(MailQueueFactory.class).to(MemoryMailQueueFactory.class);
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/9ad16167/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/AddDeliveredToHeaderTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/AddDeliveredToHeaderTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/AddDeliveredToHeaderTest.java
index 1e18728..ef1bc5d 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/AddDeliveredToHeaderTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/AddDeliveredToHeaderTest.java
@@ -22,12 +22,12 @@ package org.apache.james.mailets;
 import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailets.configuration.CommonProcessors;
 import org.apache.james.mailets.configuration.MailetContainer;
-import org.apache.james.utils.SMTPMessageSender;
 import org.apache.james.modules.MailboxProbeImpl;
 import org.apache.james.probe.DataProbe;
 import org.apache.james.transport.mailets.AddDeliveredToHeader;
 import org.apache.james.utils.DataProbeImpl;
 import org.apache.james.utils.IMAPMessageReader;
+import org.apache.james.utils.SMTPMessageSender;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
@@ -67,7 +67,7 @@ public class AddDeliveredToHeaderTest {
             .addProcessor(CommonProcessors.sieveManagerCheck())
             .build();
 
-        jamesServer = new TemporaryJamesServer(temporaryFolder, mailetContainer);
+        jamesServer = TemporaryJamesServer.builder().build(temporaryFolder, mailetContainer);
         Duration slowPacedPollInterval = Duration.FIVE_HUNDRED_MILLISECONDS;
         calmlyAwait = Awaitility.with()
             .pollInterval(slowPacedPollInterval)

http://git-wip-us.apache.org/repos/asf/james-project/blob/9ad16167/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/BounceIntegrationTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/BounceIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/BounceIntegrationTest.java
index c7216df..f8daddb 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/BounceIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/BounceIntegrationTest.java
@@ -89,7 +89,7 @@ public class BounceIntegrationTest {
 
     @Test
     public void dsnBounceMailetShouldDeliverBounce() throws Exception {
-        jamesServer = new TemporaryJamesServer(temporaryFolder,
+        jamesServer = TemporaryJamesServer.builder().build(temporaryFolder,
             generateMailetContainerConfiguration(MailetConfiguration.builder()
                 .matcher(All.class)
                 .mailet(DSNBounce.class)
@@ -111,7 +111,7 @@ public class BounceIntegrationTest {
 
     @Test
     public void bounceMailetShouldDeliverBounce() throws Exception {
-        jamesServer = new TemporaryJamesServer(temporaryFolder,
+        jamesServer = TemporaryJamesServer.builder().build(temporaryFolder,
             generateMailetContainerConfiguration(MailetConfiguration.builder()
                 .matcher(All.class)
                 .mailet(Bounce.class)
@@ -133,7 +133,7 @@ public class BounceIntegrationTest {
 
     @Test
     public void forwardMailetShouldDeliverBounce() throws Exception {
-        jamesServer = new TemporaryJamesServer(temporaryFolder,
+        jamesServer = TemporaryJamesServer.builder().build(temporaryFolder,
             generateMailetContainerConfiguration(MailetConfiguration.builder()
                 .matcher(All.class)
                 .mailet(Forward.class)
@@ -156,7 +156,7 @@ public class BounceIntegrationTest {
 
     @Test
     public void redirectMailetShouldDeliverBounce() throws Exception {
-        jamesServer = new TemporaryJamesServer(temporaryFolder,
+        jamesServer = TemporaryJamesServer.builder().build(temporaryFolder,
             generateMailetContainerConfiguration(MailetConfiguration.builder()
                 .matcher(All.class)
                 .mailet(Redirect.class)
@@ -179,7 +179,7 @@ public class BounceIntegrationTest {
 
     @Test
     public void resendMailetShouldDeliverBounce() throws Exception {
-        jamesServer = new TemporaryJamesServer(temporaryFolder,
+        jamesServer = TemporaryJamesServer.builder().build(temporaryFolder,
             generateMailetContainerConfiguration(MailetConfiguration.builder()
                 .matcher(All.class)
                 .mailet(Resend.class)
@@ -202,7 +202,7 @@ public class BounceIntegrationTest {
 
     @Test
     public void notifySenderMailetShouldDeliverBounce() throws Exception {
-        jamesServer = new TemporaryJamesServer(temporaryFolder,
+        jamesServer = TemporaryJamesServer.builder().build(temporaryFolder,
             generateMailetContainerConfiguration(MailetConfiguration.builder()
                 .matcher(All.class)
                 .mailet(NotifySender.class)
@@ -224,7 +224,7 @@ public class BounceIntegrationTest {
 
     @Test
     public void notifyPostmasterMailetShouldDeliverBounce() throws Exception {
-        jamesServer = new TemporaryJamesServer(temporaryFolder,
+        jamesServer = TemporaryJamesServer.builder().build(temporaryFolder,
             generateMailetContainerConfiguration(MailetConfiguration.builder()
                 .matcher(All.class)
                 .mailet(NotifyPostmaster.class)

http://git-wip-us.apache.org/repos/asf/james-project/blob/9ad16167/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/CommonMailetConfigurationTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/CommonMailetConfigurationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/CommonMailetConfigurationTest.java
index c4fc960..67ea84b 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/CommonMailetConfigurationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/CommonMailetConfigurationTest.java
@@ -22,11 +22,11 @@ package org.apache.james.mailets;
 import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailets.configuration.CommonProcessors;
 import org.apache.james.mailets.configuration.MailetContainer;
-import org.apache.james.utils.SMTPMessageSender;
 import org.apache.james.modules.MailboxProbeImpl;
 import org.apache.james.probe.DataProbe;
-import org.apache.james.utils.IMAPMessageReader;
 import org.apache.james.utils.DataProbeImpl;
+import org.apache.james.utils.IMAPMessageReader;
+import org.apache.james.utils.SMTPMessageSender;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
@@ -66,7 +66,7 @@ public class CommonMailetConfigurationTest {
             .addProcessor(CommonProcessors.sieveManagerCheck())
             .build();
 
-        jamesServer = new TemporaryJamesServer(temporaryFolder, mailetContainer);
+        jamesServer = TemporaryJamesServer.builder().build(temporaryFolder, mailetContainer);
         Duration slowPacedPollInterval = Duration.FIVE_HUNDRED_MILLISECONDS;
         calmlyAwait = Awaitility.with().pollInterval(slowPacedPollInterval).and().with().pollDelay(slowPacedPollInterval).await();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/9ad16167/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java
index e325ef2..7d4b6d1 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java
@@ -28,14 +28,20 @@ import static org.hamcrest.Matchers.hasSize;
 import java.net.InetAddress;
 import java.util.concurrent.TimeUnit;
 
+import org.apache.commons.configuration.DefaultConfigurationBuilder;
+import org.apache.james.MemoryJamesServerMain;
 import org.apache.james.dnsservice.api.DNSService;
 import org.apache.james.dnsservice.api.InMemoryDNSService;
-import org.apache.james.jmap.mailet.VacationMailet;
 import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailets.configuration.CommonProcessors;
 import org.apache.james.mailets.configuration.MailetConfiguration;
 import org.apache.james.mailets.configuration.MailetContainer;
 import org.apache.james.mailets.configuration.ProcessorConfiguration;
+import org.apache.james.modules.protocols.IMAPServerModule;
+import org.apache.james.modules.protocols.ProtocolHandlerModule;
+import org.apache.james.modules.protocols.SMTPServerModule;
+import org.apache.james.modules.server.CamelMailetContainerModule;
+import org.apache.james.modules.server.RawPostDequeueDecoratorModule;
 import org.apache.james.probe.DataProbe;
 import org.apache.james.transport.mailets.LocalDelivery;
 import org.apache.james.transport.mailets.Null;
@@ -59,6 +65,8 @@ import org.junit.rules.TemporaryFolder;
 import org.testcontainers.containers.wait.HostPortWaitStrategy;
 
 import com.google.common.base.Charsets;
+import com.google.inject.Module;
+import com.google.inject.util.Modules;
 import com.jayway.awaitility.Awaitility;
 import com.jayway.awaitility.Duration;
 import com.jayway.awaitility.core.ConditionFactory;
@@ -77,6 +85,16 @@ public class GatewayRemoteDeliveryIntegrationTest {
 
     private static final String FROM = "from@" + JAMES_APACHE_ORG;
     private static final String RECIPIENT = "touser@" + JAMES_ANOTHER_DOMAIN;
+    private static final Module SMTP_ONLY_MODULE = Modules.combine(
+        MemoryJamesServerMain.inMemoryServerModule,
+        new ProtocolHandlerModule(),
+        new SMTPServerModule(),
+        new RawPostDequeueDecoratorModule(),
+        binder -> binder.bind(CamelMailetContainerModule.DefaultProcessorsConfigurationSupplier.class)
+            .toInstance(DefaultConfigurationBuilder::new));
+    private static final Module SMTP_AND_IMAP_MODULE = Modules.combine(
+        SMTP_ONLY_MODULE,
+        new IMAPServerModule());
 
     @Rule
     public TemporaryFolder temporaryFolder = new TemporaryFolder();
@@ -94,7 +112,6 @@ public class GatewayRemoteDeliveryIntegrationTest {
     private ConditionFactory calmlyAwait;
     private DataProbe dataProbe;
 
-
     @Before
     public void setup() throws Exception {
         Duration slowPacedPollInterval = Duration.FIVE_HUNDRED_MILLISECONDS;
@@ -125,8 +142,9 @@ public class GatewayRemoteDeliveryIntegrationTest {
     public void outgoingMailShouldTransitThroughGatewayWhenNoPort() throws Exception {
         String gatewayProperty = fakeSmtp.getContainerIp();
 
-        jamesServer = new TemporaryJamesServer(temporaryFolder,
-            generateMailetContainerConfiguration(gatewayProperty));
+        jamesServer = TemporaryJamesServer.builder()
+            .withBase(SMTP_ONLY_MODULE)
+            .build(temporaryFolder, generateMailetContainerConfiguration(gatewayProperty));
         dataProbe = jamesServer.getProbe(DataProbeImpl.class);
 
         dataProbe.addDomain(JAMES_APACHE_ORG);
@@ -143,8 +161,9 @@ public class GatewayRemoteDeliveryIntegrationTest {
     public void outgoingMailShouldTransitThroughGatewayWhenPort() throws Exception {
         String gatewayProperty = fakeSmtp.getContainerIp() + ":25";
 
-        jamesServer = new TemporaryJamesServer(temporaryFolder,
-            generateMailetContainerConfiguration(gatewayProperty));
+        jamesServer = TemporaryJamesServer.builder()
+            .withBase(SMTP_ONLY_MODULE)
+            .build(temporaryFolder, generateMailetContainerConfiguration(gatewayProperty));
         dataProbe = jamesServer.getProbe(DataProbeImpl.class);
 
         dataProbe.addDomain(JAMES_APACHE_ORG);
@@ -161,8 +180,9 @@ public class GatewayRemoteDeliveryIntegrationTest {
     public void outgoingMailShouldTransitThroughGatewayWhenSeveralIps() throws Exception {
         String gatewayProperty = fakeSmtp.getContainerIp() + ",invalid.domain";
 
-        jamesServer = new TemporaryJamesServer(temporaryFolder,
-            generateMailetContainerConfiguration(gatewayProperty));
+        jamesServer = TemporaryJamesServer.builder()
+            .withBase(SMTP_ONLY_MODULE)
+            .build(temporaryFolder, generateMailetContainerConfiguration(gatewayProperty));
         dataProbe = jamesServer.getProbe(DataProbeImpl.class);
 
         dataProbe.addDomain(JAMES_APACHE_ORG);
@@ -179,8 +199,9 @@ public class GatewayRemoteDeliveryIntegrationTest {
     public void outgoingMailShouldFallbackToSecondGatewayWhenFirstInvalid() throws Exception {
         String gatewayProperty = "invalid.domain," + fakeSmtp.getContainerIp();
 
-        jamesServer = new TemporaryJamesServer(temporaryFolder,
-            generateMailetContainerConfiguration(gatewayProperty));
+        jamesServer = TemporaryJamesServer.builder()
+            .withBase(SMTP_ONLY_MODULE)
+            .build(temporaryFolder, generateMailetContainerConfiguration(gatewayProperty));
         dataProbe = jamesServer.getProbe(DataProbeImpl.class);
 
         dataProbe.addDomain(JAMES_APACHE_ORG);
@@ -200,9 +221,10 @@ public class GatewayRemoteDeliveryIntegrationTest {
         InetAddress containerIp = InetAddress.getByName(fakeSmtp.getContainerIp());
         inMemoryDNSService.registerRecord(JAMES_ANOTHER_DOMAIN, containerIp, JAMES_ANOTHER_DOMAIN);
 
-        jamesServer = new TemporaryJamesServer(temporaryFolder,
-            generateMailetContainerConfiguration(gatewayProperty),
-            binder -> binder.bind(DNSService.class).toInstance(inMemoryDNSService));
+        jamesServer = TemporaryJamesServer.builder()
+            .withBase(SMTP_ONLY_MODULE)
+            .withOverrides(binder -> binder.bind(DNSService.class).toInstance(inMemoryDNSService))
+            .build(temporaryFolder, generateMailetContainerConfiguration(gatewayProperty));
         dataProbe = jamesServer.getProbe(DataProbeImpl.class);
 
         dataProbe.addDomain(JAMES_APACHE_ORG);
@@ -226,16 +248,17 @@ public class GatewayRemoteDeliveryIntegrationTest {
         InetAddress containerIp = InetAddress.getByName(fakeSmtp.getContainerIp());
         inMemoryDNSService.registerRecord(JAMES_ANOTHER_DOMAIN, containerIp, JAMES_ANOTHER_DOMAIN);
 
-        jamesServer = new TemporaryJamesServer(temporaryFolder,
-            MailetContainer.builder()
+        jamesServer = TemporaryJamesServer.builder()
+            .withBase(SMTP_AND_IMAP_MODULE)
+            .withOverrides(binder -> binder.bind(DNSService.class).toInstance(inMemoryDNSService))
+            .build(temporaryFolder, MailetContainer.builder()
                 .postmaster("postmaster@" + JAMES_APACHE_ORG)
                 .threads(5)
                 .addProcessor(root())
                 .addProcessor(CommonProcessors.error())
                 .addProcessor(relayAndLocalDeliveryTransport(gatewayProperty))
                 .addProcessor(CommonProcessors.bounces())
-                .build(),
-            binder -> binder.bind(DNSService.class).toInstance(inMemoryDNSService));
+                .build());
         dataProbe = jamesServer.getProbe(DataProbeImpl.class);
 
         dataProbe.addDomain(JAMES_APACHE_ORG);
@@ -257,8 +280,10 @@ public class GatewayRemoteDeliveryIntegrationTest {
         InetAddress containerIp = InetAddress.getByName(fakeSmtp.getContainerIp());
         inMemoryDNSService.registerRecord(JAMES_ANOTHER_DOMAIN, containerIp, JAMES_ANOTHER_DOMAIN);
 
-        jamesServer = new TemporaryJamesServer(temporaryFolder,
-            MailetContainer.builder()
+        jamesServer = TemporaryJamesServer.builder()
+            .withBase(SMTP_AND_IMAP_MODULE)
+            .withOverrides(binder -> binder.bind(DNSService.class).toInstance(inMemoryDNSService))
+            .build(temporaryFolder, MailetContainer.builder()
                 .postmaster("postmaster@" + JAMES_APACHE_ORG)
                 .threads(5)
                 .addProcessor(root())
@@ -273,10 +298,6 @@ public class GatewayRemoteDeliveryIntegrationTest {
                         .build())
                     .addMailet(MailetConfiguration.builder()
                         .matcher(RecipientIsLocal.class)
-                        .mailet(VacationMailet.class)
-                        .build())
-                    .addMailet(MailetConfiguration.builder()
-                        .matcher(RecipientIsLocal.class)
                         .mailet(LocalDelivery.class)
                         .build())
                     .addMailet(MailetConfiguration.builder()
@@ -292,8 +313,7 @@ public class GatewayRemoteDeliveryIntegrationTest {
                         .build())
                     .build())
                 .addProcessor(CommonProcessors.bounces())
-                .build(),
-            binder -> binder.bind(DNSService.class).toInstance(inMemoryDNSService));
+                .build());
         dataProbe = jamesServer.getProbe(DataProbeImpl.class);
 
         dataProbe.addDomain(JAMES_APACHE_ORG);
@@ -314,16 +334,17 @@ public class GatewayRemoteDeliveryIntegrationTest {
         InetAddress containerIp = InetAddress.getByName(fakeSmtp.getContainerIp());
         inMemoryDNSService.registerRecord(JAMES_ANOTHER_DOMAIN, containerIp, JAMES_ANOTHER_DOMAIN);
 
-        jamesServer = new TemporaryJamesServer(temporaryFolder,
-            MailetContainer.builder()
+        jamesServer = TemporaryJamesServer.builder()
+            .withBase(SMTP_ONLY_MODULE)
+            .withOverrides(binder -> binder.bind(DNSService.class).toInstance(inMemoryDNSService))
+            .build(temporaryFolder, MailetContainer.builder()
                 .postmaster("postmaster@" + JAMES_APACHE_ORG)
                 .threads(5)
                 .addProcessor(root())
                 .addProcessor(CommonProcessors.error())
                 .addProcessor(directResolutionTransport())
                 .addProcessor(CommonProcessors.bounces())
-                .build(),
-            binder -> binder.bind(DNSService.class).toInstance(inMemoryDNSService));
+                .build());
         dataProbe = jamesServer.getProbe(DataProbeImpl.class);
 
         dataProbe.addDomain(JAMES_APACHE_ORG);
@@ -394,10 +415,6 @@ public class GatewayRemoteDeliveryIntegrationTest {
                 .addProperty("name", "bcc")
                 .build())
             .addMailet(MailetConfiguration.builder()
-                .matcher(RecipientIsLocal.class)
-                .mailet(VacationMailet.class)
-                .build())
-            .addMailet(MailetConfiguration.builder()
                 .matcher(All.class)
                 .mailet(RemoteDelivery.class)
                 .addProperty("outgoingQueue", "outgoing")
@@ -423,10 +440,6 @@ public class GatewayRemoteDeliveryIntegrationTest {
                 .build())
             .addMailet(MailetConfiguration.builder()
                 .matcher(RecipientIsLocal.class)
-                .mailet(VacationMailet.class)
-                .build())
-            .addMailet(MailetConfiguration.builder()
-                .matcher(RecipientIsLocal.class)
                 .mailet(LocalDelivery.class)
                 .build())
             .addMailet(MailetConfiguration.builder()
@@ -454,10 +467,6 @@ public class GatewayRemoteDeliveryIntegrationTest {
                 .addProperty("name", "bcc")
                 .build())
             .addMailet(MailetConfiguration.builder()
-                .matcher(RecipientIsLocal.class)
-                .mailet(VacationMailet.class)
-                .build())
-            .addMailet(MailetConfiguration.builder()
                 .matcher(All.class)
                 .mailet(RemoteDelivery.class)
                 .addProperty("outgoingQueue", "outgoing")

http://git-wip-us.apache.org/repos/asf/james-project/blob/9ad16167/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RecipientRewriteTableIntegrationTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RecipientRewriteTableIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RecipientRewriteTableIntegrationTest.java
index 931fdfe..3b6a061 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RecipientRewriteTableIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RecipientRewriteTableIntegrationTest.java
@@ -22,11 +22,11 @@ package org.apache.james.mailets;
 import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailets.configuration.CommonProcessors;
 import org.apache.james.mailets.configuration.MailetContainer;
-import org.apache.james.utils.SMTPMessageSender;
 import org.apache.james.modules.MailboxProbeImpl;
 import org.apache.james.probe.DataProbe;
 import org.apache.james.utils.DataProbeImpl;
 import org.apache.james.utils.IMAPMessageReader;
+import org.apache.james.utils.SMTPMessageSender;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
@@ -77,7 +77,7 @@ public class RecipientRewriteTableIntegrationTest {
             .addProcessor(CommonProcessors.sieveManagerCheck())
             .build();
 
-        jamesServer = new TemporaryJamesServer(temporaryFolder, mailetContainer);
+        jamesServer = TemporaryJamesServer.builder().build(temporaryFolder, mailetContainer);
         Duration slowPacedPollInterval = Duration.FIVE_HUNDRED_MILLISECONDS;
         calmlyAwait = Awaitility.with().pollInterval(slowPacedPollInterval).and().with().pollDelay(slowPacedPollInterval).await();
         dataProbe = jamesServer.getProbe(DataProbeImpl.class);

http://git-wip-us.apache.org/repos/asf/james-project/blob/9ad16167/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SieveDelivery.java
----------------------------------------------------------------------
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SieveDelivery.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SieveDelivery.java
index b80f3a9..11aa9e6 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SieveDelivery.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SieveDelivery.java
@@ -23,12 +23,12 @@ import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.store.probe.MailboxProbe;
 import org.apache.james.mailets.configuration.CommonProcessors;
 import org.apache.james.mailets.configuration.MailetContainer;
-import org.apache.james.utils.SMTPMessageSender;
 import org.apache.james.modules.MailboxProbeImpl;
 import org.apache.james.modules.protocols.SieveProbeImpl;
 import org.apache.james.probe.DataProbe;
-import org.apache.james.utils.IMAPMessageReader;
 import org.apache.james.utils.DataProbeImpl;
+import org.apache.james.utils.IMAPMessageReader;
+import org.apache.james.utils.SMTPMessageSender;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
@@ -68,7 +68,7 @@ public class SieveDelivery {
             .addProcessor(CommonProcessors.sieveManagerCheck())
             .build();
 
-        jamesServer = new TemporaryJamesServer(temporaryFolder, mailetContainer);
+        jamesServer = TemporaryJamesServer.builder().build(temporaryFolder, mailetContainer);
         Duration slowPacedPollInterval = Duration.FIVE_HUNDRED_MILLISECONDS;
         calmlyAwait = Awaitility.with().pollInterval(slowPacedPollInterval).and().with().pollDelay(slowPacedPollInterval).await();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/9ad16167/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/TemporaryJamesServer.java
----------------------------------------------------------------------
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/TemporaryJamesServer.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/TemporaryJamesServer.java
index 3ebaa1e..6fc4496 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/TemporaryJamesServer.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/TemporaryJamesServer.java
@@ -25,6 +25,9 @@ import java.io.IOException;
 import java.io.OutputStream;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Paths;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Optional;
 
 import org.apache.activemq.store.PersistenceAdapter;
 import org.apache.activemq.store.memory.MemoryPersistenceAdapter;
@@ -39,22 +42,55 @@ import org.apache.james.webadmin.WebAdminConfiguration;
 import org.apache.james.webadmin.WebAdminUtils;
 import org.junit.rules.TemporaryFolder;
 
+import com.google.common.collect.ImmutableList;
 import com.google.inject.Module;
 
 public class TemporaryJamesServer {
 
+    public static class Builder {
+        private ImmutableList.Builder<Module> overrideModules;
+        private Optional<Module> module;
+
+        private Builder() {
+            overrideModules = ImmutableList.builder();
+            module = Optional.empty();
+        }
+
+        public Builder withBase(Module module) {
+            this.module = Optional.of(module);
+            return this;
+        }
+
+        public Builder withOverrides(Module... modules) {
+            this.overrideModules.addAll(Arrays.asList(modules));
+            return this;
+        }
+
+        public TemporaryJamesServer build(TemporaryFolder temporaryFolder, MailetContainer mailetContainer) throws Exception {
+            return new TemporaryJamesServer(
+                temporaryFolder,
+                mailetContainer,
+                module.orElse(MemoryJamesServerMain.inMemoryServerAggregateModule),
+                overrideModules.build());
+        }
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
     private static final String MAILETCONTAINER_CONFIGURATION_FILENAME = "mailetcontainer.xml";
 
     private static final int LIMIT_TO_3_MESSAGES = 3;
 
     private final GuiceJamesServer jamesServer;
 
-
-    public TemporaryJamesServer(TemporaryFolder temporaryFolder, MailetContainer mailetContainer, Module... additionalModules) throws Exception {
+    private TemporaryJamesServer(TemporaryFolder temporaryFolder, MailetContainer mailetContainer,
+                                 Module serverBaseModule, List<Module> additionalModules) throws Exception {
         appendMailetConfigurations(temporaryFolder, mailetContainer);
 
         jamesServer = new GuiceJamesServer()
-            .combineWith(MemoryJamesServerMain.inMemoryServerAggregateModule)
+            .combineWith(serverBaseModule)
             .overrideWith((binder) -> binder.bind(PersistenceAdapter.class).to(MemoryPersistenceAdapter.class))
             .overrideWith(additionalModules)
             .overrideWith(new TestJMAPServerModule(LIMIT_TO_3_MESSAGES))

http://git-wip-us.apache.org/repos/asf/james-project/blob/9ad16167/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMEDecryptIntegrationTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMEDecryptIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMEDecryptIntegrationTest.java
index 3d09a73..d8084dc 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMEDecryptIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMEDecryptIntegrationTest.java
@@ -104,8 +104,9 @@ public class SMIMEDecryptIntegrationTest {
                 .build())
             .build();
 
-        jamesServer = new TemporaryJamesServer(temporaryFolder, mailetContainer,
-                binder -> binder.bind(ZonedDateTimeProvider.class).toInstance(() -> DATE_2015));
+        jamesServer = TemporaryJamesServer.builder()
+            .withOverrides(binder -> binder.bind(ZonedDateTimeProvider.class).toInstance(() -> DATE_2015))
+            .build(temporaryFolder, mailetContainer);
         Duration slowPacedPollInterval = Duration.FIVE_HUNDRED_MILLISECONDS;
         calmlyAwait = Awaitility.with().pollInterval(slowPacedPollInterval).and().with().pollDelay(slowPacedPollInterval).await();
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/9ad16167/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMESignIntegrationTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMESignIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMESignIntegrationTest.java
index bee6474..1561c54 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMESignIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMESignIntegrationTest.java
@@ -148,8 +148,9 @@ public class SMIMESignIntegrationTest {
             .addProcessor(CommonProcessors.sieveManagerCheck())
             .build();
 
-        jamesServer = new TemporaryJamesServer(temporaryFolder, mailetContainer,
-                binder -> binder.bind(ZonedDateTimeProvider.class).toInstance(() -> DATE_2015));
+        jamesServer = TemporaryJamesServer.builder()
+            .withOverrides(binder -> binder.bind(ZonedDateTimeProvider.class).toInstance(() -> DATE_2015))
+            .build(temporaryFolder, mailetContainer);
         Duration slowPacedPollInterval = Duration.FIVE_HUNDRED_MILLISECONDS;
         calmlyAwait = Awaitility.with().pollInterval(slowPacedPollInterval).and().with().pollDelay(slowPacedPollInterval).await();
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/9ad16167/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 fd13da2..04471a0 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
@@ -23,6 +23,7 @@ import static org.assertj.core.api.Assertions.assertThat;
 
 import javax.mail.internet.MimeMessage;
 
+import org.apache.james.core.MailAddress;
 import org.apache.james.jmap.mailet.VacationMailet;
 import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailets.TemporaryJamesServer;
@@ -30,17 +31,16 @@ import org.apache.james.mailets.configuration.CommonProcessors;
 import org.apache.james.mailets.configuration.MailetConfiguration;
 import org.apache.james.mailets.configuration.MailetContainer;
 import org.apache.james.mailets.configuration.ProcessorConfiguration;
-import org.apache.james.transport.matchers.All;
-import org.apache.james.transport.matchers.RecipientIsLocal;
-import org.apache.james.utils.SMTPMessageSender;
 import org.apache.james.modules.MailboxProbeImpl;
 import org.apache.james.probe.DataProbe;
 import org.apache.james.transport.mailets.amqp.AmqpRule;
+import org.apache.james.transport.matchers.All;
+import org.apache.james.transport.matchers.RecipientIsLocal;
 import org.apache.james.util.streams.SwarmGenericContainer;
-import org.apache.james.utils.IMAPMessageReader;
 import org.apache.james.utils.DataProbeImpl;
+import org.apache.james.utils.IMAPMessageReader;
+import org.apache.james.utils.SMTPMessageSender;
 import org.apache.mailet.Mail;
-import org.apache.james.core.MailAddress;
 import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.After;
@@ -130,7 +130,7 @@ public class AmqpForwardAttachmentTest {
                     .build())
             .build();
 
-        jamesServer = new TemporaryJamesServer(temporaryFolder, mailetContainer);
+        jamesServer = TemporaryJamesServer.builder().build(temporaryFolder, mailetContainer);
         Duration slowPacedPollInterval = Duration.FIVE_HUNDRED_MILLISECONDS;
         calmlyAwait = Awaitility.with()
             .pollInterval(slowPacedPollInterval)

http://git-wip-us.apache.org/repos/asf/james-project/blob/9ad16167/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 16eeb89..16ef6a8 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
@@ -114,7 +114,7 @@ public class ContactExtractorTest {
                         .build())
                     .build())
             .build();
-        jamesServer = new TemporaryJamesServer(folder, mailets);
+        jamesServer = TemporaryJamesServer.builder().build(folder, mailets);
         DataProbeImpl probe = jamesServer.getProbe(DataProbeImpl.class);
         probe.addDomain(JAMES_ORG);
         probe.addUser(SENDER, PASSWORD);

http://git-wip-us.apache.org/repos/asf/james-project/blob/9ad16167/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 0e5e18f..0222ce0 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
@@ -166,7 +166,9 @@ public class GroupMappingTest {
                 .build())
             .build();
 
-        jamesServer = new TemporaryJamesServer(temporaryFolder, mailetContainer, (binder) -> binder.bind(DNSService.class).toInstance(inMemoryDNSService));
+        jamesServer = TemporaryJamesServer.builder()
+            .withOverrides(binder -> binder.bind(DNSService.class).toInstance(inMemoryDNSService))
+            .build(temporaryFolder, mailetContainer);
 
         Duration slowPacedPollInterval = Duration.FIVE_HUNDRED_MILLISECONDS;
         calmlyAwait = Awaitility.with().pollInterval(slowPacedPollInterval).and().with().pollDelay(slowPacedPollInterval).await();

http://git-wip-us.apache.org/repos/asf/james-project/blob/9ad16167/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 3a9f664..e44853e 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
@@ -517,7 +517,7 @@ public class ICSAttachmentWorkflowTest {
                     .build())
             .build();
 
-        jamesServer = new TemporaryJamesServer(temporaryFolder, mailetContainer);
+        jamesServer = TemporaryJamesServer.builder().build(temporaryFolder, mailetContainer);
         Duration slowPacedPollInterval = Duration.FIVE_HUNDRED_MILLISECONDS;
         calmlyAwait = Awaitility.with().pollInterval(slowPacedPollInterval).and().with().pollDelay(slowPacedPollInterval).await();
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/9ad16167/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 132b661..f32fb0c 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
@@ -111,7 +111,7 @@ public class StripAttachmentTest {
                     .build())
             .build();
 
-        jamesServer = new TemporaryJamesServer(temporaryFolder, mailetContainer);
+        jamesServer = TemporaryJamesServer.builder().build(temporaryFolder, mailetContainer);
         Duration slowPacedPollInterval = Duration.FIVE_HUNDRED_MILLISECONDS;
         calmlyAwait = Awaitility.with().pollInterval(slowPacedPollInterval).and().with().pollDelay(slowPacedPollInterval).await();
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/9ad16167/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryStepdefs.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryStepdefs.java b/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryStepdefs.java
index 89d4b87..138b1ed 100644
--- a/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryStepdefs.java
+++ b/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryStepdefs.java
@@ -52,7 +52,7 @@ public class MemoryStepdefs {
         temporaryFolder.create();
         mainStepdefs.messageIdFactory = new InMemoryMessageId.Factory();
         mainStepdefs.jmapServer = new GuiceJamesServer()
-                .combineWith(MemoryJamesServerMain.inMemoryServerModule)
+                .combineWith(MemoryJamesServerMain.inMemoryServerAggregateModule)
                 .overrideWith(new MemoryJmapServerModule(temporaryFolder),
                 		(binder) -> binder.bind(MessageId.Factory.class).toInstance(mainStepdefs.messageIdFactory))
                 .overrideWith((binder) -> binder.bind(PersistenceAdapter.class).to(MemoryPersistenceAdapter.class));


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


[02/19] james-project git commit: JAMES-2242 GroupMappingTest should wait fakeSmtp to be started

Posted by ad...@apache.org.
JAMES-2242 GroupMappingTest should wait fakeSmtp to be started


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

Branch: refs/heads/master
Commit: 765a8fd122a9b4b6cdb1586f7001be7d43e9e741
Parents: 6a2d0b2
Author: benwa <bt...@linagora.com>
Authored: Wed Nov 29 16:23:45 2017 +0700
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Mon Dec 4 14:42:13 2017 +0100

----------------------------------------------------------------------
 .../org/apache/james/transport/mailets/GroupMappingTest.java    | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/765a8fd1/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 d025a16..0e5e18f 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
@@ -58,6 +58,7 @@ import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
+import org.testcontainers.containers.wait.HostPortWaitStrategy;
 
 import com.jayway.awaitility.Awaitility;
 import com.jayway.awaitility.Duration;
@@ -90,7 +91,9 @@ public class GroupMappingTest {
 
     @Rule
     public final SwarmGenericContainer fakeSmtp = new SwarmGenericContainer("weave/rest-smtp-sink:latest")
-        .withExposedPorts(25);
+        .withExposedPorts(25)
+        .withAffinityToContainer()
+        .waitingFor(new HostPortWaitStrategy());
 
     private final InMemoryDNSService inMemoryDNSService = new InMemoryDNSService();
     @Rule


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


[14/19] james-project git commit: JAMES-2242 Memory mail queue should preserve mail names

Posted by ad...@apache.org.
JAMES-2242 Memory mail queue should preserve mail names

This is for instance enforced in AbstractJMSMailQueueTest


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

Branch: refs/heads/master
Commit: 70ec6ca8a6efb98093d0a343ace7370315669342
Parents: 4936fb0
Author: benwa <bt...@linagora.com>
Authored: Thu Nov 30 14:42:20 2017 +0700
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Mon Dec 4 14:42:21 2017 +0100

----------------------------------------------------------------------
 .../modules/server/MemoryMailQueueFactory.java      |  1 +
 .../james/server/MemoryMailQueueFactoryTest.java    | 16 ++++++++++++++++
 2 files changed, 17 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/70ec6ca8/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 5918d5b..957c934 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
@@ -88,6 +88,7 @@ public class MemoryMailQueueFactory implements MailQueueFactory {
 
         private Mail cloneMail(Mail mail) throws MessagingException {
             MailImpl mailImpl = MailImpl.duplicate(mail);
+            mailImpl.setName(mail.getName());
             mailImpl.setState(mail.getState());
             Optional.ofNullable(mail.getMessage())
                     .ifPresent(Throwing.consumer(message -> mailImpl.setMessage(new MimeMessage(message))));

http://git-wip-us.apache.org/repos/asf/james-project/blob/70ec6ca8/server/container/guice/memory-guice/src/test/java/org/apache/james/server/MemoryMailQueueFactoryTest.java
----------------------------------------------------------------------
diff --git a/server/container/guice/memory-guice/src/test/java/org/apache/james/server/MemoryMailQueueFactoryTest.java b/server/container/guice/memory-guice/src/test/java/org/apache/james/server/MemoryMailQueueFactoryTest.java
index 62357bb..b236a84 100644
--- a/server/container/guice/memory-guice/src/test/java/org/apache/james/server/MemoryMailQueueFactoryTest.java
+++ b/server/container/guice/memory-guice/src/test/java/org/apache/james/server/MemoryMailQueueFactoryTest.java
@@ -115,6 +115,22 @@ public class MemoryMailQueueFactoryTest {
     }
 
     @Test
+    public void dequeueShouldPreserveName() throws Exception{
+        Mail mail = FakeMail.builder()
+            .name(NAME_1)
+            .build();
+        memoryMailQueueFactory.getQueue(KEY).enQueue(mail);
+
+        String newName = memoryMailQueueFactory
+            .getQueue(KEY)
+            .deQueue()
+            .getMail()
+            .getName();
+
+        assertThat(newName).isEqualTo(NAME_1);
+    }
+
+    @Test
     public void dequeueShouldWorkWithMultipleMessages() throws Exception{
         Mail mail1 = FakeMail.builder()
                 .name(NAME_1)


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