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