Author: norman
Date: Fri Jun 17 11:02:19 2011
New Revision: 1136842

URL: http://svn.apache.org/viewvc?rev=1136842&view=rev
Log:
Rename MessageMapper.findRecentMessagesInMailbox(...) to 
MessageMapper.findRecentMessageUidsInMailbox(..) and only return the uids. See 
MAILBOX-94

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/AbstractJPAMessage.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

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=1136842&r1=1136841&r2=1136842&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
 Fri Jun 17 11:02:19 2011
@@ -472,14 +472,14 @@ public class JCRMessageMapper extends Ab
      * (non-Javadoc)
      * 
      * @see
-     * 
org.apache.james.mailbox.store.mail.MessageMapper#findRecentMessagesInMailbox
+     * 
org.apache.james.mailbox.store.mail.MessageMapper#findRecentMessageUidsInMailbox
      * ()
      */
-    public List<Message<String>> findRecentMessagesInMailbox(Mailbox<String> 
mailbox) throws MailboxException {
+    public List<Long> findRecentMessageUidsInMailbox(Mailbox<String> mailbox) 
throws MailboxException {
         
         try {
  
-            List<Message<String>> list = new ArrayList<Message<String>>();
+            List<Long> list = new ArrayList<Long>();
             String queryString = "/jcr:root" + getMailboxPath(mailbox) + 
"//element(*,jamesMailbox:message)[@" + JCRMessage.RECENT_PROPERTY +"='true'] 
order by @" + JCRMessage.UID_PROPERTY;
             
             QueryManager manager = 
getSession().getWorkspace().getQueryManager();
@@ -488,7 +488,7 @@ public class JCRMessageMapper extends Ab
             
             NodeIterator iterator = result.getNodes();
             while(iterator.hasNext()) {
-                list.add(new JCRMessage(iterator.nextNode(), 
mailboxSession.getLog()));
+                list.add(new JCRMessage(iterator.nextNode(), 
mailboxSession.getLog()).getUid());
             }
             return list;
 

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=1136842&r1=1136841&r2=1136842&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
 Fri Jun 17 11:02:19 2011
@@ -352,14 +352,15 @@ public class JPAMessageMapper extends Ab
             throw new MailboxException("Search of first unseen message failed 
in mailbox " + mailbox, e);
         }
     }
-
-    /**
-     * @see 
org.apache.james.mailbox.store.mail.MessageMapper#findRecentMessagesInMailbox()
+    
+    /*
+     * (non-Javadoc)
+     * @see 
org.apache.james.mailbox.store.mail.MessageMapper#findRecentMessageUidsInMailbox(org.apache.james.mailbox.store.mail.model.Mailbox)
      */
     @SuppressWarnings("unchecked")
-    public List<Message<Long>> findRecentMessagesInMailbox(Mailbox<Long> 
mailbox) throws MailboxException {
+    public List<Long> findRecentMessageUidsInMailbox(Mailbox<Long> mailbox) 
throws MailboxException {
         try {
-            Query query = 
getEntityManager().createNamedQuery("findRecentMessagesInMailbox").setParameter("idParam",
 mailbox.getMailboxId());
+            Query query = 
getEntityManager().createNamedQuery("findRecentMessageUidsInMailbox").setParameter("idParam",
 mailbox.getMailboxId());
             return query.getResultList();
         } catch (PersistenceException e) {
             throw new MailboxException("Search of recent messages failed in 
mailbox " + mailbox, e);

Modified: 
james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/AbstractJPAMessage.java
URL: 
http://svn.apache.org/viewvc/james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/AbstractJPAMessage.java?rev=1136842&r1=1136841&r2=1136842&view=diff
==============================================================================
--- 
james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/AbstractJPAMessage.java
 (original)
+++ 
james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/AbstractJPAMessage.java
 Fri Jun 17 11:02:19 2011
@@ -54,8 +54,8 @@ import org.apache.openjpa.persistence.jd
  */
 @IdClass(AbstractJPAMessage.MailboxIdUidKey.class)
 @NamedQueries({
-    @NamedQuery(name="findRecentMessagesInMailbox",
-            query="SELECT message FROM Message message WHERE 
message.mailbox.mailboxId = :idParam AND message.recent = TRUE"),
+    @NamedQuery(name="findRecentMessageUidssInMailbox",
+            query="SELECT message.uid FROM Message message WHERE 
message.mailbox.mailboxId = :idParam AND message.recent = TRUE"),
     @NamedQuery(name="findUnseenMessagesInMailboxOrderByUid",
             query="SELECT message FROM Message message WHERE 
message.mailbox.mailboxId = :idParam AND message.seen = FALSE ORDER BY 
message.uid ASC"),
     @NamedQuery(name="findMessagesInMailbox",

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=1136842&r1=1136841&r2=1136842&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
 Fri Jun 17 11:02:19 2011
@@ -225,19 +225,12 @@ public class MaildirMessageMapper extend
      * (non-Javadoc)
      * @see 
org.apache.james.mailbox.store.mail.MessageMapper#findRecentMessagesInMailbox(org.apache.james.mailbox.store.mail.model.Mailbox)
      */
-    public List<Message<Integer>> findRecentMessagesInMailbox(Mailbox<Integer> 
mailbox)
+    public List<Long> findRecentMessageUidsInMailbox(Mailbox<Integer> mailbox)
     throws MailboxException {
         MaildirFolder folder = maildirStore.createMaildirFolder(mailbox);
-        try {
-            SortedMap<Long, MaildirMessageName> recentMessageNames = 
folder.getRecentMessages(mailboxSession);
-            
-            List<Message<Integer>> recentMessages = new 
ArrayList<Message<Integer>>(recentMessageNames.size());
-            for (Entry<Long, MaildirMessageName> entry : 
recentMessageNames.entrySet())
-                recentMessages.add(new LazyLoadingMaildirMessage(mailbox, 
entry.getKey(), entry.getValue()));
-            return recentMessages;
-        } catch (IOException e) {
-            throw new MailboxException("Failure while search recent messages 
in Mailbox " + mailbox, e );
-        }
+        SortedMap<Long, MaildirMessageName> recentMessageNames = 
folder.getRecentMessages(mailboxSession);
+        return new ArrayList<Long>(recentMessageNames.keySet());
+       
         
     }
 

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=1136842&r1=1136841&r2=1136842&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
 Fri Jun 17 11:02:19 2011
@@ -168,11 +168,11 @@ public class InMemoryMessageMapper exten
      * (non-Javadoc)
      * @see 
org.apache.james.mailbox.store.mail.MessageMapper#findRecentMessagesInMailbox()
      */
-    public List<Message<Long>> findRecentMessagesInMailbox(Mailbox<Long> 
mailbox) throws MailboxException {
-        final List<Message<Long>> results = new ArrayList<Message<Long>>();
+    public List<Long> findRecentMessageUidsInMailbox(Mailbox<Long> mailbox) 
throws MailboxException {
+        final List<Long> results = new ArrayList<Long>();
         for(Message<Long> 
member:getMembershipByUidForMailbox(mailbox).values()) {
             if (member.isRecent()) {
-                results.add(member);
+                results.add(member.getUid());
             }
         }
         Collections.sort(results);

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=1136842&r1=1136841&r2=1136842&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
 Fri Jun 17 11:02:19 2011
@@ -557,18 +557,17 @@ public abstract class StoreMessageManage
         return messageMapper.execute(new Mapper.Transaction<List<Long>>() {
 
             public List<Long> run() throws MailboxException {
-                final List<Message<Id>> members = 
messageMapper.findRecentMessagesInMailbox(getMailboxEntity());
-                final List<Long> results = new ArrayList<Long>();
+                final List<Long> members = 
messageMapper.findRecentMessageUidsInMailbox(getMailboxEntity());
 
-                for (Message<Id> member:members) {
-                    results.add(member.getUid());
+                // Conver to MessageRanges so we may be able to optimize the 
flag update
+                List<MessageRange> ranges = MessageRange.toRanges(members);
+                for (MessageRange range:ranges) {
                     if (reset) {
-                        
                         // only call save if we need to
-                        messageMapper.updateFlags(getMailboxEntity(), new 
Flags(Flag.RECENT), false, false, MessageRange.one(member.getUid()));
+                        messageMapper.updateFlags(getMailboxEntity(), new 
Flags(Flag.RECENT), false, false, range);
                     }
                 }
-                return results;
+                return members;
             }
             
         });

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=1136842&r1=1136841&r2=1136842&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
 Fri Jun 17 11:02:19 2011
@@ -110,7 +110,7 @@ public interface MessageMapper<Id> exten
      * @return recentList
      * @throws StorageException
      */
-    public abstract List<Message<Id>> findRecentMessagesInMailbox(Mailbox<Id> 
mailbox) throws MailboxException;
+    public abstract List<Long> findRecentMessageUidsInMailbox(Mailbox<Id> 
mailbox) throws MailboxException;
 
 
     /**



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to