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 no...@apache.org on 2010/05/17 23:06:16 UTC
svn commit: r945363 - in /james/imap/trunk:
jcr/src/main/java/org/apache/james/imap/jcr/
jpa/src/main/java/org/apache/james/imap/jpa/
jpa/src/main/java/org/apache/james/imap/jpa/openjpa/
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-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org