MAILBOX-307 Extract long lambda in StoreMailboxManager

Suggested by @rouazana review comment.


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

Branch: refs/heads/master
Commit: 183a372a956d470d34d999dc2ba46dab6b767176
Parents: 774694c
Author: benwa <btell...@linagora.com>
Authored: Thu Sep 28 09:55:06 2017 +0700
Committer: Matthieu Baechler <matth...@apache.org>
Committed: Fri Sep 29 09:20:41 2017 +0200

----------------------------------------------------------------------
 .../mailbox/store/StoreMailboxManager.java      | 69 ++++++++++----------
 1 file changed, 33 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/183a372a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
index 2655ac8..c96b1de 100644
--- 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
+++ 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
@@ -589,50 +589,47 @@ public class StoreMailboxManager implements 
MailboxManager {
     }
 
     @Override
-    public void renameMailbox(final MailboxPath from, final MailboxPath to, 
final MailboxSession session) throws MailboxException {
-        final Logger log = LOGGER;
-        if (log.isDebugEnabled())
-            log.debug("renameMailbox " + from + " to " + to);
+    public void renameMailbox(MailboxPath from, MailboxPath to, MailboxSession 
session) throws MailboxException {
+        LOGGER.debug("renameMailbox " + from + " to " + to);
         if (mailboxExists(to, session)) {
             throw new MailboxExistsException(to.toString());
         }
 
-        final MailboxMapper mapper = 
mailboxSessionMapperFactory.getMailboxMapper(session);
-        mapper.execute(Mapper.toTransaction(() -> {
-            // TODO put this into a serilizable transaction
-            final Mailbox mailbox = mapper.findMailboxByPath(from);
-            if (mailbox == null) {
-                throw new MailboxNotFoundException(from);
+        MailboxMapper mapper = 
mailboxSessionMapperFactory.getMailboxMapper(session);
+        mapper.execute(Mapper.toTransaction(() -> doRenameMailbox(from, to, 
session, mapper)));
+    }
+
+    private void doRenameMailbox(MailboxPath from, MailboxPath to, 
MailboxSession session, MailboxMapper mapper) throws MailboxException {
+        // TODO put this into a serilizable transaction
+        Mailbox mailbox = Optional.ofNullable(mapper.findMailboxByPath(from))
+            .orElseThrow(() -> new MailboxNotFoundException(from));
+
+        mailbox.setNamespace(to.getNamespace());
+        mailbox.setUser(to.getUser());
+        mailbox.setName(to.getName());
+        mapper.save(mailbox);
+
+        dispatcher.mailboxRenamed(session, from, mailbox);
+
+        // rename submailboxes
+        MailboxPath children = new 
MailboxPath(MailboxConstants.USER_NAMESPACE, from.getUser(), from.getName() + 
getDelimiter() + "%");
+        locker.executeWithLock(session, children, (LockAwareExecution<Void>) 
() -> {
+            List<Mailbox> subMailboxes = 
mapper.findMailboxWithPathLike(children);
+            for (Mailbox sub : subMailboxes) {
+                String subOriginalName = sub.getName();
+                String subNewName = to.getName() + 
subOriginalName.substring(from.getName().length());
+                MailboxPath fromPath = new MailboxPath(children, 
subOriginalName);
+                sub.setName(subNewName);
+                mapper.save(sub);
+                dispatcher.mailboxRenamed(session, fromPath, sub);
+
+                LOGGER.debug("Rename mailbox sub-mailbox " + subOriginalName + 
" to " + subNewName);
             }
-            mailbox.setNamespace(to.getNamespace());
-            mailbox.setUser(to.getUser());
-            mailbox.setName(to.getName());
-            mapper.save(mailbox);
-
-            dispatcher.mailboxRenamed(session, from, mailbox);
-
-            // rename submailboxes
-            final MailboxPath children = new 
MailboxPath(MailboxConstants.USER_NAMESPACE, from.getUser(), from.getName() + 
getDelimiter() + "%");
-            locker.executeWithLock(session, children, 
(LockAwareExecution<Void>) () -> {
-                final List<Mailbox> subMailboxes = 
mapper.findMailboxWithPathLike(children);
-                for (Mailbox sub : subMailboxes) {
-                    final String subOriginalName = sub.getName();
-                    final String subNewName = to.getName() + 
subOriginalName.substring(from.getName().length());
-                    final MailboxPath fromPath = new MailboxPath(children, 
subOriginalName);
-                    sub.setName(subNewName);
-                    mapper.save(sub);
-                    dispatcher.mailboxRenamed(session, fromPath, sub);
-
-                    if (log.isDebugEnabled())
-                        log.debug("Rename mailbox sub-mailbox " + 
subOriginalName + " to " + subNewName);
-                }
-                return null;
+            return null;
 
-            }, true);
-        }));
+        }, true);
     }
 
-
     @Override
     public List<MessageRange> copyMessages(MessageRange set, MailboxPath from, 
MailboxPath to, final MailboxSession session) throws MailboxException {
         final StoreMessageManager toMailbox = (StoreMessageManager) 
getMailbox(to, session);


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

Reply via email to