Author: rdonkin
Date: Fri Jan 23 02:36:16 2009
New Revision: 736989

URL: http://svn.apache.org/viewvc?rev=736989&view=rev
Log:
Simplified API

Modified:
    
james/protocols/imap/trunk/mailbox/src/main/java/org/apache/james/imap/mailbox/Mailbox.java
    
james/protocols/imap/trunk/mailbox/src/main/java/org/apache/james/imap/mailbox/util/UidChangeTracker.java
    
james/protocols/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/imap4rev1/CloseProcessor.java
    
james/protocols/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/imap4rev1/ExpungeProcessor.java
    
james/protocols/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailbox.java
    
james/protocols/imap/trunk/torque/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailbox.java

Modified: 
james/protocols/imap/trunk/mailbox/src/main/java/org/apache/james/imap/mailbox/Mailbox.java
URL: 
http://svn.apache.org/viewvc/james/protocols/imap/trunk/mailbox/src/main/java/org/apache/james/imap/mailbox/Mailbox.java?rev=736989&r1=736988&r2=736989&view=diff
==============================================================================
--- 
james/protocols/imap/trunk/mailbox/src/main/java/org/apache/james/imap/mailbox/Mailbox.java
 (original)
+++ 
james/protocols/imap/trunk/mailbox/src/main/java/org/apache/james/imap/mailbox/Mailbox.java
 Fri Jan 23 02:36:16 2009
@@ -81,28 +81,14 @@
     Long getFirstUnseen(MailboxSession mailboxSession) throws MailboxException;
 
     /**
-     * 
-     * @param set
-     *            <ul>
-     *            <li> IMAP, Javamail: not required, always expunge all</li>
-     *            <li> UIDPLUS: requires the possibility of defining a uid 
range</li>
-     *            </ul>
-     * @param fetchGroup
-     *            which fields to be returned in MessageResult
-     * @param mailboxSession
-     *            TODO
-     * 
-     * @return {...@link MessageResult} <code>Iterator</code> with the fields
-     *         defined by <b>result</b><br />
-     *         <ul>
-     *         <li> IMAP, UIDPLUS: nothing required </li>
-     *         <li> Javamail Folder: requires the expunged Message[]</li>
-     *         </ul>
+     * Expunges messages in the given range from this mailbox.
+     * @param set not null
+     * @param mailboxSession not null
+     * @return 
      * @throws MailboxException
      *             if anything went wrong
      */
