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]