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