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]

Reply via email to