You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ro...@apache.org on 2019/05/07 09:34:55 UTC

[james-project] 02/04: JAMES-2754 add smtp host system injection

This is an automated email from the ASF dual-hosted git repository.

rouazana pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 4fbdb515009b69a3de07582152b94fa8ef3ffd40
Author: RĂ©mi Kowalski <rk...@linagora.com>
AuthorDate: Thu May 2 14:24:56 2019 +0200

    JAMES-2754 add smtp host system injection
---
 mpt/impl/imap-mailbox/external-james/pom.xml        |  4 ++++
 .../external/james/DeploymentValidation.java        | 12 ++++++++----
 .../external/james/ExternalJamesModule.java         |  3 +++
 .../james/JamesDeploymentValidationTest.java        | 12 ++++++++++--
 .../james/host/ExternalJamesConfiguration.java      |  2 ++
 ...nalJamesConfigurationEnvironnementVariables.java |  8 ++++++++
 ...ration.java => ExternalJamesSmtpHostSystem.java} | 21 +++++++++++++++++----
 ...lJamesConfiguration.java => SmtpHostSystem.java} |  8 ++++----
 8 files changed, 56 insertions(+), 14 deletions(-)

diff --git a/mpt/impl/imap-mailbox/external-james/pom.xml b/mpt/impl/imap-mailbox/external-james/pom.xml
index 8b2ad6d..10ebda1 100644
--- a/mpt/impl/imap-mailbox/external-james/pom.xml
+++ b/mpt/impl/imap-mailbox/external-james/pom.xml
@@ -41,6 +41,10 @@
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
+            <artifactId>james-server-testing</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>${james.groupId}</groupId>
             <artifactId>metrics-logger</artifactId>
         </dependency>
         <dependency>
diff --git a/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/DeploymentValidation.java b/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/DeploymentValidation.java
index f949962..f4acc0c 100644
--- a/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/DeploymentValidation.java
+++ b/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/DeploymentValidation.java
@@ -22,6 +22,8 @@ package org.apache.james.mpt.imapmailbox.external.james;
 import java.util.Locale;
 
 import org.apache.james.mpt.api.ImapHostSystem;
+import org.apache.james.mpt.imapmailbox.external.james.host.ExternalJamesSmtpHostSystem;
+import org.apache.james.mpt.imapmailbox.external.james.host.SmtpHostSystem;
 import org.apache.james.mpt.script.SimpleScriptedTestProtocol;
 import org.junit.Before;
 import org.junit.Test;
