Author: rdonkin
Date: Fri Jan 23 06:29:45 2009
New Revision: 737031
URL: http://svn.apache.org/viewvc?rev=737031&view=rev
Log:
Simplified API
Removed:
james/protocols/imap/trunk/mailbox/src/test/java/org/apache/james/imap/mailbox/util/UidChangeTrackerTest.java
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/StoreProcessor.java
james/protocols/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/imap4rev1/fetch/FetchResponseBuilder.java
james/protocols/imap/trunk/store/src/main/java/org/apache/james/imap/store/ResultIterator.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/MessageRowUtils.java
james/protocols/imap/trunk/torque/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailbox.java
james/protocols/imap/trunk/torque/src/main/java/org/apache/james/mailboxmanager/torque/om/MessageFlags.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=737031&r1=737030&r2=737031&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 06:29:45 2009
@@ -21,6 +21,7 @@
import java.util.Date;
import java.util.Iterator;
+import java.util.Map;
import javax.mail.Flags;
@@ -51,25 +52,21 @@
/**
*
- * @param mailboxSession
- * TODO
+ * @param mailboxSession not null
* @return the uid that will be assigned to the next appended message
* @throws MailboxException
*/
- long getUidNext(MailboxSession mailboxSession)
- throws MailboxException;
+ long getUidNext(MailboxSession mailboxSession) throws MailboxException;
/**
* @return Flags that can be stored
*/
Flags getPermanentFlags();
- long[] recent(boolean reset, MailboxSession mailboxSession)
- throws MailboxException;
+ long[] recent(boolean reset, MailboxSession mailboxSession) throws
MailboxException;
- int getUnseenCount(MailboxSession mailboxSession)
- throws MailboxException;
+ int getUnseenCount(MailboxSession mailboxSession) throws MailboxException;
/**
* Gets the UID of the first unseen message.
@@ -91,9 +88,8 @@
Iterator<Long> expunge(MessageRange set, MailboxSession mailboxSession)
throws MailboxException;
/**
- * this is much more straight forward for IMAP instead of setting Flags of
- * an array of lazy-loading MimeMessages. <br />
- * required by IMAP
+ * Sets flags on messages within the given range.
+ * The new flags are returned for each message altered.
*
* @param flags
* Flags to be set
@@ -103,17 +99,13 @@
* replace all Flags with this flags, value has to be true
* @param set
* the range of messages
- * @param fetchGroup
- * fetch group for results
- * @param mailboxSession
- * TODO
+ * @param mailboxSession not null
* @return {...@link MessageResult} <code>Iterator</code> containing
messages
* whose flags have been updated, not null
* @throws MailboxException
*/
- Iterator setFlags(Flags flags, boolean value, boolean replace,
- MessageRange set, FetchGroup fetchGroup,
- MailboxSession mailboxSession) throws MailboxException;
+ Map<Long, Flags> setFlags(Flags flags, boolean value, boolean replace,
+ MessageRange set, MailboxSession mailboxSession) throws
MailboxException;
/**
* Appends a message to this mailbox.
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=737031&r1=737030&r2=737031&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 06:29:45 2009
@@ -21,7 +21,9 @@
import java.util.ArrayList;
import java.util.Collection;
+import java.util.HashMap;
import java.util.Iterator;
+import java.util.Map;
import java.util.Set;
import java.util.SortedMap;
import java.util.SortedSet;
@@ -72,16 +74,22 @@
* id of the session upating the flags
* @see #flagsUpdated(MessageResult, long)
*/
- public synchronized void flagsUpdated(MessageFlags[] messageFlags,
- long sessionId) {
- if (messageFlags != null) {
- final int length = messageFlags.length;
- for (int i = 0; i < length; i++) {
- final MessageFlags result = messageFlags[i];
- final long uid = result.getUid();
- final Flags flags = result.getFlags();
- final Long uidObject = new Long(uid);
- updatedFlags(uid, flags, uidObject, sessionId);
+ public synchronized void flagsUpdated(SortedMap<Long,Flags> newFlagsByUid,
Map<Long,Flags> originalFlagsByUid, long sessionId) {
+ if (newFlagsByUid != null) {
+ for(Map.Entry<Long, Flags> entry:newFlagsByUid.entrySet()) {
+ final Long uid = entry.getKey();
+ final Flags newFlags = entry.getValue();
+ final Flags cachedFlags = cache.get(uid);
+ final Flags lastFlags;
+ if (cachedFlags == null) {
+ lastFlags = originalFlagsByUid.get(uid);
+ } else {
+ lastFlags = cachedFlags;
+ }
+ if (!newFlags.equals(lastFlags)) {
+ eventDispatcher.flagsUpdated(uid, sessionId, lastFlags,
newFlags);
+ }
+ cache.put(uid, newFlags);
}
}
}
@@ -126,34 +134,33 @@
}
public synchronized void found(UidRange range,
- final Collection messageResults) throws MessagingException {
- found(range, MessageFlags.toMessageFlags(messageResults));
+ final Collection<MessageResult> messageResults) throws
MessagingException {
+ final Map<Long, Flags> flagsByIndex = new HashMap<Long, Flags>();
+ for (MessageResult result: messageResults) {
+ flagsByIndex.put(result.getUid(), result.getFlags());
+ }
+ found(range, flagsByIndex);
}
public synchronized void found(UidRange range,
- final MessageFlags[] messageFlags) {
+ final Map<Long, Flags> flagsByIndex) {
Set<Long> expectedSet = getSubSet(range);
- final int length = messageFlags.length;
- for (int i = 0; i < length; i++) {
- final MessageFlags message = messageFlags[i];
- if (message != null) {
- long uid = message.getUid();
- if (uid > lastScannedUid) {
- lastScannedUid = uid;
- }
- final Flags flags = message.getFlags();
- final Long uidLong = new Long(uid);
- if (expectedSet.contains(uidLong)) {
- expectedSet.remove(uidLong);
- updatedFlags(uid, flags, uidLong,
Mailbox.ANONYMOUS_SESSION);
- } else {
- cache.put(uidLong, flags);
- if (uid > lastUidAtStart) {
- eventDispatcher.added(uid, 0);
- }
+ for (Map.Entry<Long, Flags> entry:flagsByIndex.entrySet()) {
+ long uid = entry.getKey();
+ if (uid > lastScannedUid) {
+ lastScannedUid = uid;
+ }
+ final Flags flags = entry.getValue();
+ final Long uidLong = new Long(uid);
+ if (expectedSet.contains(uidLong)) {
+ expectedSet.remove(uidLong);
+ updatedFlags(uid, flags, uidLong, Mailbox.ANONYMOUS_SESSION);
+ } else {
+ cache.put(uidLong, flags);
+ if (uid > lastUidAtStart) {
+ eventDispatcher.added(uid, Mailbox.ANONYMOUS_SESSION);
}
}
-
}
if (lastScannedUid > lastUid) {
@@ -169,19 +176,16 @@
for (Iterator iter = expectedSet.iterator(); iter.hasNext();) {
long uid = ((Long) iter.next()).longValue();
- eventDispatcher.expunged(uid, 0);
+ eventDispatcher.expunged(uid, Mailbox.ANONYMOUS_SESSION);
}
}
private void updatedFlags(final long uid, final Flags flags,
final Long uidLong, final long sessionId) {
if (flags != null) {
- Flags cachedFlags = (Flags) cache.get(uidLong);
+ Flags cachedFlags = cache.get(uidLong);
if (cachedFlags == null || !flags.equals(cachedFlags)) {
- if (cachedFlags != null) {
- eventDispatcher.flagsUpdated(uid, sessionId, cachedFlags,
- flags);
- }
+ eventDispatcher.flagsUpdated(uid, sessionId, cachedFlags,
flags);
cache.put(uidLong, flags);
}
}
Modified:
james/protocols/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/imap4rev1/StoreProcessor.java
URL:
http://svn.apache.org/viewvc/james/protocols/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/imap4rev1/StoreProcessor.java?rev=737031&r1=737030&r2=737031&view=diff
==============================================================================
---
james/protocols/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/imap4rev1/StoreProcessor.java
(original)
+++
james/protocols/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/imap4rev1/StoreProcessor.java
Fri Jan 23 06:29:45 2009
@@ -19,7 +19,7 @@
package org.apache.james.imap.processor.imap4rev1;
-import java.util.Iterator;
+import java.util.Map;
import javax.mail.Flags;
@@ -36,18 +36,13 @@
import org.apache.james.imap.mailbox.MailboxManagerProvider;
import org.apache.james.imap.mailbox.MailboxSession;
import org.apache.james.imap.mailbox.MessageRange;
-import org.apache.james.imap.mailbox.MessageResult;
-import org.apache.james.imap.mailbox.MessageResult.FetchGroup;
-import org.apache.james.imap.mailbox.util.FetchGroupImpl;
import org.apache.james.imap.mailbox.util.MessageRangeImpl;
import org.apache.james.imap.message.request.imap4rev1.StoreRequest;
import org.apache.james.imap.message.response.imap4rev1.FetchResponse;
import org.apache.james.imap.processor.base.ImapSessionUtils;
public class StoreProcessor extends AbstractMailboxProcessor {
-
- private static final FetchGroup STORE_FETCH_GROUP = FetchGroupImpl.FLAGS;
-
+
public StoreProcessor(final ImapProcessor next, final
MailboxManagerProvider mailboxManagerProvider,
final StatusResponseFactory factory) {
super(next, mailboxManagerProvider, factory);
@@ -96,14 +91,13 @@
lowVal, highVal);
final MailboxSession mailboxSession = ImapSessionUtils
.getMailboxSession(session);
- final Iterator it = mailbox.setFlags(flags, value, replace,
- messageSet, STORE_FETCH_GROUP, mailboxSession);
+ final Map<Long, Flags> flagsByUid = mailbox.setFlags(flags,
value, replace,
+ messageSet, mailboxSession);
if (!silent) {
- while (it.hasNext()) {
- final MessageResult result = (MessageResult) it.next();
- final long uid = result.getUid();
+ for (Map.Entry<Long, Flags> entry: flagsByUid.entrySet()) {
+ final long uid = entry.getKey();
final int msn = selected.msn(uid);
- final Flags resultFlags = result.getFlags();
+ final Flags resultFlags = entry.getValue();
final Long resultUid;
if (useUids) {
resultUid = new Long(uid);
Modified:
james/protocols/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/imap4rev1/fetch/FetchResponseBuilder.java
URL:
http://svn.apache.org/viewvc/james/protocols/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/imap4rev1/fetch/FetchResponseBuilder.java?rev=737031&r1=737030&r2=737031&view=diff
==============================================================================
---
james/protocols/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/imap4rev1/fetch/FetchResponseBuilder.java
(original)
+++
james/protocols/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/imap4rev1/fetch/FetchResponseBuilder.java
Fri Jan 23 06:29:45 2009
@@ -40,7 +40,6 @@
import org.apache.james.imap.mailbox.MailboxException;
import org.apache.james.imap.mailbox.MailboxSession;
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.mailbox.util.MessageResultUtils;
import org.apache.james.imap.message.response.imap4rev1.FetchResponse;
@@ -117,8 +116,7 @@
final Flags resultFlags = result.getFlags();
if (fetch.isSetSeen() && !resultFlags.contains(Flags.Flag.SEEN)) {
mailbox.setFlags(new Flags(Flags.Flag.SEEN), true, false,
- MessageRangeImpl.oneUid(resultUid), FetchGroupImpl.MINIMAL,
- mailboxSession);
+ MessageRangeImpl.oneUid(resultUid), mailboxSession);
resultFlags.add(Flags.Flag.SEEN);
ensureFlagsResponse = true;
}
Modified:
james/protocols/imap/trunk/store/src/main/java/org/apache/james/imap/store/ResultIterator.java
URL:
http://svn.apache.org/viewvc/james/protocols/imap/trunk/store/src/main/java/org/apache/james/imap/store/ResultIterator.java?rev=737031&r1=737030&r2=737031&view=diff
==============================================================================
---
james/protocols/imap/trunk/store/src/main/java/org/apache/james/imap/store/ResultIterator.java
(original)
+++
james/protocols/imap/trunk/store/src/main/java/org/apache/james/imap/store/ResultIterator.java
Fri Jan 23 06:29:45 2009
@@ -52,12 +52,7 @@
}
this.fetchGroup = fetchGroup;
}
-
- public MessageFlags[] getMessageFlags() {
- final MessageFlags[] results = ResultUtils.toMessageFlags(messages);
- return results;
- }
-
+
/**
* Iterates over the contained rows.
*
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=737031&r1=737030&r2=737031&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 06:29:45 2009
@@ -27,9 +27,13 @@
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import java.util.Set;
+import java.util.SortedMap;
+import java.util.TreeMap;
import java.util.TreeSet;
import javax.mail.Flags;
@@ -57,6 +61,8 @@
public abstract class StoreMailbox extends AbstractLogEnabled implements
org.apache.james.imap.mailbox.Mailbox {
+ private static final int INITIAL_SIZE_FLAGS = 32;
+
private static final int INITIAL_SIZE_HEADERS = 32;
protected final long mailboxId;
@@ -186,8 +192,12 @@
}
private ResultIterator getMessages(FetchGroup result, UidRange range,
List<MailboxMembership> messages) {
+ final Map<Long, Flags> flagsByIndex = new HashMap<Long, Flags>();
+ for (MailboxMembership member:messages) {
+ flagsByIndex.put(member.getUid(), member.createFlags());
+ }
final ResultIterator results = getResults(result, messages);
- getUidChangeTracker().found(range, results.getMessageFlags());
+ getUidChangeTracker().found(range, flagsByIndex);
return results;
}
@@ -293,23 +303,20 @@
return uids.iterator();
}
- public Iterator setFlags(Flags flags, boolean value, boolean replace,
- MessageRange set, FetchGroup fetchGroup,
- MailboxSession mailboxSession) throws MailboxException {
- return doSetFlags(flags, value, replace, set, fetchGroup,
- mailboxSession);
+ public Map<Long, Flags> setFlags(Flags flags, boolean value, boolean
replace,
+ MessageRange set, MailboxSession mailboxSession) throws
MailboxException {
+ return doSetFlags(flags, value, replace, set, mailboxSession);
}
- private Iterator doSetFlags(Flags flags, boolean value, boolean replace,
- final MessageRange set, FetchGroup fetchGroup,
- MailboxSession mailboxSession) throws MailboxException {
+ private Map<Long, Flags> doSetFlags(Flags flags, boolean value, boolean
replace,
+ final MessageRange set, MailboxSession mailboxSession) throws
MailboxException {
final MessageMapper mapper = createMessageMapper();
+ final SortedMap<Long, Flags> newFlagsByUid = new TreeMap<Long,
Flags>();
+ final Map<Long, Flags> originalFlagsByUid = new HashMap<Long,
Flags>(INITIAL_SIZE_FLAGS);
mapper.begin();
final List<MailboxMembership> members = mapper.findInMailbox(set,
mailboxId);
- UidRange uidRange = uidRangeForMessageSet(set);
- getUidChangeTracker().found(uidRange,
- ResultUtils.toMessageFlags(members));
for (final MailboxMembership member:members) {
+ originalFlagsByUid.put(member.getUid(), member.createFlags());
if (replace) {
member.setFlags(flags);
} else {
@@ -321,18 +328,12 @@
}
member.setFlags(current);
}
+ newFlagsByUid.put(member.getUid(), member.createFlags());
mapper.save(member);
}
- final OrFetchGroup orFetchGroup = new OrFetchGroup(fetchGroup,
- FetchGroup.FLAGS);
- final ResultIterator resultIterator = new ResultIterator(
- members, orFetchGroup);
- final org.apache.james.imap.mailbox.util.MessageFlags[] messageFlags =
resultIterator
- .getMessageFlags();
mapper.commit();
- tracker.flagsUpdated(messageFlags, mailboxSession.getSessionId());
- tracker.found(uidRange, messageFlags);
- return resultIterator;
+ tracker.flagsUpdated(newFlagsByUid, originalFlagsByUid,
mailboxSession.getSessionId());
+ return newFlagsByUid;
}
public void addListener(MailboxListener listener) throws MailboxException {
Modified:
james/protocols/imap/trunk/torque/src/main/java/org/apache/james/mailboxmanager/torque/MessageRowUtils.java
URL:
http://svn.apache.org/viewvc/james/protocols/imap/trunk/torque/src/main/java/org/apache/james/mailboxmanager/torque/MessageRowUtils.java?rev=737031&r1=737030&r2=737031&view=diff
==============================================================================
---
james/protocols/imap/trunk/torque/src/main/java/org/apache/james/mailboxmanager/torque/MessageRowUtils.java
(original)
+++
james/protocols/imap/trunk/torque/src/main/java/org/apache/james/mailboxmanager/torque/MessageRowUtils.java
Fri Jan 23 06:29:45 2009
@@ -67,7 +67,7 @@
int i = 0;
for (final Iterator it = messageRows.iterator(); it.hasNext();) {
MessageRow row = (MessageRow) it.next();
- final Flags flags = row.getMessageFlags().getFlagsObject();
+ final Flags flags = row.getMessageFlags().createFlags();
final long uid = row.getUid();
results[i++] = new MessageFlags(uid, flags);
}
@@ -134,7 +134,7 @@
org.apache.james.mailboxmanager.torque.om.MessageFlags
messageFlags = messageRow
.getMessageFlags();
if (messageFlags != null) {
- messageResult.setFlags(messageFlags.getFlagsObject());
+ messageResult.setFlags(messageFlags.createFlags());
}
content -= FetchGroup.FLAGS;
}
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=737031&r1=737030&r2=737031&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 06:29:45 2009
@@ -28,9 +28,13 @@
import java.util.Collections;
import java.util.Date;
import java.util.Enumeration;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import java.util.Set;
+import java.util.SortedMap;
+import java.util.TreeMap;
import java.util.TreeSet;
import javax.mail.Flags;
@@ -305,12 +309,17 @@
}
}
+ @SuppressWarnings("unchecked")
private TorqueResultIterator getMessages(FetchGroup result, UidRange range,
Criteria c) throws TorqueException, MessagingException,
MailboxException {
- List rows = MessageRowPeer.doSelectJoinMessageFlags(c);
+ List<MessageRow> rows = MessageRowPeer.doSelectJoinMessageFlags(c);
+ final Map<Long, Flags> flagsByIndex = new HashMap<Long, Flags>();
+ for (MessageRow row:rows) {
+ flagsByIndex.put(row.getUid(),
row.getMessageFlags().createFlags());
+ }
final TorqueResultIterator results = getResults(result, rows);
- getUidChangeTracker().found(range, results.getMessageFlags());
+ getUidChangeTracker().found(range, flagsByIndex);
return results;
}
@@ -503,14 +512,12 @@
}
}
- public Iterator setFlags(Flags flags, boolean value, boolean replace,
- MessageRange set, FetchGroup fetchGroup,
- MailboxSession mailboxSession) throws MailboxException {
+ public Map<Long, Flags> setFlags(Flags flags, boolean value, boolean
replace,
+ MessageRange set, MailboxSession mailboxSession) throws
MailboxException {
try {
lock.writeLock().acquire();
try {
- return doSetFlags(flags, value, replace, set, fetchGroup,
- mailboxSession);
+ return doSetFlags(flags, value, replace, set, mailboxSession);
} finally {
lock.writeLock().release();
}
@@ -520,25 +527,23 @@
}
}
- private Iterator doSetFlags(Flags flags, boolean value, boolean replace,
- final MessageRange set, FetchGroup fetchGroup,
- MailboxSession mailboxSession) throws MailboxException {
+ private Map<Long, Flags> doSetFlags(Flags flags, boolean value, boolean
replace,
+ final MessageRange set, MailboxSession mailboxSession) throws
MailboxException {
checkAccess();
try {
// TODO put this into a serializeable transaction
- final List messageRows = getMailboxRow().getMessageRows(
- criteriaForMessageSet(set));
- UidRange uidRange = uidRangeForMessageSet(set);
- getUidChangeTracker().found(uidRange,
- MessageRowUtils.toMessageFlags(messageRows));
+ final List messageRows =
getMailboxRow().getMessageRows(criteriaForMessageSet(set));
+ SortedMap<Long, Flags> newFlagsByUid = new TreeMap<Long, Flags>();
+ Map<Long, Flags> originalFlagsByUid = new HashMap<Long, Flags>(32);
for (Iterator iter = messageRows.iterator(); iter.hasNext();) {
final MessageRow messageRow = (MessageRow) iter.next();
final MessageFlags messageFlags = messageRow.getMessageFlags();
if (messageFlags != null) {
+ originalFlagsByUid.put(messageRow.getUid(),
messageFlags.createFlags());
if (replace) {
messageFlags.setFlags(flags);
} else {
- Flags current = messageFlags.getFlagsObject();
+ Flags current = messageFlags.createFlags();
if (value) {
current.add(flags);
} else {
@@ -546,18 +551,15 @@
}
messageFlags.setFlags(current);
}
+ newFlagsByUid.put(messageRow.getUid(),
messageFlags.createFlags());
messageFlags.save();
}
}
- final OrFetchGroup orFetchGroup = new OrFetchGroup(fetchGroup,
- FetchGroup.FLAGS);
- final TorqueResultIterator resultIterator = new
TorqueResultIterator(
- messageRows, orFetchGroup);
+ final TorqueResultIterator resultIterator = new
TorqueResultIterator(messageRows, FetchGroupImpl.FLAGS);
final org.apache.james.imap.mailbox.util.MessageFlags[]
messageFlags = resultIterator
.getMessageFlags();
- tracker.flagsUpdated(messageFlags, mailboxSession.getSessionId());
- tracker.found(uidRange, messageFlags);
- return resultIterator;
+ tracker.flagsUpdated(newFlagsByUid, originalFlagsByUid,
mailboxSession.getSessionId());
+ return newFlagsByUid;
} catch (Exception e) {
throw new MailboxException(e);
}
@@ -774,7 +776,7 @@
newRow.setInternalDate(fromRow.getInternalDate());
newRow.setSize(fromRow.getSize());
buildFlags(newRow, fromRow.getMessageFlags()
- .getFlagsObject());
+ .createFlags());
final List headers = fromRow.getMessageHeaders();
for (Iterator iterator = headers.iterator(); iterator
Modified:
james/protocols/imap/trunk/torque/src/main/java/org/apache/james/mailboxmanager/torque/om/MessageFlags.java
URL:
http://svn.apache.org/viewvc/james/protocols/imap/trunk/torque/src/main/java/org/apache/james/mailboxmanager/torque/om/MessageFlags.java?rev=737031&r1=737030&r2=737031&view=diff
==============================================================================
---
james/protocols/imap/trunk/torque/src/main/java/org/apache/james/mailboxmanager/torque/om/MessageFlags.java
(original)
+++
james/protocols/imap/trunk/torque/src/main/java/org/apache/james/mailboxmanager/torque/om/MessageFlags.java
Fri Jan 23 06:29:45 2009
@@ -45,7 +45,7 @@
setSeen(flags.contains(Flags.Flag.SEEN));
}
- public Flags getFlagsObject() {
+ public Flags createFlags() {
Flags flags = new Flags();
if (getAnswered()) {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]