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

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

commit a19f0c4d944c827657543182957b43704d04ce37
Author: Tran Tien Duc <[email protected]>
AuthorDate: Fri Aug 23 17:20:20 2019 +0700

    JAMES-2865 plug SMTPBehaviorRepository into MockSMTPServer
---
 .../james/mock/smtp/server/MockMessageHandler.java   |  9 ++++-----
 .../james/mock/smtp/server/MockSMTPServer.java       | 20 +++++---------------
 .../mock/smtp/server/SMTPBehaviorRepository.java     | 15 +++++++++++++++
 .../james/mock/smtp/server/MockSMTPServerTest.java   | 11 +++++++----
 4 files changed, 31 insertions(+), 24 deletions(-)

diff --git 
a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockMessageHandler.java
 
b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockMessageHandler.java
index 15323ec..71e224f 100644
--- 
a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockMessageHandler.java
+++ 
b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockMessageHandler.java
@@ -22,7 +22,6 @@ package org.apache.james.mock.smtp.server;
 import java.io.IOException;
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
-import java.util.List;
 import java.util.Optional;
 
 import javax.mail.internet.AddressException;
@@ -68,11 +67,11 @@ public class MockMessageHandler implements MessageHandler {
     private final Mail.Envelope.Builder envelopeBuilder;
     private final Mail.Builder mailBuilder;
     private final ReceivedMailRepository mailRepository;
-    private final List<MockSMTPBehavior> behaviors;
+    private final SMTPBehaviorRepository behaviorRepository;
 
-    MockMessageHandler(ReceivedMailRepository mailRepository, 
List<MockSMTPBehavior> behaviors) {
+    MockMessageHandler(ReceivedMailRepository mailRepository, 
SMTPBehaviorRepository behaviorRepository) {
         this.mailRepository = mailRepository;
-        this.behaviors = behaviors;
+        this.behaviorRepository = behaviorRepository;
         this.envelopeBuilder = new Mail.Envelope.Builder();
         this.mailBuilder = new Mail.Builder();
     }
@@ -105,7 +104,7 @@ public class MockMessageHandler implements MessageHandler {
     }
 
     private Optional<MockSMTPBehavior> firstMatchedBehavior(SMTPCommand data) {
-        return behaviors.stream()
+        return behaviorRepository.allBehaviors()
             .filter(behavior -> behavior.getCommand().equals(data))
             .findFirst();
     }
diff --git 
a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockSMTPServer.java
 
b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockSMTPServer.java
index 9f05e25..834bdec 100644
--- 
a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockSMTPServer.java
+++ 
b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockSMTPServer.java
@@ -19,12 +19,9 @@
 
 package org.apache.james.mock.smtp.server;
 
-import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 
 import org.apache.james.mock.smtp.server.model.Mail;
-import org.apache.james.mock.smtp.server.model.MockSMTPBehavior;
 import org.apache.james.util.Port;
 import org.subethamail.smtp.server.SMTPServer;
 
@@ -32,12 +29,14 @@ class MockSMTPServer {
 
     private final SMTPServer server;
     private final ReceivedMailRepository mailRepository;
-    private final List<MockSMTPBehavior> behaviors;
 
     MockSMTPServer() {
-        this.behaviors = new ArrayList<>();
+        this(new SMTPBehaviorRepository());
+    }
+
+    MockSMTPServer(SMTPBehaviorRepository behaviorRepository) {
         this.mailRepository = new ReceivedMailRepository();
-        this.server = new SMTPServer(ctx -> new 
MockMessageHandler(mailRepository, behaviors));
+        this.server = new SMTPServer(ctx -> new 
MockMessageHandler(mailRepository, behaviorRepository));
         this.server.setPort(0);
     }
 
@@ -57,14 +56,5 @@ class MockSMTPServer {
 
     void stop() {
         server.stop();
-        clearBehavior();
-    }
-
-    void setBehaviors(MockSMTPBehavior... behaviors) {
-        this.behaviors.addAll(Arrays.asList(behaviors));
-    }
-
-    private void clearBehavior() {
-        behaviors.clear();
     }
 }
diff --git 
a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/SMTPBehaviorRepository.java
 
b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/SMTPBehaviorRepository.java
index dddfb2a..2a8fe9d 100644
--- 
a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/SMTPBehaviorRepository.java
+++ 
b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/SMTPBehaviorRepository.java
@@ -19,9 +19,13 @@
 
 package org.apache.james.mock.smtp.server;
 
+import java.util.Arrays;
+import java.util.List;
 import java.util.Optional;
 import java.util.concurrent.atomic.AtomicReference;
+import java.util.stream.Stream;
 
+import org.apache.james.mock.smtp.server.model.MockSMTPBehavior;
 import org.apache.james.mock.smtp.server.model.MockSmtpBehaviors;
 
 public class SMTPBehaviorRepository {
@@ -42,4 +46,15 @@ public class SMTPBehaviorRepository {
     public void setBehaviors(MockSmtpBehaviors behaviors) {
         this.behaviors.set(behaviors);
     }
+
+    public void setBehaviors(MockSMTPBehavior... behaviors) {
+        setBehaviors(new MockSmtpBehaviors(Arrays.asList(behaviors)));
+    }
+
+    public Stream<MockSMTPBehavior> allBehaviors() {
+        return Optional.ofNullable(behaviors.get())
+            .map(MockSmtpBehaviors::getBehaviorList)
+            .map(List::stream)
+            .orElseGet(Stream::empty);
+    }
 }
diff --git 
a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/MockSMTPServerTest.java
 
b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/MockSMTPServerTest.java
index 4e9cb09..91ee177 100644
--- 
a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/MockSMTPServerTest.java
+++ 
b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/MockSMTPServerTest.java
@@ -115,10 +115,12 @@ class MockSMTPServerTest {
         private FakeMail mail1;
         private MimeMessage mimeMessage1;
         private SMTPMessageSender smtpClient;
+        private SMTPBehaviorRepository behaviorRepository;
 
         @BeforeEach
         void setUp() throws Exception {
-            mockServer = new MockSMTPServer();
+            behaviorRepository = new SMTPBehaviorRepository();
+            mockServer = new MockSMTPServer(behaviorRepository);
 
             mimeMessage1 = MimeMessageBuilder.mimeMessageBuilder()
                 .setSubject("test")
@@ -138,12 +140,13 @@ class MockSMTPServerTest {
 
         @AfterEach
         void tearDown() {
+            behaviorRepository.clearBehaviors();
             mockServer.stop();
         }
 
         @Test
         void serverShouldReceiveMessageFromClient() throws Exception {
-            mockServer.setBehaviors(new MockSMTPBehavior(
+            behaviorRepository.setBehaviors(new MockSMTPBehavior(
                 MAIL_FROM,
                 Condition.MATCH_ALL,
                 Response.serverReject(SERVICE_NOT_AVAILABLE_421, "mock 
response"),
@@ -156,7 +159,7 @@ class MockSMTPServerTest {
 
         @Test
         void serverShouldReceiveMessageRecipientClient() throws Exception {
-            mockServer.setBehaviors(new MockSMTPBehavior(
+            behaviorRepository.setBehaviors(new MockSMTPBehavior(
                 RCPT_TO,
                 Condition.MATCH_ALL,
                 Response.serverReject(SERVICE_NOT_AVAILABLE_421, "mock 
response"),
@@ -169,7 +172,7 @@ class MockSMTPServerTest {
 
         @Test
         void serverShouldReceiveMessageDataClient() throws Exception {
-            mockServer.setBehaviors(new MockSMTPBehavior(
+            behaviorRepository.setBehaviors(new MockSMTPBehavior(
                 DATA,
                 Condition.MATCH_ALL,
                 Response.serverReject(SERVICE_NOT_AVAILABLE_421, "mock 
response"),


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to