You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by no...@apache.org on 2010/12/05 19:54:33 UTC
svn commit: r1042400 - in /james/mailbox/trunk:
jcr/src/main/java/org/apache/james/mailbox/jcr/mail/
jpa/src/main/java/org/apache/james/mailbox/jpa/mail/
jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/
maildir/src/main/java/org/apach...
Author: norman
Date: Sun Dec 5 18:54:32 2010
New Revision: 1042400
URL: http://svn.apache.org/viewvc?rev=1042400&view=rev
Log:
Replace MessageMapper.save(..) with MessageMapper.add(..) and MessageMapper.updateFlags(..). See MAILBOX-17
Modified:
james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRMessageMapper.java
james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMessageMapper.java
james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/AbstractJPAMailboxMembership.java
james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMessageMapper.java
james/mailbox/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMessageMapper.java
james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/MessageMapper.java
james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/model/MailboxMembership.java
Modified: james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRMessageMapper.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRMessageMapper.java?rev=1042400&r1=1042399&r2=1042400&view=diff
==============================================================================
--- james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRMessageMapper.java (original)
+++ james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRMessageMapper.java Sun Dec 5 18:54:32 2010
@@ -32,6 +32,7 @@ import javax.jcr.RepositoryException;
import javax.jcr.query.Query;
import javax.jcr.query.QueryManager;
import javax.jcr.query.QueryResult;
+import javax.mail.Flags;
import org.apache.commons.logging.Log;
import org.apache.jackrabbit.commons.JcrUtils;
@@ -47,6 +48,7 @@ import org.apache.james.mailbox.jcr.Abst
import org.apache.james.mailbox.jcr.MailboxSessionJCRRepository;
import org.apache.james.mailbox.jcr.mail.model.JCRMessage;
import org.apache.james.mailbox.store.SearchQueryIterator;
+import org.apache.james.mailbox.store.UpdatedFlag;
import org.apache.james.mailbox.store.mail.MessageMapper;
import org.apache.james.mailbox.store.mail.UidProvider;
import org.apache.james.mailbox.store.mail.model.Mailbox;
@@ -452,7 +454,7 @@ public class JCRMessageMapper extends Ab
* (non-Javadoc)
* @see org.apache.james.mailbox.store.mail.MessageMapper#save(org.apache.james.mailbox.store.mail.model.Mailbox, org.apache.james.mailbox.store.mail.model.MailboxMembership)
*/
- public long save(Mailbox<String> mailbox, MailboxMembership<String> message) throws MailboxException {
+ public long add(Mailbox<String> mailbox, MailboxMembership<String> message) throws MailboxException {
final JCRMessage membership = (JCRMessage) message;
try {
@@ -660,6 +662,50 @@ public class JCRMessageMapper extends Ab
}
}
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.james.mailbox.store.mail.MessageMapper#updateFlags(org.apache.james.mailbox.store.mail.model.Mailbox, javax.mail.Flags, boolean, boolean, org.apache.james.mailbox.MessageRange)
+ */
+ public Iterator<UpdatedFlag> updateFlags(Mailbox<String> mailbox, Flags flags, boolean value, boolean replace, MessageRange set) throws MailboxException {
+ final List<UpdatedFlag> updatedFlags = new ArrayList<UpdatedFlag>();
+
+ final List<MailboxMembership<String>> members = findInMailbox(mailbox, set);
+ for (final MailboxMembership<String> member:members) {
+ Flags originalFlags = member.createFlags();
+ if (replace) {
+ member.setFlags(flags);
+ } else {
+ Flags current = member.createFlags();
+ if (value) {
+ current.add(flags);
+ } else {
+ current.remove(flags);
+ }
+ member.setFlags(current);
+ }
+ Flags newFlags = member.createFlags();
+
+ JCRMessage membership = (JCRMessage) member;
+ if (membership.isPersistent()) {
+ try {
+ Node messageNode = getSession().getNodeByIdentifier(membership.getId());
+ membership.merge(messageNode);
+ } catch (RepositoryException e) {
+ throw new MailboxException("Unable to update flags for message " + membership + " in mailbox " + mailbox, e);
+
+ } catch (IOException e) {
+ throw new MailboxException("Unable to update flags for message " + membership + " in mailbox " + mailbox, e);
+
+ }
+ }
+
+
+ updatedFlags.add(new UpdatedFlag(member.getUid(),originalFlags, newFlags));
+ }
+
+ return updatedFlags.iterator();
+ }
}
Modified: james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMessageMapper.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMessageMapper.java?rev=1042400&r1=1042399&r2=1042400&view=diff
==============================================================================
--- james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMessageMapper.java (original)
+++ james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMessageMapper.java Sun Dec 5 18:54:32 2010
@@ -18,9 +18,11 @@
****************************************************************/
package org.apache.james.mailbox.jpa.mail;
+import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
+import javax.mail.Flags;
import javax.persistence.EntityManagerFactory;
import javax.persistence.PersistenceException;
import javax.persistence.Query;
@@ -37,6 +39,7 @@ import org.apache.james.mailbox.jpa.mail
import org.apache.james.mailbox.jpa.mail.model.openjpa.JPAMailboxMembership;
import org.apache.james.mailbox.jpa.mail.model.openjpa.JPAStreamingMailboxMembership;
import org.apache.james.mailbox.store.SearchQueryIterator;
+import org.apache.james.mailbox.store.UpdatedFlag;
import org.apache.james.mailbox.store.mail.MessageMapper;
import org.apache.james.mailbox.store.mail.UidProvider;
import org.apache.james.mailbox.store.mail.model.Mailbox;
@@ -295,15 +298,16 @@ public class JPAMessageMapper extends JP
}
}
- /**
- * @see org.apache.james.mailbox.store.mail.MessageMapper#save(MailboxMembership)
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.james.mailbox.store.mail.MessageMapper#add(org.apache.james.mailbox.store.mail.model.Mailbox, org.apache.james.mailbox.store.mail.model.MailboxMembership)
*/
- public long save(Mailbox<Long> mailbox, MailboxMembership<Long> message) throws MailboxException {
+ public long add(Mailbox<Long> mailbox, MailboxMembership<Long> message) throws MailboxException {
try {
- if (message.getUid() == 0) {
- ((AbstractJPAMailboxMembership) message).setUid(uidGenerator.nextUid(session,mailbox));
- }
+ ((AbstractJPAMailboxMembership) message).setUid(uidGenerator.nextUid(session,mailbox));
+
getEntityManager().persist(message);
return message.getUid();
} catch (PersistenceException e) {
@@ -323,7 +327,38 @@ public class JPAMessageMapper extends JP
} else {
copy = new JPAMailboxMembership(mailbox.getMailboxId(), (AbstractJPAMailboxMembership) original);
}
- return save(mailbox, copy);
+ return add(mailbox, copy);
+ }
+
+
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.james.mailbox.store.mail.MessageMapper#updateFlags(org.apache.james.mailbox.store.mail.model.Mailbox, javax.mail.Flags, boolean, boolean, org.apache.james.mailbox.MessageRange)
+ */
+ public Iterator<UpdatedFlag> updateFlags(Mailbox<Long> mailbox, Flags flags, boolean value, boolean replace, MessageRange set) throws MailboxException {
+ final List<UpdatedFlag> updatedFlags = new ArrayList<UpdatedFlag>();
+
+ final List<MailboxMembership<Long>> members = findInMailbox(mailbox, set);
+ for (final MailboxMembership<Long> member:members) {
+ Flags originalFlags = member.createFlags();
+ if (replace) {
+ member.setFlags(flags);
+ } else {
+ Flags current = member.createFlags();
+ if (value) {
+ current.add(flags);
+ } else {
+ current.remove(flags);
+ }
+ member.setFlags(current);
+ }
+ Flags newFlags = member.createFlags();
+ getEntityManager().persist(member);
+ updatedFlags.add(new UpdatedFlag(member.getUid(),originalFlags, newFlags));
+ }
+
+ return updatedFlags.iterator();
}
}
Modified: james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/AbstractJPAMailboxMembership.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/AbstractJPAMailboxMembership.java?rev=1042400&r1=1042399&r2=1042400&view=diff
==============================================================================
--- james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/AbstractJPAMailboxMembership.java (original)
+++ james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/AbstractJPAMailboxMembership.java Sun Dec 5 18:54:32 2010
@@ -235,13 +235,7 @@ public abstract class AbstractJPAMailbox
return seen;
}
-
- /**
- * @see org.apache.james.mailbox.store.mail.model.MailboxMembership#unsetRecent()
- */
- public void unsetRecent() {
- recent = false;
- }
+
/**
* @see org.apache.james.mailbox.store.mail.model.MailboxMembership#setFlags(javax.mail.Flags)
Modified: james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMessageMapper.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMessageMapper.java?rev=1042400&r1=1042399&r2=1042400&view=diff
==============================================================================
--- james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMessageMapper.java (original)
+++ james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMessageMapper.java Sun Dec 5 18:54:32 2010
@@ -30,6 +30,8 @@ import java.util.List;
import java.util.Map.Entry;
import java.util.SortedMap;
+import javax.mail.Flags;
+
import org.apache.commons.io.FileUtils;
import org.apache.james.mailbox.MailboxException;
import org.apache.james.mailbox.MessageRange;
@@ -45,6 +47,7 @@ import org.apache.james.mailbox.maildir.
import org.apache.james.mailbox.maildir.mail.model.LazyLoadingMaildirMessage;
import org.apache.james.mailbox.maildir.mail.model.MaildirMessage;
import org.apache.james.mailbox.store.SearchQueryIterator;
+import org.apache.james.mailbox.store.UpdatedFlag;
import org.apache.james.mailbox.store.mail.MessageMapper;
import org.apache.james.mailbox.store.mail.model.Mailbox;
import org.apache.james.mailbox.store.mail.model.MailboxMembership;
@@ -68,7 +71,7 @@ public class MaildirMessageMapper extend
throws MailboxException {
MaildirMessage theCopy = new MaildirMessage(mailbox, (AbstractMaildirMessage) original);
- return save(mailbox, theCopy);
+ return add(mailbox, theCopy);
}
/*
@@ -272,12 +275,12 @@ public class MaildirMessageMapper extend
}
}
- /*
+
+ /*
* (non-Javadoc)
- * @see org.apache.james.mailbox.store.mail.MessageMapper#save(org.apache.james.mailbox.store.mail.model.Mailbox,
- * org.apache.james.mailbox.store.mail.model.MailboxMembership)
+ * @see org.apache.james.mailbox.store.mail.MessageMapper#add(org.apache.james.mailbox.store.mail.model.Mailbox, org.apache.james.mailbox.store.mail.model.MailboxMembership)
*/
- public long save(Mailbox<Integer> mailbox, MailboxMembership<Integer> message)
+ public long add(Mailbox<Integer> mailbox, MailboxMembership<Integer> message)
throws MailboxException {
AbstractMaildirMessage maildirMessage = (AbstractMaildirMessage) message;
MaildirFolder folder = maildirStore.createMaildirFolder(mailbox);
@@ -341,23 +344,10 @@ public class MaildirMessageMapper extend
} catch (IOException e) {
throw new MailboxException("Failure while save Message " + message + " in Mailbox " + mailbox, e );
}
+ } else {
+ throw new MailboxException("Message already exists!");
}
- // the message already exists and its flags need to be updated (everything else is immutable)
- else {
- try {
- MaildirMessageName messageName = folder.getMessageNameByUid(message.getUid());
- File messageFile = messageName.getFile();
- //System.out.println("save existing " + message + " as " + messageFile.getName());
- messageName.setFlags(message.createFlags());
- // this automatically moves messages from new to cur if needed
- String newMessageName = messageName.getFullName();
- messageFile.renameTo(new File(folder.getCurFolder(), newMessageName));
- uid = message.getUid();
- folder.update(uid, newMessageName);
- } catch (IOException e) {
- throw new MailboxException("Failure while save Message " + message + " in Mailbox " + mailbox, e );
- }
- }
+
return uid;
}
@@ -425,6 +415,49 @@ public class MaildirMessageMapper extend
// not used
}
+
+
+ public Iterator<UpdatedFlag> updateFlags(Mailbox<Integer> mailbox, Flags flags, boolean value, boolean replace, MessageRange set) throws MailboxException {
+ final List<UpdatedFlag> updatedFlags = new ArrayList<UpdatedFlag>();
+ MaildirFolder folder = maildirStore.createMaildirFolder(mailbox);
+
+ final List<MailboxMembership<Integer>> members = findInMailbox(mailbox, set);
+ for (final MailboxMembership<Integer> member:members) {
+ Flags originalFlags = member.createFlags();
+ if (replace) {
+ member.setFlags(flags);
+ } else {
+ Flags current = member.createFlags();
+ if (value) {
+ current.add(flags);
+ } else {
+ current.remove(flags);
+ }
+ member.setFlags(current);
+ }
+ Flags newFlags = member.createFlags();
+
+ try {
+ AbstractMaildirMessage maildirMessage = (AbstractMaildirMessage) member;
+ MaildirMessageName messageName = folder.getMessageNameByUid(maildirMessage.getUid());
+ File messageFile = messageName.getFile();
+ //System.out.println("save existing " + message + " as " + messageFile.getName());
+ messageName.setFlags(maildirMessage.createFlags());
+ // this automatically moves messages from new to cur if needed
+ String newMessageName = messageName.getFullName();
+ messageFile.renameTo(new File(folder.getCurFolder(), newMessageName));
+ long uid = maildirMessage.getUid();
+ folder.update(uid, newMessageName);
+ } catch (IOException e) {
+ throw new MailboxException("Failure while save Message " + member + " in Mailbox " + mailbox, e );
+ }
+
+ updatedFlags.add(new UpdatedFlag(member.getUid(),originalFlags, newFlags));
+ }
+
+ return updatedFlags.iterator();
+
+ }
}
Modified: james/mailbox/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMessageMapper.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMessageMapper.java?rev=1042400&r1=1042399&r2=1042400&view=diff
==============================================================================
--- james/mailbox/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMessageMapper.java (original)
+++ james/mailbox/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMessageMapper.java Sun Dec 5 18:54:32 2010
@@ -26,12 +26,15 @@ import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
+import javax.mail.Flags;
+
import org.apache.james.mailbox.MailboxException;
import org.apache.james.mailbox.MessageRange;
import org.apache.james.mailbox.SearchQuery;
import org.apache.james.mailbox.inmemory.mail.model.InMemoryMailbox;
import org.apache.james.mailbox.inmemory.mail.model.SimpleMailboxMembership;
import org.apache.james.mailbox.store.SearchQueryIterator;
+import org.apache.james.mailbox.store.UpdatedFlag;
import org.apache.james.mailbox.store.mail.MessageMapper;
import org.apache.james.mailbox.store.mail.model.Mailbox;
import org.apache.james.mailbox.store.mail.model.MailboxMembership;
@@ -180,7 +183,7 @@ public class InMemoryMessageMapper exten
* (non-Javadoc)
* @see org.apache.james.mailbox.store.mail.MessageMapper#save(org.apache.james.mailbox.store.mail.model.MailboxMembership)
*/
- public long save(Mailbox<Long> mailbox, MailboxMembership<Long> message) throws MailboxException {
+ public long add(Mailbox<Long> mailbox, MailboxMembership<Long> message) throws MailboxException {
getMembershipByUidForMailbox(mailbox).put(message.getUid(), message);
return message.getUid();
}
@@ -218,7 +221,34 @@ public class InMemoryMessageMapper exten
iMailbox.consumeUid();
SimpleMailboxMembership membership = new SimpleMailboxMembership(mailbox.getMailboxId(), iMailbox.getLastUid(), (SimpleMailboxMembership) original);
- return save(mailbox, membership);
+ return add(mailbox, membership);
+ }
+
+ public Iterator<UpdatedFlag> updateFlags(Mailbox<Long> mailbox, Flags flags, boolean value, boolean replace, MessageRange set) throws MailboxException {
+ final List<UpdatedFlag> updatedFlags = new ArrayList<UpdatedFlag>();
+
+ final List<MailboxMembership<Long>> members = findInMailbox(mailbox, set);
+ for (final MailboxMembership<Long> member:members) {
+ Flags originalFlags = member.createFlags();
+ if (replace) {
+ member.setFlags(flags);
+ } else {
+ Flags current = member.createFlags();
+ if (value) {
+ current.add(flags);
+ } else {
+ current.remove(flags);
+ }
+ member.setFlags(current);
+ }
+ Flags newFlags = member.createFlags();
+
+ add(mailbox, member);
+
+ updatedFlags.add(new UpdatedFlag(member.getUid(),originalFlags, newFlags));
+ }
+
+ return updatedFlags.iterator();
}
}
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=1042400&r1=1042399&r2=1042400&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 Dec 5 18:54:32 2010
@@ -35,6 +35,7 @@ import java.util.TreeMap;
import java.util.TreeSet;
import javax.mail.Flags;
+import javax.mail.Flags.Flag;
import javax.mail.MessagingException;
import javax.mail.util.SharedFileInputStream;
@@ -401,7 +402,15 @@ public abstract class StoreMessageManage
final SortedMap<Long, Flags> newFlagsByUid = new TreeMap<Long, Flags>();
- Iterator<UpdatedFlag> it = updateFlags(flags, value, replace, set, mailboxSession);
+ final MessageMapper<Id> messageMapper = mapperFactory.getMessageMapper(mailboxSession);
+ Iterator<UpdatedFlag> it = messageMapper.execute(new Mapper.Transaction<Iterator<UpdatedFlag>>() {
+
+ public Iterator<UpdatedFlag> run() throws MailboxException {
+ return messageMapper.updateFlags(getMailboxEntity(),flags, value, replace, set);
+ }
+ });
+
+
while (it.hasNext()) {
UpdatedFlag flag = it.next();
dispatcher.flagsUpdated(flag.getUid(), mailboxSession.getSessionId(), new StoreMailboxPath<Id>(getMailboxEntity()), flag.getOldFlags(), flag.getNewFlags());
@@ -441,7 +450,7 @@ public abstract class StoreMessageManage
return mapperFactory.getMessageMapper(session).execute(new Mapper.Transaction<Long>() {
public Long run() throws MailboxException {
- return mapper.save(getMailboxEntity(), message);
+ return mapper.add(getMailboxEntity(), message);
}
});
@@ -489,10 +498,9 @@ public abstract class StoreMessageManage
for (MailboxMembership<Id> member:members) {
results.add(member.getUid());
if (reset) {
- member.unsetRecent();
// only call save if we need to
- messageMapper.save(getMailboxEntity(), member);
+ messageMapper.updateFlags(getMailboxEntity(), new Flags(Flag.RECENT), false, false, MessageRange.one(member.getUid()));
}
}
return results;
@@ -524,54 +532,6 @@ public abstract class StoreMessageManage
}
-
- /**
- * Update the Flags for the given {@link MessageRange}
- *
- * @param flags
- * @param value
- * @param replace
- * @param set
- * @param mailboxSession
- * @return
- * @throws MailboxException
- */
- public Iterator<UpdatedFlag> updateFlags(final Flags flags, final boolean value, final boolean replace,
- final MessageRange set, MailboxSession mailboxSession) throws MailboxException {
- final MessageMapper<Id> messageMapper = mapperFactory.getMessageMapper(mailboxSession);
-
- return messageMapper.execute(new Mapper.Transaction<Iterator<UpdatedFlag>>(){
-
- public Iterator<UpdatedFlag> run() throws MailboxException {
- final List<UpdatedFlag> updatedFlags = new ArrayList<UpdatedFlag>();
-
- final List<MailboxMembership<Id>> members = messageMapper.findInMailbox(getMailboxEntity(), set);
- for (final MailboxMembership<Id> member:members) {
- Flags originalFlags = member.createFlags();
- if (replace) {
- member.setFlags(flags);
- } else {
- Flags current = member.createFlags();
- if (value) {
- current.add(flags);
- } else {
- current.remove(flags);
- }
- member.setFlags(current);
- }
- Flags newFlags = member.createFlags();
- messageMapper.save(getMailboxEntity(), member);
- updatedFlags.add(new UpdatedFlag(member.getUid(),originalFlags, newFlags));
- }
-
- return updatedFlags.iterator();
- }
-
- });
-
- }
-
-
/*
Modified: james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/MessageMapper.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/MessageMapper.java?rev=1042400&r1=1042399&r2=1042400&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/MessageMapper.java (original)
+++ james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/MessageMapper.java Sun Dec 5 18:54:32 2010
@@ -21,9 +21,12 @@ package org.apache.james.mailbox.store.m
import java.util.Iterator;
import java.util.List;
+import javax.mail.Flags;
+
import org.apache.james.mailbox.MailboxException;
import org.apache.james.mailbox.MessageRange;
import org.apache.james.mailbox.SearchQuery;
+import org.apache.james.mailbox.store.UpdatedFlag;
import org.apache.james.mailbox.store.mail.model.Mailbox;
import org.apache.james.mailbox.store.mail.model.MailboxMembership;
import org.apache.james.mailbox.store.mail.model.Message;
@@ -120,7 +123,7 @@ public interface MessageMapper<Id> exten
/**
- * Save the given {@link MailboxMembership} to the underlying storage and return the uid of it. the uid needs to be unique and sequential. Howto
+ * Add the given {@link MailboxMembership} to the underlying storage and return the uid of it. the uid needs to be unique and sequential. Howto
* archive that is up to the implementation
*
*
@@ -128,8 +131,21 @@ public interface MessageMapper<Id> exten
* @param message
* @throws StorageException
*/
- public abstract long save(Mailbox<Id> mailbox, MailboxMembership<Id> message) throws MailboxException;
+ public abstract long add(Mailbox<Id> mailbox, MailboxMembership<Id> message) throws MailboxException;
+ /**
+ * Update flags for the given {@link MessageRange}
+ *
+ * @param mailbox
+ * @param flags
+ * @param value
+ * @param replace
+ * @param set
+ * @return updatedFlags
+ * @throws MailboxException
+ */
+ public abstract Iterator<UpdatedFlag> updateFlags(Mailbox<Id> mailbox, final Flags flags, final boolean value, final boolean replace,
+ final MessageRange set) throws MailboxException;
/**
* Copy the given {@link MailboxMembership} to a new mailbox and return the uid of the copy
Modified: james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/model/MailboxMembership.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/model/MailboxMembership.java?rev=1042400&r1=1042399&r2=1042400&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/model/MailboxMembership.java (original)
+++ james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/model/MailboxMembership.java Sun Dec 5 18:54:32 2010
@@ -92,11 +92,6 @@ public interface MailboxMembership<Id> {
*/
public abstract boolean isSeen();
- /**
- * Sets {@link #isRecent()} to false.
- * A message can only be recent once.
- */
- public abstract void unsetRecent();
/**
* Set the Flags
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org