[prev in list] [next in list] [prev in thread] [next in thread] 

List:       james-dev
Subject:    [1/2] james-project git commit: MAILET-115 Manage every attributes in FakeMail.Builder
From:       rouazana () apache ! org
Date:       2016-09-29 12:54:43
Message-ID: 54b89391657f40429d1974994213a422 () git ! apache ! org
[Download RAW message or body]

Repository: james-project
Updated Branches:
  refs/heads/master 7d352250b -> 6bedffed7


MAILET-115 Manage every attributes in FakeMail.Builder


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

Branch: refs/heads/master
Commit: b3458187aed724df0c463a34a4355604474a2562
Parents: a8fe12f
Author: Antoine Duprat <aduprat@linagora.com>
Authored: Fri Sep 2 09:53:55 2016 +0200
Committer: Antoine Duprat <aduprat@apache.org>
Committed: Thu Sep 29 10:58:17 2016 +0200

----------------------------------------------------------------------
 .../AutomaticallySentMailDetectorImplTest.java  | 150 +++++++++-------
 .../apache/mailet/base/MatcherInverterTest.java |  27 +--
 .../org/apache/mailet/base/test/FakeMail.java   | 177 ++++++++++++-------
 .../org/apache/mailet/base/test/MailUtil.java   |  24 +--
 .../james/transport/mailets/LogMessageTest.java |  18 +-
 .../MailAttributesToMimeHeadersTest.java        |   1 -
 .../james/transport/mailets/NullTest.java       |   3 +-
 .../james/transport/mailets/OnlyTextTest.java   |  20 ++-
 .../mailets/RemoveAllMailAttributesTest.java    |   4 +-
 .../mailets/RemoveMailAttributeTest.java        |  13 +-
 .../transport/mailets/RemoveMimeHeaderTest.java |   8 +-
 .../transport/mailets/ReplaceContentTest.java   |  32 +++-
 .../transport/mailets/SetMailAttributeTest.java |  10 +-
 .../transport/mailets/StripAttachmentTest.java  |  20 ++-
 .../matchers/AbstractHasMailAttributeTest.java  |   9 +-
 .../matchers/AbstractRecipientIsTest.java       |   7 +-
 .../HasMailAttributeWithValueRegexTest.java     |   2 +-
 .../matchers/HasMailAttributeWithValueTest.java |   2 +-
 .../matchers/IsSingleRecipientTest.java         |   2 +-
 .../matchers/RecipientIsLocalTest.java          |   9 +-
 .../matchers/SMTPIsAuthNetworkTest.java         |   5 +-
 .../server/MemoryMailQueueFactoryTest.java      |  20 ++-
 .../james/transport/mailets/BounceTest.java     |   9 +-
 .../mailets/RecipientRewriteTableTest.java      |  29 ++-
 .../mailets/delivery/LocalDeliveryTest.java     |  39 ++--
 .../mailets/delivery/SieveMailetTest.java       |  11 +-
 .../mailets/delivery/ToRecipientFolderTest.java |  11 +-
 .../managesieve/ManageSieveMailetTestCase.java  |  10 +-
 .../matchers/InSpammerBlacklistTest.java        |  23 ++-
 .../matchers/RemoteAddrInNetworkTest.java       |  22 ++-
 .../matchers/RemoteAddrNotInNetworkTest.java    |  33 ++--
 .../james/jmap/mailet/VacationReplyTest.java    |  10 +-
 .../apache/james/jmap/send/MailSpoolTest.java   |   2 +-
 .../jmap/send/PostDequeueDecoratorTest.java     |   2 +-
 34 files changed, 456 insertions(+), 308 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/b3458187/mailet/base/src/test/java/org/apache/mailet/base/AutomaticallySentMailDetectorImplTest.java
                
----------------------------------------------------------------------
diff --git a/mailet/base/src/test/java/org/apache/mailet/base/AutomaticallySentMailDetectorImplTest.java \
b/mailet/base/src/test/java/org/apache/mailet/base/AutomaticallySentMailDetectorImplTest.java
 index 9581ac9..5e839ff 100644
--- a/mailet/base/src/test/java/org/apache/mailet/base/AutomaticallySentMailDetectorImplTest.java
                
+++ b/mailet/base/src/test/java/org/apache/mailet/base/AutomaticallySentMailDetectorImplTest.java
 @@ -38,211 +38,229 @@ public class AutomaticallySentMailDetectorImplTest {
 
     @Test
     public void ownerIsAMailingListPrefix() throws Exception {
-        FakeMail fakeMail = new FakeMail();
-        fakeMail.setSender(new MailAddress("owner-list@any.com"));
+        FakeMail fakeMail = FakeMail.builder()
+                .sender(new MailAddress("owner-list@any.com"))
+                .build();
 
         assertThat(new \
AutomaticallySentMailDetectorImpl().isMailingList(fakeMail)).isTrue();  }
 
     @Test
     public void requestIsAMailingListPrefix() throws Exception {
-        FakeMail fakeMail = new FakeMail();
-        fakeMail.setSender(new MailAddress("list-request@any.com"));
+        FakeMail fakeMail = FakeMail.builder()
+                .sender(new MailAddress("list-request@any.com"))
+                .build();
 
         assertThat(new \
AutomaticallySentMailDetectorImpl().isMailingList(fakeMail)).isTrue();  }
 
     @Test
     public void mailerDaemonIsReserved() throws Exception {
-        FakeMail fakeMail = new FakeMail();
-        fakeMail.setSender(new MailAddress("MAILER-DAEMON@any.com"));
+        FakeMail fakeMail = FakeMail.builder()
+                .sender(new MailAddress("MAILER-DAEMON@any.com"))
+                .build();
 
         assertThat(new \
AutomaticallySentMailDetectorImpl().isMailingList(fakeMail)).isTrue();  }
 
     @Test
     public void listservIsReserved() throws Exception {
-        FakeMail fakeMail = new FakeMail();
-        fakeMail.setSender(new MailAddress("LISTSERV@any.com"));
+        FakeMail fakeMail = FakeMail.builder()
+                .sender(new MailAddress("LISTSERV@any.com"))
+                .build();
 
         assertThat(new \
AutomaticallySentMailDetectorImpl().isMailingList(fakeMail)).isTrue();  }
 
     @Test
     public void majordomoIsReserved() throws Exception {
-        FakeMail fakeMail = new FakeMail();
-        fakeMail.setSender(new MailAddress("majordomo@any.com"));
+        FakeMail fakeMail = FakeMail.builder()
+                .sender(new MailAddress("majordomo@any.com"))
+                .build();
 
         assertThat(new \
AutomaticallySentMailDetectorImpl().isMailingList(fakeMail)).isTrue();  }
 
     @Test
     public void listIdShouldBeDetected() throws Exception {
-        FakeMail fakeMail = new FakeMail();
-        fakeMail.setSender(new MailAddress("any@any.com"));
         MimeMessage message = new MimeMessage(Session.getDefaultInstance(new \
Properties()));  message.setHeader("List-Id", "any");
-        fakeMail.setMessage(message);
+        FakeMail fakeMail = FakeMail.builder()
+                .sender(new MailAddress("any@any.com"))
+                .mimeMessage(message)
+                .build();
 
         assertThat(new \
AutomaticallySentMailDetectorImpl().isMailingList(fakeMail)).isTrue();  }
 
     @Test
     public void listHelpShouldBeDetected() throws Exception {
-        FakeMail fakeMail = new FakeMail();
-        fakeMail.setSender(new MailAddress("any@any.com"));
         MimeMessage message = new MimeMessage(Session.getDefaultInstance(new \
Properties()));  message.setHeader("List-Help", "any");
-        fakeMail.setMessage(message);
+        FakeMail fakeMail = FakeMail.builder()
+                .sender(new MailAddress("any@any.com"))
+                .mimeMessage(message)
+                .build();
 
         assertThat(new \
AutomaticallySentMailDetectorImpl().isMailingList(fakeMail)).isTrue();  }
 
     @Test
     public void listSubscribeShouldBeDetected() throws Exception {
-        FakeMail fakeMail = new FakeMail();
-        fakeMail.setSender(new MailAddress("any@any.com"));
         MimeMessage message = new MimeMessage(Session.getDefaultInstance(new \
Properties()));  message.setHeader("List-Subscribe", "any");
-        fakeMail.setMessage(message);
+        FakeMail fakeMail = FakeMail.builder()
+                .sender(new MailAddress("any@any.com"))
+                .mimeMessage(message)
+                .build();
 
         assertThat(new \
AutomaticallySentMailDetectorImpl().isMailingList(fakeMail)).isTrue();  }
 
     @Test
     public void listUnsubscribeShouldBeDetected() throws Exception {
-        FakeMail fakeMail = new FakeMail();
-        fakeMail.setSender(new MailAddress("any@any.com"));
         MimeMessage message = new MimeMessage(Session.getDefaultInstance(new \
Properties()));  message.setHeader("List-Unsubscribe", "any");
-        fakeMail.setMessage(message);
+        FakeMail fakeMail = FakeMail.builder()
+                .sender(new MailAddress("any@any.com"))
+                .mimeMessage(message)
+                .build();
 
         assertThat(new \
AutomaticallySentMailDetectorImpl().isMailingList(fakeMail)).isTrue();  }
 
     @Test
     public void listPostShouldBeDetected() throws Exception {
-        FakeMail fakeMail = new FakeMail();
-        fakeMail.setSender(new MailAddress("any@any.com"));
         MimeMessage message = new MimeMessage(Session.getDefaultInstance(new \
Properties()));  message.setHeader("List-Post", "any");
-        fakeMail.setMessage(message);
+        FakeMail fakeMail = FakeMail.builder()
+                .sender(new MailAddress("any@any.com"))
+                .mimeMessage(message)
+                .build();
 
         assertThat(new \
AutomaticallySentMailDetectorImpl().isMailingList(fakeMail)).isTrue();  }
 
     @Test
     public void listOwnerShouldBeDetected() throws Exception {
-        FakeMail fakeMail = new FakeMail();
-        fakeMail.setSender(new MailAddress("any@any.com"));
         MimeMessage message = new MimeMessage(Session.getDefaultInstance(new \
Properties()));  message.setHeader("List-Owner", "any");
-        fakeMail.setMessage(message);
+        FakeMail fakeMail = FakeMail.builder()
+                .sender(new MailAddress("any@any.com"))
+                .mimeMessage(message)
+                .build();
 
         assertThat(new \
AutomaticallySentMailDetectorImpl().isMailingList(fakeMail)).isTrue();  }
 
     @Test
     public void listArchiveShouldBeDetected() throws Exception {
-        FakeMail fakeMail = new FakeMail();
-        fakeMail.setSender(new MailAddress("any@any.com"));
         MimeMessage message = new MimeMessage(Session.getDefaultInstance(new \
Properties()));  message.setHeader("List-Archive", "any");
-        fakeMail.setMessage(message);
+        FakeMail fakeMail = FakeMail.builder()
+                .sender(new MailAddress("any@any.com"))
+                .mimeMessage(message)
+                .build();
 
         assertThat(new \
AutomaticallySentMailDetectorImpl().isMailingList(fakeMail)).isTrue();  }
 
     @Test
     public void normalMailShouldNotBeIdentifiedAsMailingList() throws Exception {
-        FakeMail fakeMail = new FakeMail();
-        fakeMail.setSender(new MailAddress("any@any.com"));
-        fakeMail.setMessage(new MimeMessage(Session.getDefaultInstance(new \
Properties()))); +        FakeMail fakeMail = FakeMail.builder()
+                .sender(new MailAddress("any@any.com"))
+                .mimeMessage(new MimeMessage(Session.getDefaultInstance(new \
Properties()))) +                .build();
 
         assertThat(new \
AutomaticallySentMailDetectorImpl().isMailingList(fakeMail)).isFalse();  }
 
     @Test
     public void isAutoSubmittedShouldNotMatchNonAutoSubmittedMails() throws \
                Exception {
-        FakeMail fakeMail = new FakeMail();
-        fakeMail.setMessage(new MimeMessage(Session.getDefaultInstance(new \
Properties()))); +        FakeMail fakeMail = FakeMail.builder()
+                .mimeMessage(new MimeMessage(Session.getDefaultInstance(new \
Properties()))) +                .build();
 
         assertThat(new \
AutomaticallySentMailDetectorImpl().isAutoSubmitted(fakeMail)).isFalse();  }
 
     @Test
     public void isAutoSubmittedShouldBeDetected() throws Exception {
-        FakeMail fakeMail = new FakeMail();
-        fakeMail.setSender(new MailAddress("any@any.com"));
         MimeMessage message = new MimeMessage(Session.getDefaultInstance(new \
Properties()));  message.setHeader("Auto-Submitted", "auto-replied");
-        fakeMail.setMessage(message);
+        FakeMail fakeMail = FakeMail.builder()
+                .sender(new MailAddress("any@any.com"))
+                .mimeMessage(message)
+                .build();
 
         assertThat(new \
AutomaticallySentMailDetectorImpl().isAutoSubmitted(fakeMail)).isTrue();  }
 
     @Test
     public void isMdnSentAutomaticallyShouldBeDetected() throws Exception {
-        FakeMail fakeMail = new FakeMail();
-        fakeMail.setSender(new MailAddress("any@any.com"));
         MimeMessage message = new MimeMessage(Session.getDefaultInstance(new \
Properties()));  MimeMultipart multipart = new MimeMultipart();
         MimeBodyPart scriptPart = new MimeBodyPart();
         scriptPart.setDataHandler(
-            new DataHandler(
-                new ByteArrayDataSource(
-                    "Disposition: MDN-sent-automatically",
-                    "message/disposition-notification;")
-            ));
+                new DataHandler(
+                        new ByteArrayDataSource(
+                                "Disposition: MDN-sent-automatically",
+                                "message/disposition-notification;")
+                        ));
         scriptPart.setHeader("Content-Type", "message/disposition-notification");
         multipart.addBodyPart(scriptPart);
         message.setContent(multipart);
-
-        fakeMail.setMessage(message);
+        
+        FakeMail fakeMail = FakeMail.builder()
+                .sender(new MailAddress("any@any.com"))
+                .mimeMessage(message)
+                .build();
 
         assertThat(new \
AutomaticallySentMailDetectorImpl().isMdnSentAutomatically(fakeMail)).isTrue();  }
 
     @Test
     public void isMdnSentAutomaticallyShouldNotFilterManuallySentMdn() throws \
                Exception {
-        FakeMail fakeMail = new FakeMail();
-        fakeMail.setSender(new MailAddress("any@any.com"));
         MimeMessage message = new MimeMessage(Session.getDefaultInstance(new \
Properties()));  MimeMultipart multipart = new MimeMultipart();
         MimeBodyPart scriptPart = new MimeBodyPart();
         scriptPart.setDataHandler(
-            new DataHandler(
-                new ByteArrayDataSource(
-                    "Disposition: MDN-sent-manually",
-                    "message/disposition-notification; charset=UTF-8")
-            ));
+                new DataHandler(
+                        new ByteArrayDataSource(
+                                "Disposition: MDN-sent-manually",
+                                "message/disposition-notification; charset=UTF-8")
+                        ));
         scriptPart.setHeader("Content-Type", "message/disposition-notification");
         multipart.addBodyPart(scriptPart);
         message.setContent(multipart);
