This seems to cause the mailbox-integration-test failures. "public Iterator<MessageResult> getMessages(...)" may now return a null value, which wasn't the case before. It should IMO at least an EmptyIterator instead of a null value.
Regards Felix On 03/06/2011 04:31 PM, [email protected] wrote: > Author: wstrzalka > Date: Sun Mar 6 15:31:48 2011 > New Revision: 1078490 > > URL: http://svn.apache.org/viewvc?rev=1078490&view=rev > Log: > Minor refactoring to IMAP-258 > > Modified: > > james/mailbox/trunk/api/src/main/java/org/apache/james/mailbox/MessageRange.java > > james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java > > Modified: > james/mailbox/trunk/api/src/main/java/org/apache/james/mailbox/MessageRange.java > URL: > http://svn.apache.org/viewvc/james/mailbox/trunk/api/src/main/java/org/apache/james/mailbox/MessageRange.java?rev=1078490&r1=1078489&r2=1078490&view=diff > ============================================================================== > --- > james/mailbox/trunk/api/src/main/java/org/apache/james/mailbox/MessageRange.java > (original) > +++ > james/mailbox/trunk/api/src/main/java/org/apache/james/mailbox/MessageRange.java > Sun Mar 6 15:31:48 2011 > @@ -189,4 +189,11 @@ public class MessageRange { > public String toString() { > return "TYPE: " + type + " UID: " + uidFrom + ":" + uidTo + > (batchSize > 0 ? " BATCH: "+batchSize : ""); > } > + > + public MessageRange getUnlimitedRange() { > + if(this.batchSize == UNLIMITED_BATCH) > + return this; > + else > + return new MessageRange(type, uidFrom, uidTo, > UNLIMITED_BATCH); > + } > } > > Modified: > james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java > URL: > http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java?rev=1078490&r1=1078489&r2=1078490&view=diff > ============================================================================== > --- > james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java > (original) > +++ > james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java > Sun Mar 6 15:31:48 2011 > @@ -479,18 +479,30 @@ public abstract class StoreMessageManage > */ > public Iterator<MessageResult> getMessages(final MessageRange set, > FetchGroup fetchGroup, > MailboxSession mailboxSession) throws MailboxException { > - > - final List<MailboxMembership<Id>> rows = new > ArrayList<MailboxMembership<Id>>(); > - > - > mapperFactory.getMessageMapper(mailboxSession).findInMailbox(getMailboxEntity(), > set, new MailboxMembershipCallback<Id>() { > - public void > onMailboxMembers(List<MailboxMembership<Id>> batchRows) throws > MailboxException { > - rows.addAll(batchRows); > + > + class InterceptingCallback implements MessageCallback { > + Iterator<MessageResult> iterator; > + > + public void onMessages(Iterator<MessageResult> it) > throws MailboxException { > + iterator = it; > } > - }); > + > + public Iterator<MessageResult> getIterator() { > + return iterator; > + } > + } > + > + // if we are intercepting callback - let's make it effective > + MessageRange nonBatchedSet = set.getUnlimitedRange(); > + > + // intercepting callback > + InterceptingCallback callback = new InterceptingCallback(); > + this.getMessages(nonBatchedSet, fetchGroup, mailboxSession, callback); > > - return new ResultIterator<Id>(rows.iterator(), fetchGroup); > + return callback.getIterator(); > } > > + > /* > * (non-Javadoc) > * @see > org.apache.james.mailbox.MessageManager#getMessages(org.apache.james.mailbox.MessageRange, > org.apache.james.mailbox.MessageResult.FetchGroup, > org.apache.james.mailbox.MailboxSession, int, > org.apache.james.mailbox.MessageManager.MessageCallback) > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
