Author: norman
Date: Thu Sep 23 13:47:32 2010
New Revision: 1000473

URL: http://svn.apache.org/viewvc?rev=1000473&view=rev
Log:
Delegate save operation to abstract base class to simplify design (IMAP-219)

Modified:
    
james/imap/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxManager.java
    
james/imap/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxManager.java
    
james/imap/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirMailboxManager.java
    
james/imap/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java
    
james/imap/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java

Modified: 
james/imap/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxManager.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxManager.java?rev=1000473&r1=1000472&r2=1000473&view=diff
==============================================================================
--- 
james/imap/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxManager.java
 (original)
+++ 
james/imap/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxManager.java
 Thu Sep 23 13:47:32 2010
@@ -25,13 +25,11 @@ import org.apache.commons.logging.LogFac
 import org.apache.james.mailbox.MailboxException;
 import org.apache.james.mailbox.MailboxPath;
 import org.apache.james.mailbox.MailboxSession;
-import org.apache.james.mailbox.jcr.mail.JCRMailboxMapper;
 import org.apache.james.mailbox.jcr.mail.model.JCRMailbox;
 import org.apache.james.mailbox.store.Authenticator;
 import org.apache.james.mailbox.store.MapperStoreMessageManager;
 import org.apache.james.mailbox.store.StoreMailboxManager;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
-import org.apache.james.mailbox.store.transaction.Mapper;
 import org.apache.james.mailbox.util.MailboxEventDispatcher;
 
 /**
@@ -59,16 +57,8 @@ public class JCRMailboxManager extends S
     }
 
     @Override
-    protected void doCreateMailbox(MailboxPath path, MailboxSession session) 
throws MailboxException {
-        final Mailbox<String> mailbox = new 
org.apache.james.mailbox.jcr.mail.model.JCRMailbox(path, randomUidValidity(), 
logger);
-        final JCRMailboxMapper mapper = (JCRMailboxMapper) 
mapperFactory.getMailboxMapper(session);
-        mapper.execute(new Mapper.VoidTransaction() {
-
-            public void runVoid() throws MailboxException {
-                mapper.save(mailbox);
-            }
-
-        });
+    protected Mailbox<String> doCreateMailbox(MailboxPath path, MailboxSession 
session) throws MailboxException {
+        return new org.apache.james.mailbox.jcr.mail.model.JCRMailbox(path, 
randomUidValidity(), logger);
     }
 
 }

Modified: 
james/imap/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxManager.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxManager.java?rev=1000473&r1=1000472&r2=1000473&view=diff
==============================================================================
--- 
james/imap/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxManager.java
 (original)
+++ 
james/imap/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxManager.java
 Thu Sep 23 13:47:32 2010
@@ -23,13 +23,10 @@ import org.apache.james.mailbox.MailboxP
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.jpa.mail.JPAMailboxMapper;
 import org.apache.james.mailbox.jpa.mail.model.JPAMailbox;
-import org.apache.james.mailbox.jpa.user.model.JPASubscription;
 import org.apache.james.mailbox.store.Authenticator;
 import org.apache.james.mailbox.store.StoreMailboxManager;
-import org.apache.james.mailbox.store.mail.MailboxMapper;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.transaction.TransactionalMapper;
-import org.apache.james.mailbox.store.user.model.Subscription;
 
 /**
  * JPA implementation of {...@link StoreMailboxManager}
@@ -42,16 +39,8 @@ public abstract class JPAMailboxManager 
     }
     
     @Override
-    protected void doCreateMailbox(MailboxPath path, MailboxSession session) 
throws MailboxException {
-        final Mailbox<Long> mailbox = new JPAMailbox(path, 
randomUidValidity());
-        final MailboxMapper<Long> mapper = 
mailboxSessionMapperFactory.getMailboxMapper(session);
-        mapper.execute(new TransactionalMapper.VoidTransaction(){
-
-            public void runVoid() throws MailboxException {
-                mapper.save(mailbox);
-            }
-            
-        });
+    protected Mailbox<Long> doCreateMailbox(MailboxPath path, MailboxSession 
session) throws MailboxException {
+        return  new JPAMailbox(path, randomUidValidity());
     }
 
     /**
@@ -70,14 +59,4 @@ public abstract class JPAMailboxManager 
             
         });
     }
-
-    /*
-     * (non-Javadoc)
-     * @see 
org.apache.james.mailbox.store.StoreMailboxManager#createSubscription(org.apache.james.mailbox.MailboxSession,
 java.lang.String)
-     */
-    protected Subscription createSubscription(final MailboxSession session, 
final String mailbox) {
-        final Subscription newSubscription = new 
JPASubscription(session.getUser().getUserName(), mailbox);
-        return newSubscription;
-    }
-    
 }

