You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ro...@apache.org on 2016/11/23 13:50:34 UTC

[31/46] james-project git commit: JAMES-1854 Use constructor injection rather than setter injection for delivery mailets

JAMES-1854 Use constructor injection rather than setter injection for delivery mailets


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

Branch: refs/heads/master
Commit: 55582f58e3ff3a1192347d5d568b58af0d19a9b6
Parents: 09c522b
Author: Benoit Tellier <bt...@linagora.com>
Authored: Thu Nov 10 16:26:01 2016 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Wed Nov 23 18:19:20 2016 +0700

----------------------------------------------------------------------
 .../java/org/apache/mailet/MailAddress.java     | 11 ++---
 .../james/user/lib/AbstractUsersRepository.java |  2 +-
 .../james/transport/mailets/LocalDelivery.java  | 38 +++++----------
 .../transport/mailets/SieveLocalDelivery.java   | 50 +++++++-------------
 .../mailets/SieveToRecipientFolder.java         | 23 ++++-----
 .../transport/mailets/ToRecipientFolder.java    | 16 +++----
 .../mailets/delivery/DeliveryUtils.java         |  4 +-
 .../mailets/delivery/MailDispatcher.java        | 21 ++++----
 .../mailets/delivery/MailboxAppender.java       | 33 ++++++++-----
 .../mailets/delivery/SimpleMailStore.java       |  2 +-
 .../mailets/jsieve/delivery/SieveMailStore.java | 14 ++++--
 .../mailets/delivery/LocalDeliveryTest.java     | 16 ++-----
 .../mailets/delivery/SimpleMailStoreTest.java   |  4 +-
 .../mailets/delivery/ToRecipientFolderTest.java | 11 ++---
 14 files changed, 101 insertions(+), 144 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/55582f58/mailet/api/src/main/java/org/apache/mailet/MailAddress.java
