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