Author: norman
Date: Thu Sep  3 11:16:04 2009
New Revision: 810894

URL: http://svn.apache.org/viewvc?rev=810894&view=rev
Log:
Try to avoid fetching the whole message whenever possible
Move setting raw headers to ExposeMessageHandler 

Modified:
    
labs/hupa/server/src/main/java/org/apache/hupa/server/handler/ExposeMessageHandler.java
    
labs/hupa/server/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java

Modified: 
labs/hupa/server/src/main/java/org/apache/hupa/server/handler/ExposeMessageHandler.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/server/src/main/java/org/apache/hupa/server/handler/ExposeMessageHandler.java?rev=810894&r1=810893&r2=810894&view=diff
==============================================================================
--- 
labs/hupa/server/src/main/java/org/apache/hupa/server/handler/ExposeMessageHandler.java
 (original)
+++ 
labs/hupa/server/src/main/java/org/apache/hupa/server/handler/ExposeMessageHandler.java
 Thu Sep  3 11:16:04 2009
@@ -150,6 +150,8 @@
             f.close(false);
 
             msg.setMessageContent(content);
+                       
msg.getHeader().setRawHeader(message.getAllHeaders().toString());
+
                        return msg;
                } catch (Exception e) {
                        logger.error("Unable to expose msg for user " + user + 
" in folder "+ folder + " with uid "+ msg.getUid(),e);

Modified: 
labs/hupa/server/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/server/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java?rev=810894&r1=810893&r2=810894&view=diff
==============================================================================
--- 
labs/hupa/server/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java
 (original)
+++ 
labs/hupa/server/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java
 Thu Sep  3 11:16:04 2009
@@ -19,6 +19,7 @@
 
 package org.apache.hupa.server.handler;
 
+import java.io.IOException;
 import java.util.ArrayList;
 
 import javax.mail.Address;
@@ -133,9 +134,7 @@
             // loop over the fetched messages
                        for (int i = 0; i < messages.length; i++) {
                                Message m = messages[i];
-
                                MessageHeader newHeader = new MessageHeader();
-                               
newHeader.setRawHeader(m.getAllHeaders().toString());
                                
newHeader.setFrom(m.getFrom()[0].toString().trim());
                                
                                ArrayList<String> to = new ArrayList<String>();
@@ -203,7 +202,7 @@
                                msg.setTags(tags);
                                
                                MessageContent content = new MessageContent();
-                               
content.setAttachments(hasAttachment(m.getContent()));
+                               content.setAttachments(hasAttachment(m));
                                msg.setMessageContent(content);
                                mList.add(0, msg);
                                if (i > action.getOffset()) {
@@ -221,21 +220,32 @@
                }
        }
        
-       private boolean hasAttachment(Object content) throws MessagingException 
{
-                if (content instanceof Multipart) {
-             Multipart mp = (Multipart) content;
-             if (mp.getCount() > 1) {
-                for (int i = 0 ; i < mp.getCount(); i++) {
-                        String disp = mp.getBodyPart(i).getDisposition();
-                        if ( disp != null && 
disp.equalsIgnoreCase(Part.ATTACHMENT)) {
-                                return true;
-                        }
-                }
-             }
-          
-             
-                }
-                return false;
+       private boolean hasAttachment(Message message) throws 
MessagingException {
+               if (message.getContentType().startsWith("multipart/")) {
+                       try {
+                               Object content;
+
+                               content = message.getContent();
+
+                               if (content instanceof Multipart) {
+                                       Multipart mp = (Multipart) content;
+                                       if (mp.getCount() > 1) {
+                                               for (int i = 0; i < 
mp.getCount(); i++) {
+                                                       String disp = 
mp.getBodyPart(i).getDisposition();
+                                                       if (disp != null
+                                                                       && 
disp.equalsIgnoreCase(Part.ATTACHMENT)) {
+                                                               return true;
+                                                       }
+                                               }
+                                       }
+
+                               }
+                       } catch (IOException e) {
+                               logger.error("Error while get content of 
message " + message.getMessageNumber());
+                       }
+                       
+               }
+               return false;
        }
 
        /*



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

Reply via email to