-
-        fakeMail.setMessage(message);
+        
+        FakeMail fakeMail = FakeMail.builder()
+                .sender(new MailAddress("any@any.com"))
+                .mimeMessage(message)
+                .build();
 
         assertThat(new \
AutomaticallySentMailDetectorImpl().isMdnSentAutomatically(fakeMail)).isFalse();  }
 
     @Test
     public void isMdnSentAutomaticallyShouldManageItsMimeType() throws Exception {
-        FakeMail fakeMail = new FakeMail();
-        fakeMail.setSender(new MailAddress("any@any.com"));
         MimeMessage message = new MimeMessage(Session.getDefaultInstance(new \
Properties()));  MimeMultipart multipart = new MimeMultipart();
         MimeBodyPart scriptPart = new MimeBodyPart();
         scriptPart.setDataHandler(
-            new DataHandler(
-                new ByteArrayDataSource(
-                    "Disposition: MDN-sent-automatically",
-                    "text/plain")
-            ));
+                new DataHandler(
+                        new ByteArrayDataSource(
+                                "Disposition: MDN-sent-automatically",
+                                "text/plain")
+                        ));
         scriptPart.setHeader("Content-Type", "text/plain");
         multipart.addBodyPart(scriptPart);
         message.setContent(multipart);
-
-        fakeMail.setMessage(message);
+        
+        FakeMail fakeMail = FakeMail.builder()
+                .sender(new MailAddress("any@any.com"))
+                .mimeMessage(message)
+                .build();
 
         assertThat(new \
AutomaticallySentMailDetectorImpl().isMdnSentAutomatically(fakeMail)).isFalse();  }

http://git-wip-us.apache.org/repos/asf/james-project/blob/b3458187/mailet/base/src/test/java/org/apache/mailet/base/MatcherInverterTest.java
                
----------------------------------------------------------------------
diff --git a/mailet/base/src/test/java/org/apache/mailet/base/MatcherInverterTest.java \
b/mailet/base/src/test/java/org/apache/mailet/base/MatcherInverterTest.java index \
                f586ca8..331efbe 100644
--- a/mailet/base/src/test/java/org/apache/mailet/base/MatcherInverterTest.java
+++ b/mailet/base/src/test/java/org/apache/mailet/base/MatcherInverterTest.java
@@ -19,18 +19,20 @@
 
 package org.apache.mailet.base;
 
-import org.apache.mailet.Mail;
-import org.apache.mailet.MailAddress;
-import org.apache.mailet.base.test.FakeMail;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
-import org.junit.Test;
 
-import javax.mail.MessagingException;
 import java.util.Arrays;
 import java.util.Collection;
 
+import javax.mail.MessagingException;
+
+import org.apache.mailet.Mail;
+import org.apache.mailet.MailAddress;
+import org.apache.mailet.base.test.FakeMail;
+import org.junit.Test;
+
 public class MatcherInverterTest {
 
     @Test
@@ -41,8 +43,9 @@ public class MatcherInverterTest {
                 return null;
             }
         });
-        FakeMail mail = new FakeMail();
-        mail.setRecipients(Arrays.asList(new MailAddress("user", "domain")));
+        FakeMail mail = FakeMail.builder()
+                .recipient(new MailAddress("user", "domain"))
+                .build();
 
         assertNotNull("Should match all recipients", inverter.match(mail));
     }
@@ -58,8 +61,9 @@ public class MatcherInverterTest {
                 return mail.getRecipients();
             }
         });
-        FakeMail mail = new FakeMail();
-        mail.setRecipients(Arrays.asList(address1, address2));
+        FakeMail mail = FakeMail.builder()
+                .recipients(address1, address2)
+                .build();
 
         assertNull("Should match all recipients", inverter.match(mail));
     }
@@ -75,8 +79,9 @@ public class MatcherInverterTest {
                 return Arrays.asList(address1);
             }
         });
-        FakeMail mail = new FakeMail();
-        mail.setRecipients(Arrays.asList(address1, address2));
+        FakeMail mail = FakeMail.builder()
+                .recipients(address1, address2)
+                .build();
 
         assertEquals("Should match one recipient", address2.toString(), \
inverter.match(mail).iterator().next().toString());  }

http://git-wip-us.apache.org/repos/asf/james-project/blob/b3458187/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMail.java
                
----------------------------------------------------------------------
diff --git a/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMail.java \
b/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMail.java index \
                7e42940..acccec3 100644
--- a/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMail.java
+++ b/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMail.java
@@ -23,12 +23,11 @@ package org.apache.mailet.base.test;
 import java.io.ByteArrayInputStream;
 import java.io.Serializable;
 import java.io.UnsupportedEncodingException;
-import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Date;
-import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 import java.util.Properties;
 
 import javax.mail.MessagingException;
