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: [email protected]
For additional commands, e-mail: [email protected]