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/08/04 13:28:57 UTC
svn commit: r982216 - in /james/imap/trunk:
processor/src/main/java/org/apache/james/imap/processor/
processor/src/main/java/org/apache/james/imap/processor/base/
store/src/main/java/org/apache/james/imap/store/
Author: norman
Date: Wed Aug 4 11:28:57 2010
New Revision: 982216
URL: http://svn.apache.org/viewvc?rev=982216&view=rev
Log:
Make some performance improvements by remove some unneeded copy operations
Modified:
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/UidToMsnConverter.java
james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMessageManager.java
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=982216&r1=982215&r2=982216&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 Aug 4 11:28:57 2010
@@ -19,9 +19,7 @@
package org.apache.james.imap.processor;
-import java.util.ArrayList;
import java.util.Iterator;
-import java.util.List;
import javax.mail.Flags;
@@ -198,14 +196,20 @@ abstract class AbstractSelectionProcesso
final Iterator<MessageResult> it = mailbox.getMessages(MessageRange.all(),
FetchGroupImpl.MINIMAL, mailboxSession);
- final List<Long> uids = new ArrayList<Long>();
- while (it.hasNext()) {
- final MessageResult result = it.next();
- uids.add(result.getUid());
- }
-
- final SelectedMailbox sessionMailbox = new SelectedMailboxImpl(getMailboxManager(), uids,
- mailboxSession, path);
+ final SelectedMailbox sessionMailbox = new SelectedMailboxImpl(getMailboxManager(), new Iterator<Long>() {
+
+ public boolean hasNext() {
+ return it.hasNext();
+ }
+
+ public Long next() {
+ return it.next().getUid();
+ }
+
+ public void remove() {
+ throw new UnsupportedOperationException("Read-only iterator");
+ }
+ }, mailboxSession, path);
session.selected(sessionMailbox);
return sessionMailbox;
}
Modified: james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java?rev=982216&r1=982215&r2=982216&view=diff
==============================================================================
--- james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java (original)
+++ james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java Wed Aug 4 11:28:57 2010
@@ -21,7 +21,7 @@ package org.apache.james.imap.processor.
import java.util.ArrayList;
import java.util.Collection;
-import java.util.List;
+import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
@@ -45,7 +45,7 @@ public class SelectedMailboxImpl impleme
private boolean recentUidRemoved;
- public SelectedMailboxImpl(final MailboxManager mailboxManager, final List<Long> uids,
+ public SelectedMailboxImpl(final MailboxManager mailboxManager, final Iterator<Long> uids,
final MailboxSession mailboxSession, final MailboxPath path) throws MailboxException {
recentUids = new TreeSet<Long>();
recentUidRemoved = false;
Modified: james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/UidToMsnConverter.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/UidToMsnConverter.java?rev=982216&r1=982215&r2=982216&view=diff
==============================================================================
--- james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/UidToMsnConverter.java (original)
+++ james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/UidToMsnConverter.java Wed Aug 4 11:28:57 2010
@@ -20,8 +20,7 @@
package org.apache.james.imap.processor.base;
import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
+import java.util.Iterator;
import java.util.List;
import java.util.SortedMap;
import java.util.TreeMap;
@@ -41,14 +40,15 @@ public class UidToMsnConverter implement
private boolean closed = false;
- public UidToMsnConverter(final Collection<Long> uids) {
+ public UidToMsnConverter(final Iterator<Long> uids) {
+
msnToUid = new TreeMap<Integer, Long>();
uidToMsn = new TreeMap<Long, Integer>();
if (uids != null) {
int msn = 1;
- final List<Long> uidsInOrder = new ArrayList<Long>(uids);
- Collections.sort(uidsInOrder);
- for (final Long uid:uidsInOrder) {
+ while (uids.hasNext()) {
+ final Long uid = uids.next();
+
highestUid = uid.longValue();
highestMsn = msn;
final Integer msnInteger = new Integer(msn);
@@ -138,6 +138,10 @@ public class UidToMsnConverter implement
closed = true;
}
+ /*
+ * (non-Javadoc)
+ * @see org.apache.james.imap.mailbox.MailboxListener#isClosed()
+ */
public boolean isClosed() {
return closed;
}
Modified: james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMessageManager.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMessageManager.java?rev=982216&r1=982215&r2=982216&view=diff
==============================================================================
--- james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMessageManager.java (original)
+++ james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMessageManager.java Wed Aug 4 11:28:57 2010
@@ -51,7 +51,6 @@ import org.apache.james.imap.mailbox.Mes
import org.apache.james.imap.mailbox.SearchQuery;
import org.apache.james.imap.mailbox.MessageResult.FetchGroup;
import org.apache.james.imap.mailbox.util.MailboxEventDispatcher;
-import org.apache.james.imap.mailbox.util.UidRange;
import org.apache.james.imap.store.mail.MessageMapper;
import org.apache.james.imap.store.mail.model.Header;
import org.apache.james.imap.store.mail.model.Mailbox;
@@ -361,29 +360,11 @@ public abstract class StoreMessageManage
*/
public Iterator<MessageResult> getMessages(final MessageRange set, FetchGroup fetchGroup,
MailboxSession mailboxSession) throws MailboxException {
- UidRange range = uidRangeForMessageSet(set);
- final List<MailboxMembership<Id>> rows = new ArrayList<MailboxMembership<Id>>(messageMapper.findInMailbox(mailbox, set));
- return getMessages(fetchGroup, range, rows);
- }
-
- private ResultIterator<Id> getMessages(FetchGroup result, UidRange range, List<MailboxMembership<Id>> messages) {
- final ResultIterator<Id> results = getResults(result, messages);
- return results;
- }
-
- private ResultIterator<Id> getResults(FetchGroup result, List<MailboxMembership<Id>> messages) {
- final ResultIterator<Id> results = new ResultIterator<Id>(messages,result);
- return results;
- }
-
- private static UidRange uidRangeForMessageSet(MessageRange set) throws MailboxException {
- if (set.getType().equals(MessageRange.Type.ALL)) {
- return new UidRange(1, -1);
- } else {
- return new UidRange(set.getUidFrom(), set.getUidTo());
- }
+ final List<MailboxMembership<Id>> rows = messageMapper.findInMailbox(mailbox, set);
+ return new ResultIterator<Id>(rows, fetchGroup);
}
+
private Flags getPermanentFlags() {
Flags permanentFlags = new Flags();
permanentFlags.add(Flags.Flag.ANSWERED);
@@ -608,7 +589,6 @@ public abstract class StoreMessageManage
toMailbox.copy(originalRows, session);
} catch (MessagingException e) {
- e.printStackTrace();
throw new MailboxException(HumanReadableText.FAILURE_MAIL_PARSE, e);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org