@@ -42,18 +41,19 @@ import org.apache.mailet.MailAddress;
 import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
 
 public class FakeMail implements Mail {
 
     public static FakeMail fromMime(String text, String javaEncodingCharset, String \
javamailDefaultEncodingCharset) throws MessagingException, \
                UnsupportedEncodingException {
-        FakeMail mail = new FakeMail();
         Properties javamailProperties = new Properties();
         javamailProperties.setProperty("mail.mime.charset", \
                javamailDefaultEncodingCharset);
-        mail.setMessage(
-                new MimeMessage(
+        return FakeMail.builder()
+                .mimeMessage(new MimeMessage(
                     Session.getInstance(javamailProperties),
-                    new ByteArrayInputStream(text.getBytes(javaEncodingCharset))));
-        return mail;
+                    new ByteArrayInputStream(text.getBytes(javaEncodingCharset))))
+                .build();
     }
     
     public static Builder builder() {
@@ -62,12 +62,31 @@ public class FakeMail implements Mail {
 
     public static class Builder {
 
-        private Optional<String> fileName = Optional.absent();
-        private Optional<Long> size = Optional.absent();
-        private Optional<MimeMessage> mimeMessage = Optional.absent();
-        private List<MailAddress> recipients = new ArrayList<MailAddress>();
-        private MailAddress sender;
-        private String remoteAddr;
+        private Optional<String> fileName;
+        private Optional<MimeMessage> mimeMessage;
+        private List<MailAddress> recipients;
+        private Optional<String> name;
+        private Optional<MailAddress> sender;
+        private Optional<String> state;
+        private Optional<String> errorMessage;
+        private Optional<Date> lastUpdated;
+        private Map<String, Serializable> attributes;
+        private Optional<Long> size;
+        private Optional<String> remoteAddr;
+
+        private Builder() {
+            fileName = Optional.absent();
+            mimeMessage = Optional.absent();
+            recipients = Lists.newArrayList();
+            name = Optional.absent();
+            sender = Optional.absent();
+            state = Optional.absent();
+            errorMessage = Optional.absent();
+            lastUpdated = Optional.absent();
+            attributes = Maps.newHashMap();
+            size = Optional.absent();
+            remoteAddr = Optional.absent();
+        }
 
         public Builder size(long size) {
             this.size = Optional.of(size);
@@ -99,110 +118,145 @@ public class FakeMail implements Mail {
             return this;
         }
 
+        public Builder name(String name) {
+            this.name = Optional.of(name);
+            return this;
+        }
+
         public Builder sender(MailAddress sender) {
-            this.sender = sender;
+            this.sender = Optional.of(sender);
+            return this;
+        }
+
+        public Builder state(String state) {
+            this.state = Optional.of(state);
+            return this;
+        }
+
+        public Builder errorMessage(String errorMessage) {
+            this.errorMessage = Optional.of(errorMessage);
+            return this;
+        }
+
+        public Builder lastUpdated(Date lastUpdated) {
+            this.lastUpdated = Optional.of(lastUpdated);
+            return this;
+        }
+
+        public Builder attribute(String name, Serializable object) {
+            this.attributes.put(name, object);
+            return this;
+        }
+
+        public Builder attributes(Map<String, Serializable> attributes) {
+            this.attributes.putAll(attributes);
             return this;
         }
 
         public Builder remoteAddr(String remoteAddr) {
-            this.remoteAddr = remoteAddr;
+            this.remoteAddr = Optional.of(remoteAddr);
             return this;
         }
 
         public FakeMail build() throws MessagingException {
+            return new FakeMail(getMimeMessage(), recipients, name.orNull(), \
sender.orNull(), state.orNull(), errorMessage.orNull(), lastUpdated.orNull(), +       \
attributes, size.or(0l), remoteAddr.or("127.0.0.1")); +        }
+
+        private MimeMessage getMimeMessage() throws MessagingException {
             Preconditions.checkState(!(fileName.isPresent() && \
mimeMessage.isPresent()), "You can not specify a MimeMessage object when you alredy \
                set Content from a file");
-            FakeMail mail = new FakeMail();
             if (fileName.isPresent()) {
-                mail.setMessage(new MimeMessage(Session.getInstance(new \
                Properties()), \
                ClassLoader.getSystemResourceAsStream(fileName.get())));
-            }
-            if (mimeMessage.isPresent()) {
-                mail.setMessage(mimeMessage.get());
+                return new MimeMessage(Session.getInstance(new Properties()), \
ClassLoader.getSystemResourceAsStream(fileName.get()));  }
-            if (size.isPresent()) {
-                mail.setMessageSize(size.get());
-            }
-            mail.setSender(sender);
-            mail.setRecipients(recipients);
-            mail.setRemoteAddr(remoteAddr);
-            return mail;
+            return mimeMessage.orNull();
         }
     }
 
-    private MimeMessage msg = null;
-
-    private Collection<MailAddress> recipients = new ArrayList<MailAddress>();
-
-    private String name = null;
-
-    private MailAddress sender = null;
-
-    private String state = null;
+    public static FakeMail defaultFakeMail() throws MessagingException {
+        return FakeMail.builder().build();
+    }
 
+    private MimeMessage msg;
+    private Collection<MailAddress> recipients;
+    private String name;
+    private MailAddress sender;
+    private String state;
     private String errorMessage;
-
     private Date lastUpdated;
-
-    private final HashMap<String, Serializable> attributes = new HashMap<String, \
                Serializable>();
-
-    private static final long serialVersionUID = 1L;
-
-    private long size = 0;
+    private Map<String, Serializable> attributes;
+    private long size;
+    private String remoteAddr;
     
-    private String remoteAddr ="127.0.0.1";
-    
-    public FakeMail() {
-        super();
-    }
-
-    public FakeMail(MimeMessage msg) {
-        this();
+    public FakeMail(MimeMessage msg, List<MailAddress> recipients, String name, \
MailAddress sender, String state, String errorMessage, Date lastUpdated, +            \
Map<String, Serializable> attributes, long size, String remoteAddr) {  this.msg = \
msg; +        this.recipients = recipients;
+        this.name = name;
+        this.sender = sender;
+        this.state = state;
+        this.errorMessage = errorMessage;
+        this.lastUpdated = lastUpdated;
+        this.attributes = attributes;
+        this.size = size;
+        this.remoteAddr = remoteAddr;
     }
 
+    @Override
     public String getName() {
         return name;
     }
 
+    @Override
     public void setName(String newName) {
         this.name = newName;
     }
 
+    @Override
     public MimeMessage getMessage() throws MessagingException {
         return msg;
     }
 
+    @Override
     public Collection<MailAddress> getRecipients() {
         return recipients;
     }
 
+    @Override
     public void setRecipients(Collection<MailAddress> recipients) {
         this.recipients = recipients;
     }
 
+    @Override
     public MailAddress getSender() {
         return sender;
     }
 
+    @Override
     public String getState() {
         return state;
     }
 
+    @Override
     public String getRemoteHost() {
         return "111.222.333.444";
     }
 
+    @Override
     public String getRemoteAddr() {
         return remoteAddr;
     }
 
+    @Override
     public String getErrorMessage() {
         return errorMessage;
     }
 
+    @Override
     public void setErrorMessage(String msg) {
         this.errorMessage = msg;
     }
 
+    @Override
     public void setMessage(MimeMessage message) {
         this.msg = message;
         try {
@@ -214,57 +268,58 @@ public class FakeMail implements Mail {
         }
     }
 
+    @Override
     public void setState(String state) {
         this.state = state;
     }
 
+    @Override
     public Serializable getAttribute(String name) {
         return attributes.get(name);
     }
 
+    @Override
     public Iterator<String> getAttributeNames() {
         return attributes.keySet().iterator();
     }
 
+    @Override
     public boolean hasAttributes() {
         return !attributes.isEmpty();
     }
 
+    @Override
     public Serializable removeAttribute(String name) {
         return attributes.remove(name);
 
     }
 
+    @Override
     public void removeAllAttributes() {
         attributes.clear();
     }
 
+    @Override
     public Serializable setAttribute(String name, Serializable object) {
-
         return attributes.put(name, object);
     }
 
+    @Override
     public long getMessageSize() throws MessagingException {
         return size;
     }
 
+    @Override
     public Date getLastUpdated() {
         return lastUpdated;
     }
 
+    @Override
     public void setLastUpdated(Date lastUpdated) {
         this.lastUpdated = lastUpdated;
     }
-    
+
     public void setMessageSize(long size) {
         this.size = size;
     }
-
-    public void setRemoteAddr(String remoteAddr) {
-        this.remoteAddr = remoteAddr;
-    }
-
-    public void setSender(MailAddress sender) {
-        this.sender = sender;
-    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/b3458187/mailet/base/src/test/java/org/apache/mailet/base/test/MailUtil.java
                
----------------------------------------------------------------------
diff --git a/mailet/base/src/test/java/org/apache/mailet/base/test/MailUtil.java \
b/mailet/base/src/test/java/org/apache/mailet/base/test/MailUtil.java index \
                e901b9f..070eef7 100644
--- a/mailet/base/src/test/java/org/apache/mailet/base/test/MailUtil.java
+++ b/mailet/base/src/test/java/org/apache/mailet/base/test/MailUtil.java
@@ -21,13 +21,11 @@ package org.apache.mailet.base.test;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
-import java.util.Arrays;
 
 import javax.mail.MessagingException;
 import javax.mail.Session;
 import javax.mail.internet.InternetAddress;
 import javax.mail.internet.MimeMessage;
-import javax.mail.internet.ParseException;
 
 import org.apache.mailet.Mail;
 import org.apache.mailet.MailAddress;
@@ -45,14 +43,20 @@ public class MailUtil {
         m_counter++;
         return "MockMailUtil-ID-" + m_counter;
     }
-    
-    public static FakeMail createMockMail2Recipients(MimeMessage m) throws \
                ParseException {
-        FakeMail mockedMail = new FakeMail();
-        mockedMail.setName(newId());
-        mockedMail.setMessage(m);
-        mockedMail.setRecipients(Arrays.asList(new \
                MailAddress("test@james.apache.org"),
-                new MailAddress("test2@james.apache.org")));
-        return mockedMail;
+
+    public static FakeMail createMockMail2Recipients() throws MessagingException {
+        return FakeMail.builder()
+                .name(newId())
+                .recipients(new MailAddress("test@james.apache.org"), new \
MailAddress("test2@james.apache.org")) +                .build();
+    }
+
+    public static FakeMail createMockMail2Recipients(MimeMessage message) throws \
MessagingException { +        return FakeMail.builder()
+                .name(newId())
+                .mimeMessage(message)
+                .recipients(new MailAddress("test@james.apache.org"), new \
MailAddress("test2@james.apache.org")) +                .build();
     }
 
     public static MimeMessage createMimeMessage() throws MessagingException {

http://git-wip-us.apache.org/repos/asf/james-project/blob/b3458187/mailet/standard/src/test/java/org/apache/james/transport/mailets/LogMessageTest.java
                
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/mailets/LogMessageTest.java \
b/mailet/standard/src/test/java/org/apache/james/transport/mailets/LogMessageTest.java
 index f26e3db..c61e093 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/mailets/LogMessageTest.java
                
+++ b/mailet/standard/src/test/java/org/apache/james/transport/mailets/LogMessageTest.java
 @@ -45,7 +45,6 @@ import org.junit.rules.ExpectedException;
 import org.slf4j.Logger;
 
 import com.google.common.base.Charsets;
-import com.google.common.collect.Lists;
 
 public class LogMessageTest {
 
@@ -84,7 +83,9 @@ public class LogMessageTest {
         MimeMessage message = new MimeMessage(Session.getDefaultInstance(new \
Properties()));  message.setSubject("subject");
         message.setText("This is a fake mail");
-        mailet.service(new FakeMail(message));
+        mailet.service(FakeMail.builder()
+                .mimeMessage(message)
+                .build());
 
         verify(logger).info("Logging mail null");
         verify(logger).info("\n");
@@ -210,11 +211,12 @@ public class LogMessageTest {
     private FakeMail createMail() throws MessagingException, AddressException {
         MimeMessage message = new MimeMessage(Session.getDefaultInstance(new \
                Properties()),
                 new ByteArrayInputStream("Subject: subject\r\nContent-Type: \
                text/plain\r\n\r\nThis is a fake mail".getBytes(Charsets.UTF_8)));
-        FakeMail mail = new FakeMail(message);
-        mail.setName("name");
-        mail.setState(Mail.DEFAULT);
-        mail.setRecipients(Lists.newArrayList(new \
                MailAddress("receiver@domain.com")));
-        mail.setSender(new MailAddress("sender@any.com"));
-        return mail;
+        return FakeMail.builder()
+                .mimeMessage(message)
+                .name("name")
+                .state(Mail.DEFAULT)
+                .recipient(new MailAddress("receiver@domain.com"))
+                .sender(new MailAddress("sender@any.com"))
+                .build();
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/b3458187/mailet/standard/src \
                /test/java/org/apache/james/transport/mailets/MailAttributesToMimeHeadersTest.java
                
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/mailets/MailAttributesToMimeHeadersTest.java \
b/mailet/standard/src/test/java/org/apache/james/transport/mailets/MailAttributesToMimeHeadersTest.java
 index 9931a17..5147d71 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/mailets/MailAttributesToMimeHeadersTest.java
                
+++ b/mailet/standard/src/test/java/org/apache/james/transport/mailets/MailAttributesToMimeHeadersTest.java
 @@ -55,7 +55,6 @@ public class MailAttributesToMimeHeadersTest {
     public void setup() {
         mailet = new MailAttributesToMimeHeaders();
     }
-    
 
     @Test
     public void shouldPutAttributesIntoHeadersWhenMappingDefined() throws \
MessagingException {

http://git-wip-us.apache.org/repos/asf/james-project/blob/b3458187/mailet/standard/src/test/java/org/apache/james/transport/mailets/NullTest.java
                
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/mailets/NullTest.java \
b/mailet/standard/src/test/java/org/apache/james/transport/mailets/NullTest.java \
                index 53fb282..9bd6ec6 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/mailets/NullTest.java
+++ b/mailet/standard/src/test/java/org/apache/james/transport/mailets/NullTest.java
@@ -40,11 +40,10 @@ public class NullTest {
 
     @Test
     public void shouldChangeStateToGhost() throws MessagingException {
-        FakeMail mail = new FakeMail();
+        FakeMail mail = FakeMail.builder().build();
         
         mailet.service(mail);
 
         assertThat(mail.getState()).isEqualTo("ghost");
     }
-
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/b3458187/mailet/standard/src/test/java/org/apache/james/transport/mailets/OnlyTextTest.java
                
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/mailets/OnlyTextTest.java \
b/mailet/standard/src/test/java/org/apache/james/transport/mailets/OnlyTextTest.java \
                index 2a54c55..1e3688c 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/mailets/OnlyTextTest.java
                
+++ b/mailet/standard/src/test/java/org/apache/james/transport/mailets/OnlyTextTest.java
 @@ -63,7 +63,9 @@ public class OnlyTextTest extends TestCase {
         message.setText("Questa \u00E8 una prova");
         message.saveChanges();
 
-        mail = new FakeMail(message);
+        mail = FakeMail.builder()
+                .mimeMessage(message)
+                .build();
         mailet.service(mail);
 
         assertEquals("prova", mail.getMessage().getSubject());
@@ -88,7 +90,9 @@ public class OnlyTextTest extends TestCase {
         message.setContent(mp);
         message.saveChanges();
 
-        mail = new FakeMail(message);
+        mail = FakeMail.builder()
+                .mimeMessage(message)
+                .build();
         mailet.service(mail);
 
         assertEquals("prova", mail.getMessage().getSubject());
@@ -119,7 +123,9 @@ public class OnlyTextTest extends TestCase {
         message.setContent(mpext);
         message.saveChanges();
 
-        mail = new FakeMail(message);
+        mail = FakeMail.builder()
+                .mimeMessage(message)
+                .build();
         mailet.service(mail);
 
         assertEquals("prova", mail.getMessage().getSubject());
@@ -134,7 +140,9 @@ public class OnlyTextTest extends TestCase {
                 "text/html");
         message.saveChanges();
 
-        mail = new FakeMail(message);
+        mail = FakeMail.builder()
+                .mimeMessage(message)
+                .build();
         mailet.service(mail);
 
         assertEquals("prova", mail.getMessage().getSubject());
@@ -157,7 +165,9 @@ public class OnlyTextTest extends TestCase {
         message.setContent(mp);
         message.saveChanges();
 
-        mail = new FakeMail(message);
+        mail = FakeMail.builder()
+                .mimeMessage(message)
+                .build();
         mailet.service(mail);
 
         assertEquals("prova", mail.getMessage().getSubject());

http://git-wip-us.apache.org/repos/asf/james-project/blob/b3458187/mailet/standard/src/test/java/org/apache/james/transport/mailets/RemoveAllMailAttributesTest.java
                
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/mailets/RemoveAllMailAttributesTest.java \
b/mailet/standard/src/test/java/org/apache/james/transport/mailets/RemoveAllMailAttributesTest.java
 index a6205e3..c6e7ab8 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/mailets/RemoveAllMailAttributesTest.java
                
+++ b/mailet/standard/src/test/java/org/apache/james/transport/mailets/RemoveAllMailAttributesTest.java
 @@ -51,7 +51,7 @@ public class RemoveAllMailAttributesTest {
 
     @Test
     public void serviceShouldRemoveAllMailAttributes() throws MessagingException {
-        mail = MailUtil.createMockMail2Recipients(null);
+        mail = MailUtil.createMockMail2Recipients();
         mail.setAttribute("org.apache.james.test.junit", "true");
 
         mailet.service(mail);
@@ -61,7 +61,7 @@ public class RemoveAllMailAttributesTest {
 
     @Test
     public void serviceShouldRemoveAllMailAttributesWhenNone() throws \
                MessagingException {
-        mail = MailUtil.createMockMail2Recipients(null);
+        mail = MailUtil.createMockMail2Recipients();
 
         mailet.service(mail);
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/b3458187/mailet/standard/src/test/java/org/apache/james/transport/mailets/RemoveMailAttributeTest.java
                
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/mailets/RemoveMailAttributeTest.java \
b/mailet/standard/src/test/java/org/apache/james/transport/mailets/RemoveMailAttributeTest.java
 index 05eaf69..4c73843 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/mailets/RemoveMailAttributeTest.java
                
+++ b/mailet/standard/src/test/java/org/apache/james/transport/mailets/RemoveMailAttributeTest.java
 @@ -20,7 +20,6 @@
 package org.apache.james.transport.mailets;
 
 import javax.mail.MessagingException;
-import javax.mail.internet.ParseException;
 
 import org.apache.mailet.Mail;
 import org.apache.mailet.Mailet;
@@ -36,11 +35,11 @@ public class RemoveMailAttributeTest {
 
     public static final String MAIL_ATTRIBUTE_NAME2 = \
"org.apache.james.test.junit2";  
-    private Mail setupMockedMail() throws ParseException {
-        Mail mockedMail = new FakeMail();
-        mockedMail.setAttribute(MAIL_ATTRIBUTE_NAME1, "true");
-        mockedMail.setAttribute(MAIL_ATTRIBUTE_NAME2, "true");
-        return mockedMail;
+    private Mail createMail() throws MessagingException {
+        return FakeMail.builder()
+                .attribute(MAIL_ATTRIBUTE_NAME1, "true")
+                .attribute(MAIL_ATTRIBUTE_NAME2, "true")
+                .build();
     }
 
     private Mailet setupMailet(String attribute) throws MessagingException {
@@ -58,7 +57,7 @@ public class RemoveMailAttributeTest {
 
     @Test
     public void testRemoveMailAttribute() throws MessagingException {
-        Mail m = setupMockedMail();
+        Mail m = createMail();
         Mailet mailet = setupMailet(MAIL_ATTRIBUTE_NAME1);
 
         // check if the mail has a attribute

http://git-wip-us.apache.org/repos/asf/james-project/blob/b3458187/mailet/standard/src/test/java/org/apache/james/transport/mailets/RemoveMimeHeaderTest.java
                
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/mailets/RemoveMimeHeaderTest.java \
b/mailet/standard/src/test/java/org/apache/james/transport/mailets/RemoveMimeHeaderTest.java
 index 1b56e85..8bc5c5a 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/mailets/RemoveMimeHeaderTest.java
                
+++ b/mailet/standard/src/test/java/org/apache/james/transport/mailets/RemoveMimeHeaderTest.java
 @@ -153,9 +153,9 @@ public class RemoveMimeHeaderTest {
         mailet.service(mail);
     }
 
-    private Mail createMail(MimeMessage message) {
-        Mail mail = new FakeMail();
-        mail.setMessage(message);
-        return mail;
+    private Mail createMail(MimeMessage message) throws MessagingException {
+        return FakeMail.builder()
+                .mimeMessage(message)
+                .build();
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/b3458187/mailet/standard/src/test/java/org/apache/james/transport/mailets/ReplaceContentTest.java
                
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/mailets/ReplaceContentTest.java \
b/mailet/standard/src/test/java/org/apache/james/transport/mailets/ReplaceContentTest.java
 index a258fb8..c13ec0a 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/mailets/ReplaceContentTest.java
                
+++ b/mailet/standard/src/test/java/org/apache/james/transport/mailets/ReplaceContentTest.java
 @@ -65,7 +65,9 @@ public class ReplaceContentTest {
         MimeMessage message = new MimeMessage(Session.getDefaultInstance(new \
Properties()));  message.setSubject("one test");
 
-        Mail mail = new FakeMail(message);
+        Mail mail = FakeMail.builder()
+                .mimeMessage(message)
+                .build();
         mailet.service(mail);
 
         assertThat(mail.getMessage().getSubject()).isEqualTo("ane TEsT");
@@ -86,7 +88,9 @@ public class ReplaceContentTest {
         message.setText("This is one simple test/ \u00E8 one simple test.\n"
                 + "Blo blo blo blo.\n");
 
-        Mail mail = new FakeMail(message);
+        Mail mail = FakeMail.builder()
+                .mimeMessage(message)
+                .build();
         mailet.service(mail);
 
         assertThat(mail.getMessage().getContent()).isEqualTo("This is ane simple \
TEsT, e' ane simple P.\n" @@ -101,7 +105,9 @@ public class ReplaceContentTest {
         MimeMessage message = new MimeMessage(Session.getDefaultInstance(new \
Properties()));  message.setText("aaa");
 
-        Mail mail = new FakeMail(message);
+        Mail mail = FakeMail.builder()
+                .mimeMessage(message)
+                .build();
         mailet.service(mail);
 
         assertThat(mail.getMessage().getContent()).isEqualTo("aaa");
@@ -115,7 +121,9 @@ public class ReplaceContentTest {
         MimeMessage message = new MimeMessage(Session.getDefaultInstance(new \
Properties()));  message.setSubject("re: r:ri:one test");
 
-        Mail mail = new FakeMail(message);
+        Mail mail = FakeMail.builder()
+                .mimeMessage(message)
+                .build();
         mailet.service(mail);
 
         assertThat(mail.getMessage().getSubject()).isEqualTo("Re: Re: Re: one \
test"); @@ -133,7 +141,9 @@ public class ReplaceContentTest {
                 + "part of\r\n" + "message\\ that\\0 must0 be\r\n"
                 + "quoted. Let's see if\r\n" + "he can do it.");
 
-        Mail mail = new FakeMail(message);
+        Mail mail = FakeMail.builder()
+                .mimeMessage(message)
+                .build();
         mailet.service(mail);
 
         assertThat(mail.getMessage().getContent()).isEqualTo("Test.\r\n" + "\r\n" + \
">part of\r\n" @@ -151,7 +161,9 @@ public class ReplaceContentTest {
         message.setSubject("one test");
         message.setText("Replacement \u2026 one test \u2026");
 
-        Mail mail = new FakeMail(message);
+        Mail mail = FakeMail.builder()
+                .mimeMessage(message)
+                .build();
         mailet.service(mail);
 
         assertThat(mail.getMessage().getContent()).isEqualTo("Replacement ... one \
test ..."); @@ -173,7 +185,9 @@ public class ReplaceContentTest {
         MimeMessage message = new MimeMessage(Session.getDefaultInstance(new \
Properties()),  new ByteArrayInputStream(messageSource.getBytes()));
 
-        Mail mail = new FakeMail(message);
+        Mail mail = FakeMail.builder()
+                .mimeMessage(message)
+                .build();
         mailet.service(mail);
 
         assertThat(mail.getMessage().getContent()).isEqualTo("\"test\" with th' \
apex"); @@ -190,7 +204,9 @@ public class ReplaceContentTest {
         message.setText("This is one simple test/ \u00E8 one simple test.\n"
                 + "Blo blo blo blo.\n");
 
-        Mail mail = new FakeMail(message);
+        Mail mail = FakeMail.builder()
+                .mimeMessage(message)
+                .build();
         mailet.service(mail);
 
         assertThat(mail.getMessage().getContentType()).isEqualTo("text/plain; \
charset=UTF-8");

http://git-wip-us.apache.org/repos/asf/james-project/blob/b3458187/mailet/standard/src/test/java/org/apache/james/transport/mailets/SetMailAttributeTest.java
                
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/mailets/SetMailAttributeTest.java \
b/mailet/standard/src/test/java/org/apache/james/transport/mailets/SetMailAttributeTest.java
 index 009d3cd..83804fa 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/mailets/SetMailAttributeTest.java
                
+++ b/mailet/standard/src/test/java/org/apache/james/transport/mailets/SetMailAttributeTest.java
 @@ -22,7 +22,11 @@ package org.apache.james.transport.mailets;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
+import java.util.Properties;
+
 import javax.mail.MessagingException;
+import javax.mail.Session;
+import javax.mail.internet.MimeMessage;
 
 import org.apache.mailet.Mail;
 import org.apache.mailet.Mailet;
@@ -53,7 +57,7 @@ public class SetMailAttributeTest {
 
         mailet.init(mailetConfig);
 
-        Mail mail = MailUtil.createMockMail2Recipients(null);
+        Mail mail = MailUtil.createMockMail2Recipients(new \
MimeMessage(Session.getDefaultInstance(new Properties())));  
         mailet.service(mail);
 
@@ -67,7 +71,7 @@ public class SetMailAttributeTest {
      
         mailet.init(mailetConfig);
 
-        Mail mail = MailUtil.createMockMail2Recipients(null);
+        Mail mail = MailUtil.createMockMail2Recipients(new \
MimeMessage(Session.getDefaultInstance(new Properties())));  
         mailet.service(mail);
 
@@ -81,7 +85,7 @@ public class SetMailAttributeTest {
         
         mailet.init(mailetConfig);
         
-        Mail mail = MailUtil.createMockMail2Recipients(null);
+        Mail mail = MailUtil.createMockMail2Recipients(new \
MimeMessage(Session.getDefaultInstance(new Properties())));  \
mail.setAttribute("org.apache.james.junit1", "foo");  
         mailet.service(mail);

http://git-wip-us.apache.org/repos/asf/james-project/blob/b3458187/mailet/standard/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
                
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java \
b/mailet/standard/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
 index a36bc11..f103e41 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
                
+++ b/mailet/standard/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
 @@ -74,8 +74,9 @@ public class StripAttachmentTest {
         message.setContent(mm);
         message.saveChanges();
 
-        Mail mail = new FakeMail();
-        mail.setMessage(message);
+        Mail mail = FakeMail.builder()
+                .mimeMessage(message)
+                .build();
 
         mailet.service(mail);
 
@@ -148,8 +149,9 @@ public class StripAttachmentTest {
         message.setContent(mm);
         message.saveChanges();
 
-        Mail mail = new FakeMail();
-        mail.setMessage(message);
+        Mail mail = FakeMail.builder()
+                .mimeMessage(message)
+                .build();
 
         mailet.service(mail);
 
@@ -211,8 +213,9 @@ public class StripAttachmentTest {
         // message.writeTo(System.out);
         // System.out.println("--------------------------\n\n\n");
 
-        Mail mail = new FakeMail();
-        mail.setMessage(message);
+        Mail mail = FakeMail.builder()
+                .mimeMessage(message)
+                .build();
 
         mailet.service(mail);
 
@@ -290,8 +293,9 @@ public class StripAttachmentTest {
         message.setSubject("test");
         message.setContent(mm);
         message.saveChanges();
-        Mail mail = new FakeMail();
-        mail.setMessage(message);
+        Mail mail = FakeMail.builder()
+                .mimeMessage(message)
+                .build();
 
         Assert.assertTrue(mail.getMessage().getContent() instanceof MimeMultipart);
         Assert.assertEquals(3, ((MimeMultipart) mail.getMessage().getContent())

http://git-wip-us.apache.org/repos/asf/james-project/blob/b3458187/mailet/standard/src/test/java/org/apache/james/transport/matchers/AbstractHasMailAttributeTest.java
                
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/matchers/AbstractHasMailAttributeTest.java \
b/mailet/standard/src/test/java/org/apache/james/transport/matchers/AbstractHasMailAttributeTest.java
 index 7fd5e51..b6fcfc0 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/matchers/AbstractHasMailAttributeTest.java
                
+++ b/mailet/standard/src/test/java/org/apache/james/transport/matchers/AbstractHasMailAttributeTest.java
 @@ -23,8 +23,6 @@ package org.apache.james.transport.matchers;
 import java.util.Collection;
 
 import javax.mail.MessagingException;
-import javax.mail.internet.MimeMessage;
-import javax.mail.internet.ParseException;
 
 import org.apache.mailet.MailAddress;
 import org.apache.mailet.Matcher;
@@ -37,7 +35,6 @@ import org.apache.mailet.base.test.MailUtil;
 import junit.framework.TestCase;
 
 public abstract class AbstractHasMailAttributeTest extends TestCase {
-    protected MimeMessage mockedMimeMessage;
 
     protected FakeMail mockedMail;
 
@@ -63,8 +60,8 @@ public abstract class AbstractHasMailAttributeTest extends TestCase \
{  this.mailAttributeValue = mailAttributeValue;
     }
 
-    protected void setupMockedMail(MimeMessage m) throws ParseException {
-        mockedMail = MailUtil.createMockMail2Recipients(m);
+    protected void setupMockedMail() throws MessagingException {
+        mockedMail = MailUtil.createMockMail2Recipients();
         mockedMail.setAttribute(mailAttributeName,
                 mailAttributeValue);
     }
@@ -95,7 +92,7 @@ public abstract class AbstractHasMailAttributeTest extends TestCase \
{  }
 
     protected void setupAll() throws MessagingException {
-        setupMockedMail(mockedMimeMessage);
+        setupMockedMail();
         setupMatcher();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/b3458187/mailet/standard/src/test/java/org/apache/james/transport/matchers/AbstractRecipientIsTest.java
                
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/matchers/AbstractRecipientIsTest.java \
b/mailet/standard/src/test/java/org/apache/james/transport/matchers/AbstractRecipientIsTest.java
 index b94fb12..0b55958 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/matchers/AbstractRecipientIsTest.java
                
+++ b/mailet/standard/src/test/java/org/apache/james/transport/matchers/AbstractRecipientIsTest.java
 @@ -50,9 +50,10 @@ public abstract class AbstractRecipientIsTest extends TestCase {
         this.recipients = recipients;
     }
 
-    protected void setupMockedMail() {
-        mockedMail = new FakeMail();
-        mockedMail.setRecipients(Arrays.asList(recipients));
+    protected void setupMockedMail() throws MessagingException {
+        mockedMail = FakeMail.builder()
+                .recipients(Arrays.asList(recipients))
+                .build();
 
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/b3458187/mailet/standard/src \
/test/java/org/apache/james/transport/matchers/HasMailAttributeWithValueRegexTest.java
                
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/matchers/HasMailAttributeWithValueRegexTest.java \
b/mailet/standard/src/test/java/org/apache/james/transport/matchers/HasMailAttributeWithValueRegexTest.java
 index d37c08a..71e4e5b 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/matchers/HasMailAttributeWithValueRegexTest.java
                
+++ b/mailet/standard/src/test/java/org/apache/james/transport/matchers/HasMailAttributeWithValueRegexTest.java
 @@ -81,7 +81,7 @@ public class HasMailAttributeWithValueRegexTest extends
         String exception = "Malformed pattern: " + invalidRegex;
 
         setRegex(invalidRegex);
-        setupMockedMail(mockedMimeMessage);
+        setupMockedMail();
 
         try {
             setupMatcher();

http://git-wip-us.apache.org/repos/asf/james-project/blob/b3458187/mailet/standard/src \
                /test/java/org/apache/james/transport/matchers/HasMailAttributeWithValueTest.java
                
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/matchers/HasMailAttributeWithValueTest.java \
b/mailet/standard/src/test/java/org/apache/james/transport/matchers/HasMailAttributeWithValueTest.java
 index cc7fabb..88f60e7 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/matchers/HasMailAttributeWithValueTest.java
                
+++ b/mailet/standard/src/test/java/org/apache/james/transport/matchers/HasMailAttributeWithValueTest.java
 @@ -44,7 +44,7 @@ public class HasMailAttributeWithValueTest extends \
AbstractHasMailAttributeTest  // test if the mail attribute was not matched cause \
                diffrent value
     public void testAttributeIsNotMatchedCauseValue() throws MessagingException {
         setMailAttributeName(MAIL_ATTRIBUTE_NAME);
-        setupMockedMail(mockedMimeMessage);
+        setupMockedMail();
         setupMatcher();
 
         Collection<MailAddress> matchedRecipients = matcher.match(mockedMail);

http://git-wip-us.apache.org/repos/asf/james-project/blob/b3458187/mailet/standard/src/test/java/org/apache/james/transport/matchers/IsSingleRecipientTest.java
                
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/matchers/IsSingleRecipientTest.java \
b/mailet/standard/src/test/java/org/apache/james/transport/matchers/IsSingleRecipientTest.java
 index bd22a8b..c660de9 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/matchers/IsSingleRecipientTest.java
                
+++ b/mailet/standard/src/test/java/org/apache/james/transport/matchers/IsSingleRecipientTest.java
 @@ -60,7 +60,7 @@ public class IsSingleRecipientTest {
 
     @Test
     public void matchShouldNotMatchMailWithNotRecipients() throws MessagingException \
                {
-        FakeMail fakeMail = FakeMail.builder().build();
+        FakeMail fakeMail = FakeMail.defaultFakeMail();
 
         assertThat(matcher.match(fakeMail)).isNull();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/b3458187/mailet/standard/src/test/java/org/apache/james/transport/matchers/RecipientIsLocalTest.java
                
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/matchers/RecipientIsLocalTest.java \
b/mailet/standard/src/test/java/org/apache/james/transport/matchers/RecipientIsLocalTest.java
 index 1506e2e..7fbb1fa 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/matchers/RecipientIsLocalTest.java
                
+++ b/mailet/standard/src/test/java/org/apache/james/transport/matchers/RecipientIsLocalTest.java
 @@ -31,8 +31,6 @@ import org.apache.mailet.base.test.FakeMatcherConfig;
 import org.junit.Before;
 import org.junit.Test;
 
-import com.google.common.collect.ImmutableList;
-
 public class RecipientIsLocalTest {
 
     public static final String MATCHER_NAME = "matcherName";
@@ -50,8 +48,9 @@ public class RecipientIsLocalTest {
 
         mailAddress1 = new MailAddress("mail1@domain.com");
         mailAddress2 = new MailAddress("mail2@domain.com");
-        mail = new FakeMail();
-        mail.setRecipients(ImmutableList.of(mailAddress1, mailAddress2));
+        mail = FakeMail.builder()
+                .recipients(mailAddress1, mailAddress2)
+                .build();
     }
 
     @Test
@@ -80,6 +79,6 @@ public class RecipientIsLocalTest {
 
     @Test
     public void matchShouldNotMatchMailWithNoRecipient() throws Exception {
-        assertThat(testee.match(new FakeMail())).isEmpty();
+        assertThat(testee.match(FakeMail.defaultFakeMail())).isEmpty();
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/b3458187/mailet/standard/src/test/java/org/apache/james/transport/matchers/SMTPIsAuthNetworkTest.java
                
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/matchers/SMTPIsAuthNetworkTest.java \
b/mailet/standard/src/test/java/org/apache/james/transport/matchers/SMTPIsAuthNetworkTest.java
 index d3a2fb4..b4ecee6 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/matchers/SMTPIsAuthNetworkTest.java
                
+++ b/mailet/standard/src/test/java/org/apache/james/transport/matchers/SMTPIsAuthNetworkTest.java
 @@ -23,7 +23,6 @@ package org.apache.james.transport.matchers;
 import java.util.Collection;
 
 import javax.mail.MessagingException;
-import javax.mail.internet.ParseException;
 
 import org.apache.mailet.MailAddress;
 import org.apache.mailet.Matcher;
@@ -46,8 +45,8 @@ public class SMTPIsAuthNetworkTest {
         this.isAuthorized = isAuthorized;
     }
 
-    private void setupMockedMail() throws ParseException {
-        mockedMail = MailUtil.createMockMail2Recipients(null);
+    private void setupMockedMail() throws MessagingException {
+        mockedMail = MailUtil.createMockMail2Recipients();
         if (isAuthorized) {
             String MAIL_ATTRIBUTE_NAME = "org.apache.james.SMTPIsAuthNetwork";
             mockedMail.setAttribute(MAIL_ATTRIBUTE_NAME, "true");

http://git-wip-us.apache.org/repos/asf/james-project/blob/b3458187/server/container/gu \
ice/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 34133e6..eaf22b8 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
 @@ -89,18 +89,21 @@ public class MemoryMailQueueFactoryTest {
 
     @Test
     public void dequeueShouldWork() throws Exception{
-        Mail mail = new FakeMail();
-        mail.setName(NAME_1);
+        Mail mail = FakeMail.builder()
+                .name(NAME_1)
+                .build();
         memoryMailQueueFactory.getQueue(KEY).enQueue(mail);
         assertThat(memoryMailQueueFactory.getQueue(KEY).deQueue().getMail().getName()).startsWith(NAME_1);
  }
 
     @Test
     public void dequeueShouldWorkWithMultipleMessages() throws Exception{
-        Mail mail1 = new FakeMail();
-        Mail mail2 = new FakeMail();
-        mail1.setName(NAME_1);
-        mail2.setName(NAME_2);
+        Mail mail1 = FakeMail.builder()
+                .name(NAME_1)
+                .build();
+        Mail mail2 = FakeMail.builder()
+                .name(NAME_2)
+                .build();
         memoryMailQueueFactory.getQueue(KEY).enQueue(mail1);
         memoryMailQueueFactory.getQueue(KEY).enQueue(mail2);
         assertThat(memoryMailQueueFactory.getQueue(KEY).deQueue().getMail().getName()).startsWith(NAME_2);
 @@ -110,8 +113,9 @@ public class MemoryMailQueueFactoryTest {
     @Test(timeout = 20000)
     public void deQueueShouldWaitForAMailToBeEnqueued() throws Exception {
         CountDownLatch latch = new CountDownLatch(1);
-        Mail mail = new FakeMail();
-        mail.setName(NAME_1);
+        Mail mail = FakeMail.builder()
+                .name(NAME_1)
+                .build();
         executorService.submit(() -> {
             try {
                 latch.await();

http://git-wip-us.apache.org/repos/asf/james-project/blob/b3458187/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/BounceTest.java
                
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/BounceTest.java \
b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/BounceTest.java
 index a9f8bed..879935a 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/BounceTest.java
                
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/BounceTest.java
 @@ -66,10 +66,11 @@ public class BounceTest {
 
     @Test
     public void bounceShouldReturnAMailToTheSenderWithoutAttributes() throws \
                Exception {
-        FakeMail mail = new FakeMail();
-        mail.setSender(senderMailAddress);
-        mail.setName(MAILET_NAME);
-        mail.setRecipients(Lists.newArrayList(recipientMailAddress));
+        FakeMail mail = FakeMail.builder()
+                .sender(senderMailAddress)
+                .name(MAILET_NAME)
+                .recipient(recipientMailAddress)
+                .build();
         MimeMessage mimeMessage = new MimeMessage(Session.getDefaultInstance(new \
Properties()));  mimeMessage.setText("My content");
         mail.setMessage(mimeMessage);

http://git-wip-us.apache.org/repos/asf/james-project/blob/b3458187/server/mailet/maile \
                ts/src/test/java/org/apache/james/transport/mailets/RecipientRewriteTableTest.java
                
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/RecipientRewriteTableTest.java \
b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/RecipientRewriteTableTest.java
 index 42b0a57..766f4c9 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/RecipientRewriteTableTest.java
                
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/RecipientRewriteTableTest.java
 @@ -22,7 +22,6 @@ import static \
org.apache.james.transport.mailets.RecipientRewriteTableMock.mapFr  import static \
org.apache.james.transport.mailets.RecipientRewriteTableMock.rewriteTableMock;  \
import static org.junit.Assert.assertEquals;  
-import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.Properties;
 
@@ -30,6 +29,7 @@ import javax.mail.Address;
 import javax.mail.Message;
 import javax.mail.MessagingException;
 import javax.mail.Session;
+import javax.mail.internet.AddressException;
 import javax.mail.internet.MimeMessage;
 
 import org.apache.mailet.Mail;
@@ -42,6 +42,10 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
+import com.google.common.base.Function;
+import com.google.common.base.Throwables;
+import com.google.common.collect.FluentIterable;
+
 public class RecipientRewriteTableTest {
 
     private static final Session NO_SESSION = null;
@@ -93,14 +97,21 @@ public class RecipientRewriteTableTest {
      * @throws MessagingException
      */
     private Mail createMail(String[] recipients) throws MessagingException {
-        Mail mail = new FakeMail();
-        ArrayList<MailAddress> a = new ArrayList<MailAddress>(recipients.length);
-        for (String recipient : recipients) {
-            a.add(new MailAddress(recipient));
-        }
-        mail.setRecipients(a);
-        mail.setMessage(new MimeMessage(NO_SESSION));
-        return mail;
+        return FakeMail.builder()
+                .recipients(FluentIterable.of(recipients)
+                        .transform(new Function<String, MailAddress>() {
+
+                            @Override
+                            public MailAddress apply(String recipient) {
+                                try {
+                                    return new MailAddress(recipient);
+                                } catch (AddressException e) {
+                                    throw Throwables.propagate(e);
+                                }
+                            }
+                        }).toList())
+                .mimeMessage(new MimeMessage(NO_SESSION))
+                .build();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/b3458187/server/mailet/maile \
                ts/src/test/java/org/apache/james/transport/mailets/delivery/LocalDeliveryTest.java
                
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/LocalDeliveryTest.java \
b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/LocalDeliveryTest.java
 index 7104e67..b026327 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/LocalDeliveryTest.java
                
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/LocalDeliveryTest.java
 @@ -25,7 +25,21 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-import com.google.common.collect.Lists;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Date;
+import java.util.Properties;
+
+import javax.activation.DataHandler;
+import javax.mail.Flags;
+import javax.mail.MessagingException;
+import javax.mail.Session;
+import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeBodyPart;
+import javax.mail.internet.MimeMessage;
+import javax.mail.internet.MimeMultipart;
+import javax.mail.util.ByteArrayDataSource;
+
 import org.apache.james.domainlist.api.DomainList;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
@@ -46,20 +60,6 @@ import org.mockito.invocation.InvocationOnMock;
 import org.mockito.stubbing.Answer;
 import org.slf4j.Logger;
 
-import javax.activation.DataHandler;
-import javax.mail.Flags;
-import javax.mail.MessagingException;
-import javax.mail.Session;
-import javax.mail.internet.InternetAddress;
-import javax.mail.internet.MimeBodyPart;
-import javax.mail.internet.MimeMessage;
-import javax.mail.internet.MimeMultipart;
-import javax.mail.util.ByteArrayDataSource;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Date;
-import java.util.Properties;
-
 public class LocalDeliveryTest {
 
     private UsersRepository usersRepository;
@@ -178,10 +178,11 @@ public class LocalDeliveryTest {
         multipart.addBodyPart(scriptPart);
         message.setContent(multipart);
         message.saveChanges();
-        Mail mail = new FakeMail(message);
-        mail.setState(Mail.DEFAULT);
-        mail.setRecipients(Lists.newArrayList(new \
                MailAddress("receiver@domain.com")));
-        return mail;
+        return FakeMail.builder()
+                .mimeMessage(message)
+                .state(Mail.DEFAULT)
+                .recipient(new MailAddress("receiver@domain.com"))
+                .build();
     }
 
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/b3458187/server/mailet/maile \
                ts/src/test/java/org/apache/james/transport/mailets/delivery/SieveMailetTest.java
                
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveMailetTest.java \
b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveMailetTest.java
 index d9800f4..575acea 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveMailetTest.java
                
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveMailetTest.java
 @@ -935,11 +935,12 @@ public class SieveMailetTest {
             message.addHeader(header.name, header.value);
         }
         message.saveChanges();
-        FakeMail mail = new FakeMail(message);
-        mail.setState(Mail.DEFAULT);
-        mail.setRecipients(Lists.newArrayList(new \
                MailAddress("receiver@domain.com")));
-        mail.setSender(new MailAddress("sender@any.com"));
-        return mail;
+        return FakeMail.builder()
+                .mimeMessage(message)
+                .state(Mail.DEFAULT)
+                .recipient(new MailAddress("receiver@domain.com"))
+                .sender(new MailAddress("sender@any.com"))
+                .build();
     }
 
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/b3458187/server/mailet/maile \
ts/src/test/java/org/apache/james/transport/mailets/delivery/ToRecipientFolderTest.java
                
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/ToRecipientFolderTest.java \
b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/ToRecipientFolderTest.java
 index c9a0db3..350d4f5 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/ToRecipientFolderTest.java
                
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/ToRecipientFolderTest.java
 @@ -58,8 +58,6 @@ import org.junit.Before;
 import org.junit.Test;
 import org.slf4j.Logger;
 
-import com.google.common.collect.Lists;
-
 public class ToRecipientFolderTest {
 
     public static final String USER = "receiver@domain.com";
@@ -182,10 +180,11 @@ public class ToRecipientFolderTest {
         multipart.addBodyPart(scriptPart);
         message.setContent(multipart);
         message.saveChanges();
-        Mail mail = new FakeMail(message);
-        mail.setState(Mail.DEFAULT);
-        mail.setRecipients(Lists.newArrayList(new MailAddress(USER)));
-        return mail;
+        return FakeMail.builder()
+                .mimeMessage(message)
+                .state(Mail.DEFAULT)
+                .recipient(new MailAddress(USER))
+                .build();
     }
 
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/b3458187/server/mailet/maile \
ts/src/test/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailetTestCase.java
                
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailetTestCase.java \
b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailetTestCase.java
 index 229294b..0a1fbf9 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailetTestCase.java
                
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailetTestCase.java
 @@ -473,11 +473,11 @@ public class ManageSieveMailetTestCase {
     }
 
     private Mail createUnauthenticatedMail(MimeMessage message) throws Exception {
-        FakeMail mail = new FakeMail();
-        mail.setMessage(message);
-        mail.setSender(new MailAddress(USER));
-        mail.setRecipients(Lists.newArrayList(new MailAddress(SIEVE_LOCALHOST)));
-        return mail;
+        return FakeMail.builder()
+                .mimeMessage(message)
+                .sender(new MailAddress(USER))
+                .recipient(new MailAddress(SIEVE_LOCALHOST))
+                .build();
     }
 
     private Mail createAuthentificatedMail(MimeMessage message) throws Exception {

http://git-wip-us.apache.org/repos/asf/james-project/blob/b3458187/server/mailet/mailets/src/test/java/org/apache/james/transport/matchers/InSpammerBlacklistTest.java
                
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/matchers/InSpammerBlacklistTest.java \
b/server/mailet/mailets/src/test/java/org/apache/james/transport/matchers/InSpammerBlacklistTest.java
 index 1ccefd6..4fd7ee7 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/matchers/InSpammerBlacklistTest.java
                
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/matchers/InSpammerBlacklistTest.java
 @@ -24,14 +24,13 @@ import static org.junit.Assert.assertNull;
 
 import java.net.InetAddress;
 import java.net.UnknownHostException;
-import java.util.Arrays;
 import java.util.Collection;
 
 import javax.mail.MessagingException;
-import javax.mail.internet.ParseException;
 
 import org.apache.james.dnsservice.api.DNSService;
 import org.apache.james.dnsservice.api.mock.MockDNSService;
+import org.apache.mailet.Mail;
 import org.apache.mailet.MailAddress;
 import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.FakeMailContext;
@@ -40,7 +39,6 @@ import org.junit.Test;
 
 public class InSpammerBlacklistTest {
 
-    private FakeMail mockedMail;
     private InSpammerBlacklist matcher;
     private final static String BLACKLIST = "my.black.list.";
     private final static StringBuffer LISTED_HOST = new \
StringBuffer("111.222.111.222"); @@ -59,10 +57,11 @@ public class \
InSpammerBlacklistTest {  };
     }
 
-    private void setupMockedMail(String remoteAddr) throws ParseException {
-        mockedMail = new FakeMail();
-        mockedMail.setRemoteAddr(remoteAddr);
-        mockedMail.setRecipients(Arrays.asList(new MailAddress("test@email")));
+    private Mail createMail(String remoteAddr) throws MessagingException {
+        return FakeMail.builder()
+                .remoteAddr(remoteAddr)
+                .recipient(new MailAddress("test@email"))
+                .build();
 
     }
 
@@ -76,21 +75,21 @@ public class InSpammerBlacklistTest {
 
     @Test
     public void testInBlackList() throws MessagingException {
-        setupMockedMail(LISTED_HOST.toString());
+        Mail mail = createMail(LISTED_HOST.toString());
         setupMatcher(BLACKLIST);
 
-        Collection<MailAddress> matchedRecipients = matcher.match(mockedMail);
+        Collection<MailAddress> matchedRecipients = matcher.match(mail);
 
         assertNotNull(matchedRecipients);
-        assertEquals(matchedRecipients.size(), mockedMail.getRecipients().size());
+        assertEquals(matchedRecipients.size(), mail.getRecipients().size());
     }
 
     @Test
     public void testNotInBlackList() throws MessagingException {
-        setupMockedMail("212.12.14.1");
+        Mail mail = createMail("212.12.14.1");
         setupMatcher(BLACKLIST);
 
-        Collection<MailAddress> matchedRecipients = matcher.match(mockedMail);
+        Collection<MailAddress> matchedRecipients = matcher.match(mail);
 
         assertNull(matchedRecipients);
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/b3458187/server/mailet/maile \
                ts/src/test/java/org/apache/james/transport/matchers/RemoteAddrInNetworkTest.java
                
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/matchers/RemoteAddrInNetworkTest.java \
b/server/mailet/mailets/src/test/java/org/apache/james/transport/matchers/RemoteAddrInNetworkTest.java
 index 8c67ee6..20dfd17 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/matchers/RemoteAddrInNetworkTest.java
                
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/matchers/RemoteAddrInNetworkTest.java
 @@ -52,14 +52,14 @@ public class RemoteAddrInNetworkTest {
         matcher.setDNSService(dnsServer);
         matcher.init(matcherConfig);
         testRecipient = new MailAddress("test@james.apache.org");
-        fakeMail = FakeMail.builder()
-                .recipient(testRecipient)
-                .build();
     }
 
     @Test
     public void shouldMatchWhenOnSameNetwork() throws MessagingException {
-        fakeMail.setRemoteAddr("192.168.200.1");
+        fakeMail = FakeMail.builder()
+                .recipient(testRecipient)
+                .remoteAddr("192.168.200.1")
+                .build();
 
         Collection<MailAddress> actual = matcher.match(fakeMail);
 
@@ -68,7 +68,10 @@ public class RemoteAddrInNetworkTest {
 
     @Test
     public void shouldNotMatchWhenOnDifferentNetwork() throws MessagingException {
-        fakeMail.setRemoteAddr("192.168.1.1");
+        fakeMail = FakeMail.builder()
+                .recipient(testRecipient)
+                .remoteAddr("192.168.1.1")
+                .build();
 
         Collection<MailAddress> actual = matcher.match(fakeMail);
 
@@ -81,6 +84,10 @@ public class RemoteAddrInNetworkTest {
         RemoteAddrInNetwork testee = new RemoteAddrInNetwork();
         testee.init(matcherConfig);
 
+        fakeMail = FakeMail.builder()
+                .recipient(testRecipient)
+                .build();
+
         Collection<MailAddress> actual = testee.match(fakeMail);
 
         assertThat(actual).isNull();
@@ -88,7 +95,10 @@ public class RemoteAddrInNetworkTest {
 
     @Test
     public void shouldNotMatchWhenInvalidAddress() throws MessagingException {
-        fakeMail.setRemoteAddr("invalid");
+        fakeMail = FakeMail.builder()
+                .recipient(testRecipient)
+                .remoteAddr("invalid")
+                .build();
 
         Collection<MailAddress> actual = matcher.match(fakeMail);
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/b3458187/server/mailet/maile \
                ts/src/test/java/org/apache/james/transport/matchers/RemoteAddrNotInNetworkTest.java
                
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/matchers/RemoteAddrNotInNetworkTest.java \
b/server/mailet/mailets/src/test/java/org/apache/james/transport/matchers/RemoteAddrNotInNetworkTest.java
 index c1a4dbd..fe7f50e 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/matchers/RemoteAddrNotInNetworkTest.java
                
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/matchers/RemoteAddrNotInNetworkTest.java
 @@ -38,6 +38,7 @@ public class RemoteAddrNotInNetworkTest {
     private RemoteAddrNotInNetwork matcher;
     private FakeMail fakeMail;
     private MailAddress testRecipient;
+    private FakeMatcherConfig matcherConfig;
 
     @Before
     public void setup() throws MessagingException {
@@ -47,19 +48,19 @@ public class RemoteAddrNotInNetworkTest {
                 return InetAddress.getByName(host);
             }
         };
-        FakeMatcherConfig matcherConfig = new \
FakeMatcherConfig("AllowedNetworkIs=192.168.200.0/24", \
FakeMailContext.defaultContext()); +        matcherConfig = new \
FakeMatcherConfig("AllowedNetworkIs=192.168.200.0/24", \
FakeMailContext.defaultContext());  matcher = new RemoteAddrNotInNetwork();
         matcher.setDNSService(dnsServer);
         matcher.init(matcherConfig);
         testRecipient = new MailAddress("test@james.apache.org");
-        fakeMail = FakeMail.builder()
-                .recipient(testRecipient)
-                .build();
     }
 
     @Test
     public void shouldMatchWhenOnDifferentNetwork() throws MessagingException {
-        fakeMail.setRemoteAddr("192.168.0.1");
+        fakeMail = FakeMail.builder()
+                .recipient(testRecipient)
+                .remoteAddr("192.168.0.1")
+                .build();
 
         Collection<MailAddress> actual = matcher.match(fakeMail);
 
@@ -68,7 +69,10 @@ public class RemoteAddrNotInNetworkTest {
 
     @Test
     public void shouldNotMatchWhenOnSameNetwork() throws MessagingException {
-        fakeMail.setRemoteAddr("192.168.200.1");
+        fakeMail = FakeMail.builder()
+                .recipient(testRecipient)
+                .remoteAddr("192.168.200.1")
+                .build();
 
         Collection<MailAddress> actual = matcher.match(fakeMail);
 
@@ -77,18 +81,25 @@ public class RemoteAddrNotInNetworkTest {
 
     @Test
     public void shouldMatchWhenNoCondition() throws MessagingException {
-        FakeMatcherConfig matcherConfig = new FakeMatcherConfig("", \
                FakeMailContext.defaultContext());
-        RemoteAddrNotInNetwork testee = new RemoteAddrNotInNetwork();
-        testee.init(matcherConfig);
+        matcherConfig = new FakeMatcherConfig("", FakeMailContext.defaultContext());
+        matcher = new RemoteAddrNotInNetwork();
+        matcher.init(matcherConfig);
 
-        Collection<MailAddress> actual = testee.match(fakeMail);
+        fakeMail = FakeMail.builder()
+                .recipient(testRecipient)
+                .build();
+
+        Collection<MailAddress> actual = matcher.match(fakeMail);
 
         assertThat(actual).containsOnly(testRecipient);
     }
 
     @Test
     public void shouldMatchWhenInvalidAddress() throws MessagingException {
-        fakeMail.setRemoteAddr("invalid");
+        fakeMail = FakeMail.builder()
+                .recipient(testRecipient)
+                .remoteAddr("invalid")
+                .build();
 
         Collection<MailAddress> actual = matcher.match(fakeMail);
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/b3458187/server/protocols/jmap/src/test/java/org/apache/james/jmap/mailet/VacationReplyTest.java
                
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/mailet/VacationReplyTest.java \
b/server/protocols/jmap/src/test/java/org/apache/james/jmap/mailet/VacationReplyTest.java
 index 73d8e69..8174995 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/mailet/VacationReplyTest.java
                
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/mailet/VacationReplyTest.java
 @@ -61,10 +61,10 @@ public class VacationReplyTest {
         originalSender = new MailAddress("distant@apache.org");
         originalRecipient = new MailAddress("benwa@apache.org");
 
-        mail = new FakeMail();
-
-        mail.setMessage(new MimeMessage(Session.getInstance(new Properties()), \
                ClassLoader.getSystemResourceAsStream("spamMail.eml")));
-        mail.setSender(originalSender);
+        mail = FakeMail.builder()
+                .mimeMessage(new MimeMessage(Session.getInstance(new Properties()), \
ClassLoader.getSystemResourceAsStream("spamMail.eml"))) +                \
.sender(originalSender) +                .build();
 
         mimeMessageBodyGenerator = mock(MimeMessageBodyGenerator.class);
         generatedBody = new MimeMessage(Session.getInstance(new Properties()));
@@ -128,7 +128,7 @@ public class VacationReplyTest {
 
     @Test(expected = NullPointerException.class)
     public void vacationReplyShouldThrowOnNullOriginalEMailAddress() throws \
                Exception {
-        VacationReply.builder(new FakeMail())
+        VacationReply.builder(FakeMail.defaultFakeMail())
             .receivedMailRecipient(null);
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/b3458187/server/protocols/jmap/src/test/java/org/apache/james/jmap/send/MailSpoolTest.java
                
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/send/MailSpoolTest.java \
b/server/protocols/jmap/src/test/java/org/apache/james/jmap/send/MailSpoolTest.java \
                index 667e0ee..7b80eeb 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/send/MailSpoolTest.java
                
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/send/MailSpoolTest.java
 @@ -54,7 +54,7 @@ public class MailSpoolTest {
 
     @Test
     public void sendShouldEnQueueTheMail() throws Exception {
-        FakeMail mail = new FakeMail();
+        FakeMail mail = FakeMail.defaultFakeMail();
 
         mailSpool.send(mail, new MailMetadata(MessageId.of("a|b|1"), "user"));
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/b3458187/server/protocols/jmap/src/test/java/org/apache/james/jmap/send/PostDequeueDecoratorTest.java
                
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/send/PostDequeueDecoratorTest.java \
b/server/protocols/jmap/src/test/java/org/apache/james/jmap/send/PostDequeueDecoratorTest.java
 index 4fa8197..cd13e91 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/send/PostDequeueDecoratorTest.java
                
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/send/PostDequeueDecoratorTest.java
 @@ -71,7 +71,7 @@ public class PostDequeueDecoratorTest {
         mailboxManager = \
inMemoryIntegrationResources.createMailboxManager(groupMembershipResolver);  
         mockedMailQueueItem = mock(MailQueueItem.class);
-        mail = new FakeMail();
+        mail = FakeMail.defaultFakeMail();
         when(mockedMailQueueItem.getMail()).thenReturn(mail);
         testee = new PostDequeueDecorator(mockedMailQueueItem, mailboxManager);
     }


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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic