Author: norman
Date: Fri Sep 25 15:10:11 2009
New Revision: 818874

URL: http://svn.apache.org/viewvc?rev=818874&view=rev
Log:
Update message count when fetching messages (Hupa-28)

Modified:
    
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractFetchMessagesHandler.java
    
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/events/MessagesReceivedEvent.java
    
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/FetchMessagesResult.java

Modified: 
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractFetchMessagesHandler.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractFetchMessagesHandler.java?rev=818874&r1=818873&r2=818874&view=diff
==============================================================================
--- 
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractFetchMessagesHandler.java
 (original)
+++ 
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractFetchMessagesHandler.java
 Fri Sep 25 15:10:11 2009
@@ -60,12 +60,13 @@
                        ExecutionContext context) throws ActionException {
                User user = getUser(action.getSessionId());
                IMAPFolder folder = action.getFolder();
+               com.sun.mail.imap.IMAPFolder f = null;
                try {
                        IMAPStore store = cache.get(user);
                        int start = action.getStart();
                        int offset = action.getOffset();
                        
-                       com.sun.mail.imap.IMAPFolder f =  
(com.sun.mail.imap.IMAPFolder)store.getFolder(folder.getFullName());
+                       f =  
(com.sun.mail.imap.IMAPFolder)store.getFolder(folder.getFullName());
 
                        // check if the folder is open, if not open it read only
                         if (f.isOpen() == false) {
@@ -76,18 +77,26 @@
                        
                        // if the folder is empty we have no need to process 
                        if (exists == 0) {
-                               return new FetchMessagesResult(new 
ArrayList<org.apache.hupa.shared.data.Message>(),start,offset,exists);
+                               return new FetchMessagesResult(new 
ArrayList<org.apache.hupa.shared.data.Message>(),start,offset,exists,0);
                        }               
                        
                        Message[] messages = getMessagesToConvert(f,action);
                        
-                       return new FetchMessagesResult(convert(action, f, 
messages),start,offset,exists);
+                       return new FetchMessagesResult(convert(action, f, 
messages),start,offset,exists,f.getUnreadMessageCount());
                        
                } catch (Exception e) {
                        logger.error("Error while fetching headers for user " + 
user.getName() + " in folder " + folder,e);
                        throw new ActionException(
                                        "Error while fetching headers for user 
" + user.getName() + " in folder " + folder);
                
+               } finally {
+                       if (f != null && f.isOpen()) {
+                               try {
+                                       f.close(false);
+                               } catch (MessagingException e) {
+                                       // we don't care to much about an 
exception on close here...
+                               }
+                       }
                }
        }
        
@@ -174,7 +183,6 @@
                                break;
                        }
                }
-               f.close(false);
                return mList;
        }
        

Modified: 
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/events/MessagesReceivedEvent.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/events/MessagesReceivedEvent.java?rev=818874&r1=818873&r2=818874&view=diff
==============================================================================
--- 
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/events/MessagesReceivedEvent.java
 (original)
+++ 
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/events/MessagesReceivedEvent.java
 Fri Sep 25 15:10:11 2009
@@ -20,6 +20,7 @@
 
 import java.util.ArrayList;
 
+import org.apache.hupa.shared.data.IMAPFolder;
 import org.apache.hupa.shared.data.Message;
 
 import com.google.gwt.event.shared.GwtEvent;
@@ -27,14 +28,22 @@
 public class MessagesReceivedEvent extends 
GwtEvent<MessagesReceivedEventHandler>{
        public static Type<MessagesReceivedEventHandler> TYPE = new 
Type<MessagesReceivedEventHandler>();
        private ArrayList<Message> messages;
+       private IMAPFolder folder;
        
-       public MessagesReceivedEvent(ArrayList<Message> messages) {
+       public MessagesReceivedEvent(IMAPFolder folder, ArrayList<Message> 
messages) {
                this.messages = messages;
+               this.folder = folder;
        }
        
        public ArrayList<Message> getMessages() {
                return messages;
        }
+       
+       public IMAPFolder getFolder() {
+               return folder;
+       }
+       
+       
        @Override
        protected void dispatch(MessagesReceivedEventHandler handler) {
                handler.onMessagesReceived(this);

Modified: 
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/FetchMessagesResult.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/FetchMessagesResult.java?rev=818874&r1=818873&r2=818874&view=diff
==============================================================================
--- 
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/FetchMessagesResult.java
 (original)
+++ 
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/FetchMessagesResult.java
 Fri Sep 25 15:10:11 2009
@@ -53,16 +53,18 @@
        private int start;
        private int offset;
        private int realCount;
+       private int realUnreadCount;
 
        @SuppressWarnings("unused")
        private FetchMessagesResult() {
        }
        
-       public FetchMessagesResult(ArrayList<Message> messages,int start,int 
offset,int realCount) {
+       public FetchMessagesResult(ArrayList<Message> messages,int start,int 
offset,int realCount, int realUnreadCount) {
                this.messages = messages;
                this.start = start;
                this.offset = offset;
                this.realCount = realCount;
+               this.realUnreadCount = realUnreadCount;
        }
        
        public ArrayList<Message> getMessages() {
@@ -80,4 +82,8 @@
        public int getRealCount() {
                return realCount;
        }
+       
+       public int getRealUnreadCount() {
+               return realUnreadCount;
+       }
 }



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

Reply via email to