Author: norman
Date: Wed May 26 14:08:58 2010
New Revision: 948431

URL: http://svn.apache.org/viewvc?rev=948431&view=rev
Log:
* Eliminate unnecessary iteration of Messages
* Eliminate unnecessary sorting
* Make sure the JCR Sessions get closed after the processing of an IMAP Request

Modified:
    
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRMailboxManager.java
    
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java
    
james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailbox.java

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=948431&r1=948430&r2=948431&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
 Wed May 26 14:08:58 2010
@@ -103,4 +103,16 @@ public class JCRMailboxManager extends S
             throw new BadCredentialsException();
         }
     }
+
+
+    /**
+     * Logout every open JCR Session
+     */
+    @Override
+    public void endProcessingRequest(MailboxSession session) {
+        repository.logout(session);
+        super.endProcessingRequest(session);
+    }
+    
+    
 }

Modified: 
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java?rev=948431&r1=948430&r2=948431&view=diff
==============================================================================
--- 
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java
 (original)
+++ 
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java
 Wed May 26 14:08:58 2010
@@ -198,11 +198,13 @@ abstract class AbstractSelectionProcesso
         final SelectedMailbox sessionMailbox;
         final Iterator<MessageResult> it = 
mailbox.getMessages(MessageRange.all(),
                 FetchGroupImpl.MINIMAL, mailboxSession);
+
         final List<Long> uids = new ArrayList<Long>();
         while (it.hasNext()) {
-            final MessageResult result = (MessageResult) it.next();
-            uids.add(new Long(result.getUid()));
+            final MessageResult result = it.next();
+            uids.add(result.getUid());
         }
+        
         sessionMailbox = new SelectedMailboxImpl(getMailboxManager(), uids,
                 mailboxSession, name);
         session.selected(sessionMailbox);

Modified: 
james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailbox.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailbox.java?rev=948431&r1=948430&r2=948431&view=diff
==============================================================================
--- 
james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailbox.java
 (original)
+++ 
james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailbox.java
 Wed May 26 14:08:58 2010
@@ -27,7 +27,6 @@ import java.io.InputStream;
 import java.io.PushbackInputStream;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -394,16 +393,11 @@ public abstract class StoreMailbox<Id> i
     }
 
     private ResultIterator<Id> getMessages(FetchGroup result, UidRange range, 
List<MailboxMembership<Id>> messages) {
-        final Map<Long, Flags> flagsByIndex = new HashMap<Long, Flags>();
-        for (MailboxMembership<Id> member:messages) {
-            flagsByIndex.put(member.getUid(), member.createFlags());
-        }
         final ResultIterator<Id> results = getResults(result, messages);
         return results;
     }
 
     private ResultIterator<Id> getResults(FetchGroup result, 
List<MailboxMembership<Id>> messages) {
-        Collections.sort(messages, ResultUtils.getUidComparator());
         final ResultIterator<Id> results = new 
ResultIterator<Id>(messages,result);
         return results;
     }
@@ -452,6 +446,7 @@ public abstract class StoreMailbox<Id> i
     private Long getFirstUnseen(MailboxSession mailboxSession) throws 
MailboxException {
         try {
             final MessageMapper<Id> messageMapper = 
createMessageMapper(mailboxSession);
+            
             final List<MailboxMembership<Id>> members = 
messageMapper.findUnseenMessagesInMailbox();
             final Iterator<MailboxMembership<Id>> it = members.iterator();
             final Long result;



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to