Modified: 
james/imap/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirMailboxManager.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirMailboxManager.java?rev=1000473&r1=1000472&r2=1000473&view=diff
==============================================================================
--- 
james/imap/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirMailboxManager.java
 (original)
+++ 
james/imap/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirMailboxManager.java
 Thu Sep 23 13:47:32 2010
@@ -28,7 +28,6 @@ import org.apache.james.mailbox.store.Au
 import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
 import org.apache.james.mailbox.store.MapperStoreMessageManager;
 import org.apache.james.mailbox.store.StoreMailboxManager;
-import org.apache.james.mailbox.store.mail.MailboxMapper;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.util.MailboxEventDispatcher;
 
@@ -47,11 +46,9 @@ public class MaildirMailboxManager exten
     }
 
     @Override
-    protected void doCreateMailbox(MailboxPath mailboxPath, MailboxSession 
session)
+    protected Mailbox<Integer> doCreateMailbox(MailboxPath mailboxPath, 
MailboxSession session)
             throws MailboxException {
-        final Mailbox<Integer> mailbox = new MaildirMailbox(mailboxPath, 
randomUidValidity(), 0);
-        final MailboxMapper<Integer> mapper = 
mailboxSessionMapperFactory.getMailboxMapper(session);
-        mapper.save(mailbox);
+        return new MaildirMailbox(mailboxPath, randomUidValidity(), 0);
     }
 
 }

Modified: 
james/imap/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java?rev=1000473&r1=1000472&r2=1000473&view=diff
==============================================================================
--- 
james/imap/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java
 (original)
+++ 
james/imap/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java
 Thu Sep 23 13:47:32 2010
@@ -44,12 +44,9 @@ public class InMemoryMailboxManager exte
     }
 
     @Override
-    protected void doCreateMailbox(MailboxPath mailboxPath, MailboxSession 
session) throws MailboxException {
-        InMemoryMailbox mailbox = new InMemoryMailbox(randomId(), mailboxPath, 
randomUidValidity());
-        try {
-            
mailboxSessionMapperFactory.getMailboxMapper(session).save(mailbox);
-        } catch (MailboxException e) {
-        }
+    protected Mailbox<Long> doCreateMailbox(MailboxPath mailboxPath, 
MailboxSession session) throws MailboxException {
+        return new InMemoryMailbox(randomId(), mailboxPath, 
randomUidValidity());
+       
     }
 
     /**

Modified: 
james/imap/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java?rev=1000473&r1=1000472&r2=1000473&view=diff
==============================================================================
--- 
james/imap/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
 (original)
+++ 
james/imap/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
 Thu Sep 23 13:47:32 2010
@@ -47,6 +47,7 @@ import org.apache.james.mailbox.MailboxM
 import org.apache.james.mailbox.store.mail.MailboxMapper;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.transaction.Mapper;
+import org.apache.james.mailbox.store.transaction.TransactionalMapper;
 import org.apache.james.mailbox.util.MailboxEventDispatcher;
 import org.apache.james.mailbox.util.SimpleMailboxMetaData;
 
@@ -174,12 +175,12 @@ public abstract class StoreMailboxManage
     protected abstract StoreMessageManager<Id> createMessageManager(AtomicLong 
lastUid,MailboxEventDispatcher dispatcher, Mailbox<Id> mailboxRow, 
MailboxSession session) throws MailboxException;
 
     /**
-     * Create a Mailbox for the given namespace and store it to the underlying 
storage
+     * Create a Mailbox for the given namespace
      * 
      * @param namespaceName
      * @throws MailboxException
      */
-    protected abstract void doCreateMailbox(MailboxPath mailboxPath, 
MailboxSession session) throws MailboxException;
+    protected abstract  org.apache.james.mailbox.store.mail.model.Mailbox<Id> 
doCreateMailbox(MailboxPath mailboxPath, final MailboxSession session) throws 
MailboxException;
     
     /*
      * (non-Javadoc)
@@ -243,7 +244,15 @@ public abstract class StoreMailboxManage
                 if (!mailboxExists(mailbox, mailboxSession)) {
                     try {
                         lock.lock(mailbox);
-                        doCreateMailbox(mailbox, mailboxSession);
+                        final 
org.apache.james.mailbox.store.mail.model.Mailbox<Id> m = 
doCreateMailbox(mailbox, mailboxSession);
+                        final MailboxMapper<Id> mapper = 
mailboxSessionMapperFactory.getMailboxMapper(mailboxSession);
+                        mapper.execute(new 
TransactionalMapper.VoidTransaction(){
+
+                            public void runVoid() throws MailboxException {
+                                mapper.save(m);
+                            }
+                            
+                        });
                     } finally {
                         lock.unlock(mailbox);
                     }



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

Reply via email to