@@ -33,7 +35,9 @@ public abstract class DeploymentValidation {
     public static final String PASSWORD = "password";
 
     protected abstract ImapHostSystem createImapHostSystem();
-    
+
+    protected abstract SmtpHostSystem createSmtpHostSystem();
+
     private ImapHostSystem system;
     private SimpleScriptedTestProtocol simpleScriptedTestProtocol;
 
@@ -41,10 +45,10 @@ public abstract class DeploymentValidation {
     public void setUp() throws Exception {
         system = createImapHostSystem();
         simpleScriptedTestProtocol = new SimpleScriptedTestProtocol("/org/apache/james/imap/scripts/", system)
-                .withUser(USER + "@" + DOMAIN, PASSWORD)
-                .withLocale(Locale.US);
+            .withUser(USER + "@" + DOMAIN, PASSWORD)
+            .withLocale(Locale.US);
     }
-    
+
     @Test
     public void validateDeployment() throws Exception {
         simpleScriptedTestProtocol.run("ValidateDeployment");
diff --git a/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/ExternalJamesModule.java b/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/ExternalJamesModule.java
index 2daf013..4b0917f 100644
--- a/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/ExternalJamesModule.java
+++ b/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/ExternalJamesModule.java
@@ -26,7 +26,9 @@ import org.apache.james.mpt.host.ExternalHostSystem;
 import org.apache.james.mpt.imapmailbox.external.james.host.ExternalJamesConfiguration;
 import org.apache.james.mpt.imapmailbox.external.james.host.ExternalJamesConfigurationEnvironnementVariables;
 import org.apache.james.mpt.imapmailbox.external.james.host.ExternalJamesImapHostSystem;
+import org.apache.james.mpt.imapmailbox.external.james.host.ExternalJamesSmtpHostSystem;
 import org.apache.james.mpt.imapmailbox.external.james.host.ExternalJamesUserAdder;
+import org.apache.james.mpt.imapmailbox.external.james.host.SmtpHostSystem;
 
 import com.google.inject.AbstractModule;
 
@@ -38,6 +40,7 @@ public class ExternalJamesModule extends AbstractModule {
         bind(ImapHostSystem.class).to(ExternalJamesImapHostSystem.class);
         bind(HostSystem.class).to(ExternalJamesImapHostSystem.class);
         bind(ExternalHostSystem.class).to(ExternalJamesImapHostSystem.class);
+        bind(SmtpHostSystem.class).to(ExternalJamesSmtpHostSystem.class);
         bind(UserAdder.class).to(ExternalJamesUserAdder.class);
     }
 
diff --git a/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/JamesDeploymentValidationTest.java b/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/JamesDeploymentValidationTest.java
index 81394f6..6bc75a9 100644
--- a/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/JamesDeploymentValidationTest.java
+++ b/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/JamesDeploymentValidationTest.java
@@ -20,6 +20,7 @@
 package org.apache.james.mpt.imapmailbox.external.james;
 
 import org.apache.james.mpt.api.ImapHostSystem;
+import org.apache.james.mpt.imapmailbox.external.james.host.SmtpHostSystem;
 import org.junit.After;
 import org.junit.Before;
 
@@ -29,12 +30,14 @@ import com.google.inject.Injector;
 public class JamesDeploymentValidationTest extends DeploymentValidation {
 
     private ImapHostSystem system;
+    private SmtpHostSystem smtpHostSystem;
 
     @Override
     @Before
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new ExternalJamesModule());
         system = injector.getInstance(ImapHostSystem.class);
+        smtpHostSystem = injector.getInstance(SmtpHostSystem.class);
         system.beforeTest();
         super.setUp();
     }
@@ -43,11 +46,16 @@ public class JamesDeploymentValidationTest extends DeploymentValidation {
     protected ImapHostSystem createImapHostSystem() {
         return system;
     }
-    
+
+    @Override
+    protected SmtpHostSystem createSmtpHostSystem() {
+        return smtpHostSystem;
+    }
+
     @After
     public void tearDown() throws Exception {
         system.afterTest();
     }
 
-    
+
 }
diff --git a/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/host/ExternalJamesConfiguration.java b/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/host/ExternalJamesConfiguration.java
index 209218b..4035615 100644
--- a/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/host/ExternalJamesConfiguration.java
+++ b/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/host/ExternalJamesConfiguration.java
@@ -25,4 +25,6 @@ public interface ExternalJamesConfiguration {
 
     Port getImapPort();
 
+    Port getSmptPort();
+
 }
diff --git a/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/host/ExternalJamesConfigurationEnvironnementVariables.java b/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/host/ExternalJamesConfigurationEnvironnementVariables.java
index 5dde686..20f3b14 100644
--- a/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/host/ExternalJamesConfigurationEnvironnementVariables.java
+++ b/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/host/ExternalJamesConfigurationEnvironnementVariables.java
@@ -26,15 +26,19 @@ public class ExternalJamesConfigurationEnvironnementVariables implements Externa
 
     private static final String ENV_JAMES_ADDRESS = "JAMES_ADDRESS";
     private static final String ENV_JAMES_IMAP_PORT = "JAMES_IMAP_PORT";
+    private static final String ENV_JAMES_SMTP_PORT = "JAMES_SMTP_PORT";
 
     private final String address;
     private final Port imapPort;
+    private final Port smtpPort;
 
     public ExternalJamesConfigurationEnvironnementVariables() {
         Preconditions.checkState(System.getenv(ENV_JAMES_ADDRESS) != null, "You must have exported an environment variable called JAMES_ADDRESS in order to run these tests. For instance export JAMES_ADDRESS=127.0.0.1");
         Preconditions.checkState(System.getenv(ENV_JAMES_IMAP_PORT) != null, "You must have exported an environment variable called JAMES_IMAP_PORT in order to run these tests. For instance export JAMES_IMAP_PORT=143");
+        Preconditions.checkState(System.getenv(ENV_JAMES_SMTP_PORT) != null, "You must have exported an environment variable called JAMES_SMTP_PORT in order to run these tests. For instance export JAMES_IMAP_PORT=143");
         this.address = System.getenv(ENV_JAMES_ADDRESS);
         this.imapPort = Port.of(Integer.parseInt(System.getenv(ENV_JAMES_IMAP_PORT)));
+        this.smtpPort = Port.of(Integer.parseInt(System.getenv(ENV_JAMES_SMTP_PORT)));
     }
 
     @Override
@@ -47,4 +51,8 @@ public class ExternalJamesConfigurationEnvironnementVariables implements Externa
         return imapPort;
     }
 
+    @Override
+    public Port getSmptPort() {
+        return smtpPort;
+    }
 }
diff --git a/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/host/ExternalJamesConfiguration.java b/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/host/ExternalJamesSmtpHostSystem.java
similarity index 65%
copy from mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/host/ExternalJamesConfiguration.java
copy to mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/host/ExternalJamesSmtpHostSystem.java
index 209218b..d4fdda5 100644
--- a/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/host/ExternalJamesConfiguration.java
+++ b/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/host/ExternalJamesSmtpHostSystem.java
@@ -18,11 +18,24 @@
  ****************************************************************/
 package org.apache.james.mpt.imapmailbox.external.james.host;
 
-import org.apache.james.util.Port;
+import java.io.IOException;
 
-public interface ExternalJamesConfiguration {
-    String getAddress();
+import org.apache.james.utils.SMTPMessageSender;
 
-    Port getImapPort();
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
 
+@Singleton
+public class ExternalJamesSmtpHostSystem implements SmtpHostSystem{
+
+    private final ExternalJamesConfiguration configuration;
+
+    @Inject
+    private ExternalJamesSmtpHostSystem(ExternalJamesConfiguration externalConfiguration) {
+        this.configuration = externalConfiguration;
+    }
+
+    public SMTPMessageSender connect(SMTPMessageSender smtpMessageSender) throws IOException {
+        return smtpMessageSender.connect(configuration.getAddress(), configuration.getSmptPort());
+    }
 }
diff --git a/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/host/ExternalJamesConfiguration.java b/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/host/SmtpHostSystem.java
similarity index 86%
copy from mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/host/ExternalJamesConfiguration.java
copy to mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/host/SmtpHostSystem.java
index 209218b..f75ea16 100644
--- a/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/host/ExternalJamesConfiguration.java
+++ b/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/host/SmtpHostSystem.java
@@ -18,11 +18,11 @@
  ****************************************************************/
 package org.apache.james.mpt.imapmailbox.external.james.host;
 
-import org.apache.james.util.Port;
+import java.io.IOException;
 
-public interface ExternalJamesConfiguration {
-    String getAddress();
+import org.apache.james.utils.SMTPMessageSender;
 
-    Port getImapPort();
+public interface SmtpHostSystem {
 
+    SMTPMessageSender connect(SMTPMessageSender smtpMessageSender) throws IOException;
 }


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