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

Reply via email to