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: [email protected]
For additional commands, e-mail: [email protected]