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]