Author: norman Date: Mon May 17 21:06:16 2010 New Revision: 945363 URL: http://svn.apache.org/viewvc?rev=945363&view=rev Log: Mailbox instances are valid within many requests now. (IMAP-147)
Modified: james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRMailbox.java james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRMailboxManager.java james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/JPAMailbox.java james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/openjpa/OpenJPAMailbox.java james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/openjpa/OpenJPAMailboxManager.java Modified: james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRMailbox.java URL: http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRMailbox.java?rev=945363&r1=945362&r2=945363&view=diff ============================================================================== --- james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRMailbox.java (original) +++ james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRMailbox.java Mon May 17 21:06:16 2010 @@ -23,10 +23,11 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; -import javax.jcr.Session; +import javax.jcr.RepositoryException; import javax.mail.Flags; import org.apache.commons.logging.Log; +import org.apache.james.imap.api.display.HumanReadableText; import org.apache.james.imap.jcr.mail.JCRMailboxMapper; import org.apache.james.imap.jcr.mail.JCRMessageMapper; import org.apache.james.imap.jcr.mail.model.JCRHeader; @@ -47,14 +48,14 @@ import org.apache.james.imap.store.mail. */ public class JCRMailbox extends StoreMailbox<String>{ - private final Session jcrSession; + private final MailboxSessionJCRRepository repos; private final Log log; private char delimiter; - public JCRMailbox(final MailboxEventDispatcher dispatcher, UidConsumer<String> consumer, final org.apache.james.imap.jcr.mail.model.JCRMailbox mailbox, final Session jcrSession, final Log log, final char delimiter) { + public JCRMailbox(final MailboxEventDispatcher dispatcher, UidConsumer<String> consumer, final org.apache.james.imap.jcr.mail.model.JCRMailbox mailbox, final MailboxSessionJCRRepository repos, final Log log, final char delimiter) { super(dispatcher, consumer, mailbox); this.log = log; - this.jcrSession = jcrSession; + this.repos = repos; this.delimiter = delimiter; } @@ -85,10 +86,13 @@ public class JCRMailbox extends StoreMai @Override protected MessageMapper<String> createMessageMapper(MailboxSession session) throws MailboxException { - JCRMessageMapper messageMapper = new JCRMessageMapper(jcrSession, getMailboxId(), log); + try { + JCRMessageMapper messageMapper = new JCRMessageMapper(repos.login(session), getMailboxId(), log); + return messageMapper; + } catch (RepositoryException e) { + throw new MailboxException(HumanReadableText.GENERIC_FAILURE_DURING_PROCESSING, e); + } - return messageMapper; - } /** @@ -100,8 +104,14 @@ public class JCRMailbox extends StoreMai * @throws MailboxException */ protected JCRMailboxMapper createMailboxMapper(MailboxSession session) throws MailboxException { - JCRMailboxMapper mapper = new JCRMailboxMapper(jcrSession, log, delimiter); - return mapper; + try { + JCRMailboxMapper mapper = new JCRMailboxMapper(repos.login(session), log, delimiter); + return mapper; + + } catch (RepositoryException e) { + throw new MailboxException(HumanReadableText.GENERIC_FAILURE_DURING_PROCESSING, e); + } + } } Modified: james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRMailboxManager.java URL: http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRMailboxManager.java?rev=945363&r1=945362&r2=945363&view=diff ============================================================================== --- james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRMailboxManager.java (original) +++ james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRMailboxManager.java Mon May 17 21:06:16 2010 @@ -60,11 +60,7 @@ public class JCRMailboxManager extends S @Override protected StoreMailbox<String> createMailbox(MailboxEventDispatcher dispatcher, UidConsumer<String> consumer,Mailbox<String> mailboxRow, MailboxSession session) throws MailboxException{ - try { - return new JCRMailbox(dispatcher, consumer, (org.apache.james.imap.jcr.mail.model.JCRMailbox) mailboxRow, repository.login(session), getLog(), getDelimiter()); - } catch (RepositoryException e) { - throw new MailboxException(HumanReadableText.GENERIC_FAILURE_DURING_PROCESSING, e); - } + return new JCRMailbox(dispatcher, consumer, (org.apache.james.imap.jcr.mail.model.JCRMailbox) mailboxRow, repository, getLog(), getDelimiter()); } @Override @@ -93,11 +89,12 @@ public class JCRMailboxManager extends S }); } - /* - * (non-Javadoc) + + /** + * Return a {...@link PasswordAwareMailboxSession} if the login was successful * - * @see org.apache.james.imap.mailbox.MailboxManager#login(java.lang.String, - * java.lang.String, org.apache.commons.logging.Log) + * (non-Javadoc) + * @see org.apache.james.imap.store.StoreMailboxManager#login(java.lang.String, java.lang.String, org.apache.commons.logging.Log) */ public MailboxSession login(String userid, String passwd, Log log) throws BadCredentialsException, MailboxException { if (login(userid, passwd)) { Modified: james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/JPAMailbox.java URL: http://svn.apache.org/viewvc/james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/JPAMailbox.java?rev=945363&r1=945362&r2=945363&view=diff ============================================================================== --- james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/JPAMailbox.java (original) +++ james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/JPAMailbox.java Mon May 17 21:06:16 2010 @@ -24,7 +24,6 @@ import java.util.Date; import java.util.List; import javax.mail.Flags; -import javax.persistence.EntityManager; import org.apache.james.imap.jpa.mail.JPAMailboxMapper; import org.apache.james.imap.jpa.mail.JPAMessageMapper; @@ -51,11 +50,11 @@ import org.apache.james.imap.store.mail. */ public class JPAMailbox extends StoreMailbox<Long> { - protected final EntityManager manager; + protected final MailboxSessionEntityManagerFactory entityManagerFactory; - public JPAMailbox(final MailboxEventDispatcher dispatcher, final UidConsumer<Long> consumer,final Mailbox<Long> mailbox, final EntityManager manager) { + public JPAMailbox(final MailboxEventDispatcher dispatcher, final UidConsumer<Long> consumer,final Mailbox<Long> mailbox, final MailboxSessionEntityManagerFactory entityManagerFactory) { super(dispatcher, consumer, mailbox); - this.manager = manager; + this.entityManagerFactory = entityManagerFactory; } @@ -63,7 +62,7 @@ public class JPAMailbox extends StoreMai @Override protected MessageMapper<Long> createMessageMapper(MailboxSession session) { - JPAMessageMapper mapper = new JPAMessageMapper(manager, getMailboxId()); + JPAMessageMapper mapper = new JPAMessageMapper(entityManagerFactory.createEntityManager(session), getMailboxId()); return mapper; } @@ -99,7 +98,7 @@ public class JPAMailbox extends StoreMai @Override protected MailboxMapper<Long> createMailboxMapper(MailboxSession session) { - return new JPAMailboxMapper(manager); + return new JPAMailboxMapper(entityManagerFactory.createEntityManager(session)); } Modified: james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/openjpa/OpenJPAMailbox.java URL: http://svn.apache.org/viewvc/james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/openjpa/OpenJPAMailbox.java?rev=945363&r1=945362&r2=945363&view=diff ============================================================================== --- james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/openjpa/OpenJPAMailbox.java (original) +++ james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/openjpa/OpenJPAMailbox.java Mon May 17 21:06:16 2010 @@ -28,6 +28,7 @@ import javax.mail.Flags; import javax.persistence.EntityManager; import org.apache.james.imap.jpa.JPAMailbox; +import org.apache.james.imap.jpa.MailboxSessionEntityManagerFactory; import org.apache.james.imap.jpa.mail.model.AbstractJPAMailboxMembership; import org.apache.james.imap.jpa.mail.model.JPAHeader; import org.apache.james.imap.jpa.mail.model.openjpa.JPAStreamingMailboxMembership; @@ -48,12 +49,12 @@ public class OpenJPAMailbox extends JPAM private final boolean useStreaming; - public OpenJPAMailbox(MailboxEventDispatcher dispatcher, UidConsumer<Long> consumer, Mailbox<Long> mailbox, EntityManager entityManager) { - this(dispatcher, consumer, mailbox, entityManager, false); + public OpenJPAMailbox(MailboxEventDispatcher dispatcher, UidConsumer<Long> consumer, Mailbox<Long> mailbox, MailboxSessionEntityManagerFactory entityManagerFactory) { + this(dispatcher, consumer, mailbox, entityManagerFactory, false); } - public OpenJPAMailbox(MailboxEventDispatcher dispatcher, UidConsumer<Long> consumer, Mailbox<Long> mailbox, EntityManager entityManager, final boolean useStreaming) { - super(dispatcher, consumer, mailbox, entityManager); + public OpenJPAMailbox(MailboxEventDispatcher dispatcher, UidConsumer<Long> consumer, Mailbox<Long> mailbox, MailboxSessionEntityManagerFactory entityManagerFactory, final boolean useStreaming) { + super(dispatcher, consumer, mailbox, entityManagerFactory); this.useStreaming = useStreaming; } Modified: james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/openjpa/OpenJPAMailboxManager.java URL: http://svn.apache.org/viewvc/james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/openjpa/OpenJPAMailboxManager.java?rev=945363&r1=945362&r2=945363&view=diff ============================================================================== --- james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/openjpa/OpenJPAMailboxManager.java (original) +++ james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/openjpa/OpenJPAMailboxManager.java Mon May 17 21:06:16 2010 @@ -48,7 +48,7 @@ public class OpenJPAMailboxManager exten } protected StoreMailbox<Long> createMailbox(MailboxEventDispatcher dispatcher, UidConsumer<Long> consumer, Mailbox<Long> mailboxRow, MailboxSession session) { - StoreMailbox<Long> result = new OpenJPAMailbox(dispatcher, consumer, mailboxRow,entityManagerFactory.createEntityManager(session), useStreaming); + StoreMailbox<Long> result = new OpenJPAMailbox(dispatcher, consumer, mailboxRow,entityManagerFactory, useStreaming); return result; } } --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org