----------------------------------------------------------------------
diff --git a/mailet/api/src/main/java/org/apache/mailet/MailAddress.java b/mailet/api/src/main/java/org/apache/mailet/MailAddress.java
index 7c8ca89..fbca0a5 100644
--- a/mailet/api/src/main/java/org/apache/mailet/MailAddress.java
+++ b/mailet/api/src/main/java/org/apache/mailet/MailAddress.java
@@ -278,14 +278,9 @@ public class MailAddress implements java.io.Serializable {
     public String toString() {
         return localPart + "@" + domain;
     }
-
-    public String print() {
-        return localPart + "@" + domain;
-    }
-
-
-    public String prettyPrint() {
-        return '<' + print() + '>';
+    
+    public String asPrettyString() {
+        return '<' + asString() + '>';
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/james-project/blob/55582f58/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractUsersRepository.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractUsersRepository.java b/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractUsersRepository.java
index 87a4373..287c482 100644
--- a/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractUsersRepository.java
+++ b/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractUsersRepository.java
@@ -137,7 +137,7 @@ public abstract class AbstractUsersRepository implements UsersRepository, LogEna
     @Override
     public String getUser(MailAddress mailAddress) throws UsersRepositoryException {
         if (supportVirtualHosting()) {
-            return mailAddress.print();
+            return mailAddress.asString();
         } else {
             return mailAddress.getLocalPart();
         }

http://git-wip-us.apache.org/repos/asf/james-project/blob/55582f58/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/LocalDelivery.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/LocalDelivery.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/LocalDelivery.java
index 2a9cc76..74c664c 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/LocalDelivery.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/LocalDelivery.java
@@ -27,6 +27,7 @@ import org.apache.commons.logging.Log;
 import org.apache.james.domainlist.api.DomainList;
 import org.apache.james.mailbox.MailboxManager;
 
+import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.transport.mailets.delivery.MailDispatcher;
 import org.apache.james.transport.mailets.delivery.MailboxAppender;
 import org.apache.james.transport.mailets.delivery.SimpleMailStore;
@@ -44,32 +45,20 @@ import org.apache.mailet.base.GenericMailet;
  * James 2.3 behavior.
  */
 public class LocalDelivery extends GenericMailet {
-    
-    private org.apache.james.rrt.api.RecipientRewriteTable rrt;
-    private UsersRepository usersRepository;
-    private MailboxManager mailboxManager;
-    private DomainList domainList;
-    private MailDispatcher mailDispatcher;
-    private RecipientRewriteTable recipientRewriteTable;
 
-    @Inject
-    public void setRrt(org.apache.james.rrt.api.RecipientRewriteTable rrt) {
-        this.rrt = rrt;
-    }
+    private final UsersRepository usersRepository;
+    private final MailboxManager mailboxManager;
+    private final RecipientRewriteTable recipientRewriteTable;
+    private MailDispatcher mailDispatcher;
 
     @Inject
-    public void setUsersRepository(UsersRepository usersRepository) {
+    public LocalDelivery(org.apache.james.rrt.api.RecipientRewriteTable rrt, UsersRepository usersRepository,
+                         @Named("mailboxmanager") MailboxManager mailboxManager, DomainList domainList) {
         this.usersRepository = usersRepository;
-    }
-    
-    @Inject
-    public void setMailboxManager(@Named("mailboxmanager") MailboxManager mailboxManager) {
         this.mailboxManager = mailboxManager;
-    }
-    
-    @Inject
-    public void setDomainList(DomainList domainList) {
-        this.domainList = domainList;
+        this.recipientRewriteTable = new RecipientRewriteTable();
+        recipientRewriteTable.setDomainList(domainList);
+        recipientRewriteTable.setRecipientRewriteTable(rrt);
     }
 
     public void service(Mail mail) throws MessagingException {
@@ -84,20 +73,19 @@ public class LocalDelivery extends GenericMailet {
     }
 
     public void init() throws MessagingException {
-        recipientRewriteTable = new RecipientRewriteTable();
-        recipientRewriteTable.setDomainList(domainList);
-        recipientRewriteTable.setRecipientRewriteTable(rrt);
         recipientRewriteTable.init(getMailetConfig());
+
         Log log = CommonsLoggingAdapter.builder()
             .wrappedLogger(getMailetContext().getLogger())
             .quiet(getInitParameter("quiet", false))
             .verbose(getInitParameter("verbose", false))
             .build();
+
         mailDispatcher = MailDispatcher.builder()
             .mailStorer(SimpleMailStore.builder()
                 .mailboxAppender(new MailboxAppender(mailboxManager, getMailetContext().getLogger()))
                 .usersRepository(usersRepository)
-                .folder("INBOX")
+                .folder(MailboxConstants.INBOX)
                 .log(log)
                 .build())
             .consume(getInitParameter("consume", true))

http://git-wip-us.apache.org/repos/asf/james-project/blob/55582f58/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/SieveLocalDelivery.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/SieveLocalDelivery.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/SieveLocalDelivery.java
index 69af0bf..835da00 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/SieveLocalDelivery.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/SieveLocalDelivery.java
@@ -26,6 +26,7 @@ import javax.mail.MessagingException;
 import org.apache.commons.logging.Log;
 import org.apache.james.domainlist.api.DomainList;
 import org.apache.james.mailbox.MailboxManager;
+import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.sieverepository.api.SieveRepository;
 import org.apache.james.transport.mailets.delivery.MailDispatcher;
 import org.apache.james.transport.mailets.delivery.MailboxAppender;
@@ -46,37 +47,21 @@ import org.apache.mailet.base.GenericMailet;
  */
 public class SieveLocalDelivery extends GenericMailet {
     
-    private org.apache.james.rrt.api.RecipientRewriteTable rrt;
-    private UsersRepository usersRepository;
-    private MailboxManager mailboxManager;
-    private DomainList domainList;
-    private SieveRepository sieveRepository;
+    private final UsersRepository usersRepository;
+    private final MailboxManager mailboxManager;
+    private final SieveRepository sieveRepository;
+    private final RecipientRewriteTable recipientRewriteTable;
     private MailDispatcher mailDispatcher;
-    private RecipientRewriteTable recipientRewriteTable;
 
     @Inject
-    public void setSieveRepository(SieveRepository sieveRepository) {
-        this.sieveRepository = sieveRepository;
-    }
-
-    @Inject
-    public void setRrt(org.apache.james.rrt.api.RecipientRewriteTable rrt) {
-        this.rrt = rrt;
-    }
-
-    @Inject
-    public void setUsersRepository(UsersRepository usersRepository) {
+    public SieveLocalDelivery(UsersRepository usersRepository, @Named("mailboxmanager") MailboxManager mailboxManager,
+                              SieveRepository sieveRepository, org.apache.james.rrt.api.RecipientRewriteTable rrt, DomainList domainList) {
         this.usersRepository = usersRepository;
-    }
-    
-    @Inject
-    public void setMailboxManager(@Named("mailboxmanager") MailboxManager mailboxManager) {
         this.mailboxManager = mailboxManager;
-    }
-    
-    @Inject
-    public void setDomainList(DomainList domainList) {
-        this.domainList = domainList;
+        this.sieveRepository = sieveRepository;
+        this.recipientRewriteTable = new RecipientRewriteTable();
+        this.recipientRewriteTable.setDomainList(domainList);
+        this.recipientRewriteTable.setRecipientRewriteTable(rrt);
     }
 
     public void service(Mail mail) throws MessagingException {
@@ -91,23 +76,24 @@ public class SieveLocalDelivery extends GenericMailet {
     }
 
     public void init() throws MessagingException {
-        recipientRewriteTable = new RecipientRewriteTable();
-        recipientRewriteTable.setDomainList(domainList);
-        recipientRewriteTable.setRecipientRewriteTable(rrt);
         recipientRewriteTable.init(getMailetConfig());
+
         Log log = CommonsLoggingAdapter.builder()
             .wrappedLogger(getMailetContext().getLogger())
             .quiet(getInitParameter("quiet", false))
             .verbose(getInitParameter("verbose", false))
             .build();
-        String folder = "INBOX";
+
         mailDispatcher = MailDispatcher.builder()
             .mailStorer(SieveMailStore.builder()
-                .sievePoster(new SievePoster(new MailboxAppender(mailboxManager, getMailetContext().getLogger()), folder, usersRepository))
+                .sievePoster(new SievePoster(
+                    new MailboxAppender(mailboxManager, getMailetContext().getLogger()),
+                    MailboxConstants.INBOX,
+                    usersRepository))
                 .usersRepository(usersRepository)
                 .resourceLocator(ResourceLocatorImpl.instanciate(usersRepository, sieveRepository))
                 .mailetContext(getMailetContext())
-                .folder(folder)
+                .folder(MailboxConstants.INBOX)
                 .log(log)
                 .build())
             .consume(getInitParameter("consume", true))

http://git-wip-us.apache.org/repos/asf/james-project/blob/55582f58/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/SieveToRecipientFolder.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/SieveToRecipientFolder.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/SieveToRecipientFolder.java
index 67039a7..0ce02ef 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/SieveToRecipientFolder.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/SieveToRecipientFolder.java
@@ -24,6 +24,7 @@ import javax.mail.MessagingException;
 
 import org.apache.commons.logging.Log;
 import org.apache.james.mailbox.MailboxManager;
+import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.sieverepository.api.SieveRepository;
 import org.apache.james.transport.mailets.delivery.MailDispatcher;
 import org.apache.james.transport.mailets.delivery.MailboxAppender;
@@ -55,27 +56,19 @@ public class SieveToRecipientFolder extends GenericMailet {
     public static final String FOLDER_PARAMETER = "folder";
     public static final String CONSUME_PARAMETER = "consume";
 
-    private MailboxManager mailboxManager;
-    private SieveRepository sieveRepository;
-    private UsersRepository usersRepository;
+    private final MailboxManager mailboxManager;
+    private final SieveRepository sieveRepository;
+    private final UsersRepository usersRepository;
+    private MailDispatcher mailDispatcher;
 
     @Inject
-    public void setMailboxManager(@Named("mailboxmanager")MailboxManager mailboxManager) {
+    public SieveToRecipientFolder(@Named("mailboxmanager")MailboxManager mailboxManager, SieveRepository sieveRepository,
+                                  UsersRepository usersRepository) {
         this.mailboxManager = mailboxManager;
-    }
-
-    @Inject
-    public void setSieveRepository(SieveRepository sieveRepository) {
         this.sieveRepository = sieveRepository;
-    }
-
-    @Inject
-    public void setUsersRepository(UsersRepository usersRepository) {
         this.usersRepository = usersRepository;
     }
 
-    private MailDispatcher mailDispatcher;
-
     @Override
     public void service(Mail mail) throws MessagingException {
         if (!mail.getState().equals(Mail.GHOST)) {
@@ -90,7 +83,7 @@ public class SieveToRecipientFolder extends GenericMailet {
             .quiet(getInitParameter("quiet", true))
             .verbose(getInitParameter("verbose", false))
             .build();
-        String folder = getInitParameter(FOLDER_PARAMETER, "INBOX");
+        String folder = getInitParameter(FOLDER_PARAMETER, MailboxConstants.INBOX);
         mailDispatcher = MailDispatcher.builder()
             .mailStorer(SieveMailStore.builder()
                 .sievePoster(new SievePoster(new MailboxAppender(mailboxManager, getMailetContext().getLogger()), folder, usersRepository))

http://git-wip-us.apache.org/repos/asf/james-project/blob/55582f58/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ToRecipientFolder.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ToRecipientFolder.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ToRecipientFolder.java
index a59e9e2..4644641 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ToRecipientFolder.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ToRecipientFolder.java
@@ -24,6 +24,7 @@ import javax.mail.MessagingException;
 
 import org.apache.commons.logging.Log;
 import org.apache.james.mailbox.MailboxManager;
+import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.transport.mailets.delivery.MailDispatcher;
 import org.apache.james.transport.mailets.delivery.MailboxAppender;
 import org.apache.james.transport.mailets.delivery.SimpleMailStore;
@@ -53,21 +54,16 @@ public class ToRecipientFolder extends GenericMailet {
     public static final String FOLDER_PARAMETER = "folder";
     public static final String CONSUME_PARAMETER = "consume";
 
-    private MailboxManager mailboxManager;
-    private UsersRepository usersRepository;
+    private final MailboxManager mailboxManager;
+    private final UsersRepository usersRepository;
+    private MailDispatcher mailDispatcher;
 
     @Inject
-    public void setMailboxManager(@Named("mailboxmanager")MailboxManager mailboxManager) {
+    public ToRecipientFolder(@Named("mailboxmanager")MailboxManager mailboxManager, UsersRepository usersRepository) {
         this.mailboxManager = mailboxManager;
-    }
-
-    @Inject
-    public void setUsersRepository(UsersRepository usersRepository) {
         this.usersRepository = usersRepository;
     }
 
-    private MailDispatcher mailDispatcher;
-
     @Override
     public void service(Mail mail) throws MessagingException {
         if (!mail.getState().equals(Mail.GHOST)) {
@@ -86,7 +82,7 @@ public class ToRecipientFolder extends GenericMailet {
             .mailStorer(SimpleMailStore.builder()
                 .mailboxAppender(new MailboxAppender(mailboxManager, getMailetContext().getLogger()))
                 .usersRepository(usersRepository)
-                .folder(getInitParameter(FOLDER_PARAMETER, "INBOX"))
+                .folder(getInitParameter(FOLDER_PARAMETER, MailboxConstants.INBOX))
                 .log(log)
                 .build())
             .consume(getInitParameter(CONSUME_PARAMETER, false))

http://git-wip-us.apache.org/repos/asf/james-project/blob/55582f58/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/DeliveryUtils.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/DeliveryUtils.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/DeliveryUtils.java
index e6030d3..22cb40d 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/DeliveryUtils.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/DeliveryUtils.java
@@ -25,9 +25,9 @@ public class DeliveryUtils {
 
     public static String prettyPrint(MailAddress mailAddress) {
         if (mailAddress != null) {
-            return  mailAddress.prettyPrint();
+            return mailAddress.asPrettyString();
         } else {
-            return  "<>";
+            return "<>";
         }
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/55582f58/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailDispatcher.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailDispatcher.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailDispatcher.java
index 04968a6..43ef1a0 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailDispatcher.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailDispatcher.java
@@ -93,8 +93,7 @@ public class MailDispatcher {
     }
 
     public void dispatch(Mail mail) throws MessagingException {
-        Collection<MailAddress> errors = new Vector<MailAddress>();
-        dispatchNeedingErrorsManaged(mail, errors);
+        Collection<MailAddress> errors =  customizeHeadersAndDeliver(mail);
         if (!errors.isEmpty()) {
             // If there were errors, we redirect the email to the ERROR
             // processor.
@@ -105,10 +104,13 @@ public class MailDispatcher {
             // In the future we may wish to address this.
             mailetContext.sendMail(mail.getSender(), errors, mail.getMessage(), Mail.ERROR);
         }
+        if (consume) {
+            // Consume this message
+            mail.setState(Mail.GHOST);
+        }
     }
 
-    @SuppressWarnings("unchecked")
-    private void dispatchNeedingErrorsManaged(Mail mail, Collection<MailAddress> errors) throws MessagingException {
+    private Collection<MailAddress> customizeHeadersAndDeliver(Mail mail) throws MessagingException {
         MimeMessage message = mail.getMessage();
         // Set Return-Path and remove all other Return-Path headers from the message
         // This only works because there is a placeholder inserted by MimeMessageWrapper
@@ -117,14 +119,16 @@ public class MailDispatcher {
         List<String> deliveredToHeader = Arrays.asList(Optional.fromNullable(message.getHeader(DELIVERED_TO)).or(NO_HEADERS));
         message.removeHeader(DELIVERED_TO);
 
-        dispatchNeedingSavedDeliveredToHeader(mail, errors, message);
+        Collection<MailAddress> errors = deliver(mail, message);
 
         for (String deliveredTo : deliveredToHeader) {
             message.addHeader(DELIVERED_TO, deliveredTo);
         }
+        return errors;
     }
 
-    private void dispatchNeedingSavedDeliveredToHeader(Mail mail, Collection<MailAddress> errors, MimeMessage message) {
+    private Collection<MailAddress> deliver(Mail mail, MimeMessage message) {
+        Collection<MailAddress> errors = new Vector<MailAddress>();
         for (MailAddress recipient : mail.getRecipients()) {
             try {
                 // Add qmail's de facto standard Delivered-To header
@@ -136,9 +140,6 @@ public class MailDispatcher {
                 errors.add(recipient);
             }
         }
-        if (consume) {
-            // Consume this message
-            mail.setState(Mail.GHOST);
-        }
+        return errors;
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/55582f58/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailboxAppender.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailboxAppender.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailboxAppender.java
index 4b17263..64c72cb 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailboxAppender.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailboxAppender.java
@@ -77,23 +77,12 @@ public class MailboxAppender {
         } catch (MailboxException e) {
             throw new MessagingException("Unable to access mailbox.", e);
         } finally {
-            session.close();
-            try {
-                try {
-                    mailboxManager.logout(session, true);
-                } catch (MailboxException e) {
-                    throw new MessagingException("Can logout from mailbox", e);
-                }
-            } finally {
-                mailboxManager.endProcessingRequest(session);
-            }
+            closeProcessing(session);
         }
     }
 
     private void appendMessageToMailbox(MimeMessage mail, MailboxSession session, MailboxPath path) throws MailboxException, MessagingException {
-        if (!mailboxManager.mailboxExists(path, session)) {
-            mailboxManager.createMailbox(path, session);
-        }
+        createMailboxIfNotExist(session, path);
         final MessageManager mailbox = mailboxManager.getMailbox(path, session);
         if (mailbox == null) {
             throw new MessagingException("Mailbox " + path + " for user " + session.getUser().getUserName() + " was not found on this server.");
@@ -101,6 +90,12 @@ public class MailboxAppender {
         mailbox.appendMessage(new MimeMessageInputStream(mail), new Date(), session, IS_RECENT, FLAGS);
     }
 
+    private void createMailboxIfNotExist(MailboxSession session, MailboxPath path) throws MailboxException {
+        if (!mailboxManager.mailboxExists(path, session)) {
+            mailboxManager.createMailbox(path, session);
+        }
+    }
+
     public MailboxSession createMailboxSession(String user) throws MessagingException {
         try {
             return mailboxManager.createSystemSession(user, logger);
@@ -111,5 +106,17 @@ public class MailboxAppender {
         }
     }
 
+    private void closeProcessing(MailboxSession session) throws MessagingException {
+        session.close();
+        try {
+            try {
+                mailboxManager.logout(session, true);
+            } catch (MailboxException e) {
+                throw new MessagingException("Can logout from mailbox", e);
+            }
+        } finally {
+            mailboxManager.endProcessingRequest(session);
+        }
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/55582f58/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/SimpleMailStore.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/SimpleMailStore.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/SimpleMailStore.java
index 3324491..bec5ae8 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/SimpleMailStore.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/SimpleMailStore.java
@@ -96,7 +96,7 @@ public class SimpleMailStore implements MailStore {
         try {
             return usersRepository.getUser(recipient);
         } catch (UsersRepositoryException e) {
-            log.error("Unable to access UsersRepository", e);
+            log.warn("Unable to retrieve username for " + recipient.asPrettyString(), e);
             return recipient.toString();
         }
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/55582f58/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/delivery/SieveMailStore.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/delivery/SieveMailStore.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/delivery/SieveMailStore.java
index fcdf8a3..a5f655c 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/delivery/SieveMailStore.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/delivery/SieveMailStore.java
@@ -116,15 +116,19 @@ public class SieveMailStore implements MailStore {
         this.sievePoster = sievePoster;
         this.folder = folder;
         this.resourceLocator = resourceLocator;
+        factory = createFactory(log);
+        this.actionDispatcher = new ActionDispatcher();
+        this.log = log;
+    }
+
+    private SieveFactory createFactory(Log log) throws MessagingException {
         try {
             final ConfigurationManager configurationManager = new ConfigurationManager();
             configurationManager.setLog(log);
-            factory = configurationManager.build();
+            return configurationManager.build();
         } catch (SieveConfigurationException e) {
             throw new MessagingException("Failed to load standard Sieve configuration.", e);
         }
-        this.actionDispatcher = new ActionDispatcher();
-        this.log = log;
     }
 
     public void storeMail(MailAddress sender, MailAddress recipient, Mail mail) throws MessagingException {
@@ -186,12 +190,12 @@ public class SieveMailStore implements MailStore {
     public String retrieveUserNameUsedForScriptStorage(MailAddress mailAddress) {
         try {
             if (usersRepos.supportVirtualHosting()) {
-                return mailAddress.print();
+                return mailAddress.asString();
             } else {
                 return mailAddress.getLocalPart() + "@localhost";
             }
         } catch (UsersRepositoryException e) {
-            log.error("Unable to access UsersRepository", e);
+            log.warn("Can not determine if virtual hosting is used for " + mailAddress.asPrettyString(), e);
             return mailAddress.getLocalPart() + "@localhost";
         }
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/55582f58/server/mailet/mailets/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 cebf75d..9931bcf 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
@@ -119,18 +119,10 @@ public class LocalDeliveryTest {
         RecipientRewriteTable recipientRewriteTable = mock(RecipientRewriteTable.class);
         DomainList domainList = mock(DomainList.class);
 
-        SieveLocalDelivery sieveLocalDelivery = new SieveLocalDelivery();
-        sieveLocalDelivery.setDomainList(domainList);
-        sieveLocalDelivery.setMailboxManager(mailboxManager);
-        sieveLocalDelivery.setRrt(recipientRewriteTable);
-        sieveLocalDelivery.setUsersRepository(usersRepository);
-        sieveLocalDelivery.setSieveRepository(sieveRepository);
-
-        LocalDelivery localDelivery = new LocalDelivery();
-        localDelivery.setDomainList(domainList);
-        localDelivery.setRrt(recipientRewriteTable);
-        localDelivery.setMailboxManager(mailboxManager);
-        localDelivery.setUsersRepository(usersRepository);
+        SieveLocalDelivery sieveLocalDelivery = new SieveLocalDelivery(usersRepository, mailboxManager, sieveRepository,
+            recipientRewriteTable, domainList);
+
+        LocalDelivery localDelivery = new LocalDelivery(recipientRewriteTable, usersRepository, mailboxManager, domainList);
 
         MailboxSession.User user = mock(MailboxSession.User.class);
         MailboxSession session = mock(MailboxSession.class);

http://git-wip-us.apache.org/repos/asf/james-project/blob/55582f58/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SimpleMailStoreTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SimpleMailStoreTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SimpleMailStoreTest.java
index 3566362..74a00c6 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SimpleMailStoreTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SimpleMailStoreTest.java
@@ -81,13 +81,13 @@ public class SimpleMailStoreTest {
     public void storeMailShouldUseFullMailAddressWhenSupportsVirtualHosting() throws Exception {
         MailAddress sender = MailAddressFixture.ANY_AT_JAMES;
         MailAddress recipient = MailAddressFixture.OTHER_AT_JAMES;
-        when(usersRepository.getUser(recipient)).thenReturn(recipient.print());
+        when(usersRepository.getUser(recipient)).thenReturn(recipient.asString());
         FakeMail mail = FakeMail.builder()
             .mimeMessage(mimeMessage)
             .build();
         testee.storeMail(sender, recipient, mail);
 
-        verify(mailboxAppender).append(any(MimeMessage.class), eq(recipient.print()), eq(FOLDER));
+        verify(mailboxAppender).append(any(MimeMessage.class), eq(recipient.asString()), eq(FOLDER));
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/55582f58/server/mailet/mailets/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 7d67292..edbf3c0 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
@@ -120,14 +120,9 @@ public class ToRecipientFolderTest {
         UsersRepository usersRepository = mock(UsersRepository.class);
         MailboxManager mailboxManager = mock(MailboxManager.class);
 
-        SieveToRecipientFolder sieveToRecipientFolder = new SieveToRecipientFolder();
-        sieveToRecipientFolder.setMailboxManager(mailboxManager);
-        sieveToRecipientFolder.setUsersRepository(usersRepository);
-        sieveToRecipientFolder.setSieveRepository(sieveRepository);
-
-        ToRecipientFolder toRecipientFolder = new ToRecipientFolder();
-        toRecipientFolder.setMailboxManager(mailboxManager);
-        toRecipientFolder.setUsersRepository(usersRepository);
+        SieveToRecipientFolder sieveToRecipientFolder = new SieveToRecipientFolder(mailboxManager, sieveRepository, usersRepository);
+
+        ToRecipientFolder toRecipientFolder = new ToRecipientFolder(mailboxManager, usersRepository);
 
         MailboxSession.User user = mock(MailboxSession.User.class);
         MailboxSession session = mock(MailboxSession.class);


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