-    Iterator expunge(MessageRange set, FetchGroup fetchGroup,
-            MailboxSession mailboxSession) throws MailboxException;
+    Iterator<Long> expunge(MessageRange set, MailboxSession mailboxSession) 
throws MailboxException;
 
     /**
      * this is much more straight forward for IMAP instead of setting Flags of

Modified: 
james/protocols/imap/trunk/mailbox/src/main/java/org/apache/james/imap/mailbox/util/UidChangeTracker.java
URL: 
http://svn.apache.org/viewvc/james/protocols/imap/trunk/mailbox/src/main/java/org/apache/james/imap/mailbox/util/UidChangeTracker.java?rev=736989&r1=736988&r2=736989&view=diff
==============================================================================
--- 
james/protocols/imap/trunk/mailbox/src/main/java/org/apache/james/imap/mailbox/util/UidChangeTracker.java
 (original)
+++ 
james/protocols/imap/trunk/mailbox/src/main/java/org/apache/james/imap/mailbox/util/UidChangeTracker.java
 Fri Jan 23 02:36:16 2009
@@ -56,11 +56,9 @@
         cache = new TreeMap<Long, Flags>();
     }
 
-    public synchronized void expunged(final long[] uidsExpunged) {
-        final int length = uidsExpunged.length;
-        for (int i = 0; i < length; i++) {
-            final long uid = uidsExpunged[i];
-            cache.remove(new Long(uid));
+    public synchronized void expunged(final Collection<Long> uidsExpunged) {
+        for (Long uid:uidsExpunged) {
+            cache.remove(uid);
             eventDispatcher.expunged(uid, 0);
         }
     }

Modified: 
james/protocols/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/imap4rev1/CloseProcessor.java
URL: 
http://svn.apache.org/viewvc/james/protocols/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/imap4rev1/CloseProcessor.java?rev=736989&r1=736988&r2=736989&view=diff
==============================================================================
--- 
james/protocols/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/imap4rev1/CloseProcessor.java
 (original)
+++ 
james/protocols/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/imap4rev1/CloseProcessor.java
 Fri Jan 23 02:36:16 2009
@@ -29,7 +29,6 @@
 import org.apache.james.imap.mailbox.MailboxException;
 import org.apache.james.imap.mailbox.MailboxManagerProvider;
 import org.apache.james.imap.mailbox.MailboxSession;
-import org.apache.james.imap.mailbox.util.FetchGroupImpl;
 import org.apache.james.imap.mailbox.util.MessageRangeImpl;
 import org.apache.james.imap.message.request.imap4rev1.CloseRequest;
 import org.apache.james.imap.processor.base.ImapSessionUtils;
@@ -53,8 +52,7 @@
                 
                     final MailboxSession mailboxSession = ImapSessionUtils
                             .getMailboxSession(session);
-                    mailbox.expunge(MessageRangeImpl.all(), 
FetchGroupImpl.MINIMAL,
-                            mailboxSession);
+                    mailbox.expunge(MessageRangeImpl.all(), mailboxSession);
                     session.deselect();
                     // TODO: the following comment was present in the code 
before
                     // refactoring

Modified: 
james/protocols/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/imap4rev1/ExpungeProcessor.java
URL: 
http://svn.apache.org/viewvc/james/protocols/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/imap4rev1/ExpungeProcessor.java?rev=736989&r1=736988&r2=736989&view=diff
==============================================================================
--- 
james/protocols/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/imap4rev1/ExpungeProcessor.java
 (original)
+++ 
james/protocols/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/imap4rev1/ExpungeProcessor.java
 Fri Jan 23 02:36:16 2009
@@ -32,8 +32,6 @@
 import org.apache.james.imap.mailbox.Mailbox;
 import org.apache.james.imap.mailbox.MailboxException;
 import org.apache.james.imap.mailbox.MailboxManagerProvider;
-import org.apache.james.imap.mailbox.MessageResult;
-import org.apache.james.imap.mailbox.util.FetchGroupImpl;
 import org.apache.james.imap.mailbox.util.MessageRangeImpl;
 import org.apache.james.imap.message.request.imap4rev1.ExpungeRequest;
 import org.apache.james.imap.processor.base.ImapSessionUtils;
@@ -58,15 +56,14 @@
                 no(command, tag, responder,
                         HumanReadableTextKey.MAILBOX_IS_READ_ONLY);
             } else {
-                final Iterator it = mailbox.expunge(MessageRangeImpl.all(),
-                        FetchGroupImpl.MINIMAL, ImapSessionUtils
+                final Iterator<Long> it = 
mailbox.expunge(MessageRangeImpl.all(),
+                        ImapSessionUtils
                         .getMailboxSession(session));
                 final SelectedMailbox mailboxSession = session
                 .getSelected();
                 if (mailboxSession != null) {
                     while (it.hasNext()) {
-                        final MessageResult result = (MessageResult) it.next();
-                        final long uid = result.getUid();
+                        final long uid = it.next();
                         mailboxSession.removeRecent(uid);
                     }
                 }

Modified: 
james/protocols/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailbox.java
URL: 
http://svn.apache.org/viewvc/james/protocols/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailbox.java?rev=736989&r1=736988&r2=736989&view=diff
==============================================================================
--- 
james/protocols/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailbox.java
 (original)
+++ 
james/protocols/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailbox.java
 Fri Jan 23 02:36:16 2009
@@ -24,6 +24,7 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.Date;
 import java.util.Iterator;
@@ -273,39 +274,23 @@
         return count;
     }
 
-    public Iterator expunge(MessageRange set, FetchGroup fetchGroup,
-            MailboxSession mailboxSession) throws MailboxException {
-        return doExpunge(set, fetchGroup);
+    public Iterator<Long> expunge(MessageRange set, MailboxSession 
mailboxSession) throws MailboxException {
+        return doExpunge(set);
     }
 
-    private Iterator doExpunge(final MessageRange set, FetchGroup fetchGroup)
+    private Iterator<Long> doExpunge(final MessageRange set)
     throws MailboxException {
         final MessageMapper mapper = createMessageMapper();
         mapper.begin();
         final List<MailboxMembership> members = 
mapper.findMarkedForDeletionInMailbox(set, mailboxId);
-        final long[] uids = uids(members);
-        final OrFetchGroup orFetchGroup = new OrFetchGroup(fetchGroup, 
FetchGroup.FLAGS);
-        final ResultIterator resultIterator = new ResultIterator(members, 
orFetchGroup);
-        // ensure all results are loaded before deletion
-        final List<MessageResult> messageResults = resultIterator.toList();
-
+        final Collection<Long> uids = new TreeSet<Long>();
         for (MailboxMembership message:members) {
+            uids.add(message.getUid());
             mapper.delete(message);
         }
         mapper.commit();
         getUidChangeTracker().expunged(uids);
-        return messageResults.iterator();
-    }
-
-
-    private long[] uids(List<MailboxMembership> members) {
-        final int size = members.size();
-        long[] results = new long[size];
-        for (int i = 0; i < size; i++) {
-            final MailboxMembership member = members.get(i);
-            results[i] = member.getUid();
-        }
-        return results;
+        return uids.iterator();
     }
 
     public Iterator setFlags(Flags flags, boolean value, boolean replace,

Modified: 
james/protocols/imap/trunk/torque/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailbox.java
URL: 
http://svn.apache.org/viewvc/james/protocols/imap/trunk/torque/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailbox.java?rev=736989&r1=736988&r2=736989&view=diff
==============================================================================
--- 
james/protocols/imap/trunk/torque/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailbox.java
 (original)
+++ 
james/protocols/imap/trunk/torque/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailbox.java
 Fri Jan 23 02:36:16 2009
@@ -37,7 +37,6 @@
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeMessage;
 
-import org.apache.commons.collections.IteratorUtils;
 import org.apache.commons.logging.Log;
 import org.apache.james.api.imap.AbstractLogEnabled;
 import org.apache.james.imap.mailbox.Mailbox;
@@ -459,12 +458,11 @@
         }
     }
 
-    public Iterator expunge(MessageRange set, FetchGroup fetchGroup,
-            MailboxSession mailboxSession) throws MailboxException {
+    public Iterator<Long> expunge(MessageRange set, MailboxSession 
mailboxSession) throws MailboxException {
         try {
             lock.writeLock().acquire();
             try {
-                return doExpunge(set, fetchGroup);
+                return doExpunge(set);
             } finally {
                 lock.writeLock().release();
             }
@@ -474,7 +472,7 @@
         }
     }
 
-    private Iterator doExpunge(final MessageRange set, FetchGroup fetchGroup)
+    private Iterator<Long> doExpunge(final MessageRange set)
             throws MailboxException {
         checkAccess();
         try {
@@ -486,16 +484,11 @@
             c.add(MessageFlagsPeer.DELETED, true);
 
             final List messageRows = getMailboxRow().getMessageRows(c);
-            final long[] uids = uids(messageRows);
-            final OrFetchGroup orFetchGroup = new OrFetchGroup(fetchGroup,
-                    FetchGroup.FLAGS);
-            final TorqueResultIterator resultIterator = new 
TorqueResultIterator(
-                    messageRows, orFetchGroup);
-            // ensure all results are loaded before deletion
-            Collection messageResults = IteratorUtils.toList(resultIterator);
+            final Collection<Long> uids = new TreeSet<Long>();
 
             for (Iterator iter = messageRows.iterator(); iter.hasNext();) {
                 MessageRow messageRow = (MessageRow) iter.next();
+                uids.add(messageRow.getUid());
                 Criteria todelc = new Criteria();
                 todelc
                         .add(MessageRowPeer.MAILBOX_ID, messageRow
@@ -504,22 +497,12 @@
                 MessageRowPeer.doDelete(todelc);
             }
             getUidChangeTracker().expunged(uids);
-            return messageResults.iterator();
+            return uids.iterator();
         } catch (Exception e) {
             throw new MailboxException(e);
         }
     }
 
-    private long[] uids(List messageRows) {
-        final int size = messageRows.size();
-        long[] results = new long[size];
-        for (int i = 0; i < size; i++) {
-            final MessageRow messageRow = (MessageRow) messageRows.get(i);
-            results[i] = (messageRow).getUid();
-        }
-        return results;
-    }
-
     public Iterator setFlags(Flags flags, boolean value, boolean replace,
             MessageRange set, FetchGroup fetchGroup,
             MailboxSession mailboxSession) throws MailboxException {



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to