Author: dongxu
Date: Thu Sep 12 03:07:36 2013
New Revision: 1522168

URL: http://svn.apache.org/r1522168
Log:
Fixes HUPA-96 : pass reference ids when replying. Patch by Zsombor Gegesy

Modified:
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/MessageSendPresenter.java
    
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractSendMessageHandler.java
    
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/GetMessageDetailsHandler.java
    james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/SConsts.java
    
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/data/MessageDetails.java
    
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/ForwardMessage.java
    
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/SendMessage.java

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/MessageSendPresenter.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/MessageSendPresenter.java?rev=1522168&r1=1522167&r2=1522168&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/MessageSendPresenter.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/MessageSendPresenter.java
 Thu Sep 12 03:07:36 2013
@@ -63,6 +63,7 @@ import net.customware.gwt.presenter.clie
 
 import org.apache.hupa.client.HupaCallback;
 import org.apache.hupa.client.validation.EmailListValidator;
+import org.apache.hupa.shared.SConsts;
 import org.apache.hupa.shared.Util;
 import org.apache.hupa.shared.data.ImapFolderImpl;
 import org.apache.hupa.shared.data.MessageAttachment;
@@ -157,7 +158,6 @@ public class MessageSendPresenter extend
     
     protected SMTPMessage message = null;
     
-    @SuppressWarnings("unused")
     private MessageDetails oldDetails;
 
     private OnFinishUploaderHandler onFinishUploadHandler = new 
OnFinishUploaderHandler() {
@@ -286,13 +286,29 @@ public class MessageSendPresenter extend
                 if (type == Type.NEW) {
                     command = new SendMessage(message);
                 } else if (type == Type.FORWARD) {
-                    command = new ForwardMessage(message, folder, 
oldmessage.getUid());
+                    command = addMessageIds(new ForwardMessage(message, 
folder, oldDetails.getUid()));
                 } else {
-                    command = new ReplyMessage(message, folder, 
oldmessage.getUid());
+                    command = addMessageIds(new ReplyMessage(message, folder, 
oldDetails.getUid()));
                 }
                 dispatchMessage(dispatcher, eventBus, command);
             }
         }
+
+        private ForwardMessage addMessageIds(ForwardMessage msg) {
+            String msgId = oldDetails.getMessageId();
+            msg.setInReplyTo(msgId);
+            
+            if (msgId != null) {
+                String oldRefs = oldDetails.getReferences();
+                if (oldRefs != null) {
+                    msg.setReferences(msgId.trim() + 
SConsts.HEADER_REFERENCES_SEPARATOR + oldRefs);
+                } else {
+                    msg.setReferences(msgId.trim());
+                }
+            }
+            return msg;
+        }
+        
     };
 
     protected ArrayList<String> emailTextToArray(String emails) {

Modified: 
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractSendMessageHandler.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractSendMessageHandler.java?rev=1522168&r1=1522167&r2=1522168&view=diff
==============================================================================
--- 
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractSendMessageHandler.java
 (original)
+++ 
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractSendMessageHandler.java
 Thu Sep 12 03:07:36 2013
@@ -56,6 +56,7 @@ import org.apache.hupa.server.preference
 import org.apache.hupa.server.utils.MessageUtils;
 import org.apache.hupa.server.utils.RegexPatterns;
 import org.apache.hupa.server.utils.SessionUtils;
+import org.apache.hupa.shared.SConsts;
 import org.apache.hupa.shared.data.MessageAttachment;
 import org.apache.hupa.shared.data.SMTPMessage;
 import org.apache.hupa.shared.domain.User;
@@ -150,16 +151,38 @@ public abstract class AbstractSendMessag
 <<<<<<< HEAD
 <<<<<<< HEAD
         message.setSubject(MessageUtils.encodeTexts(m.getSubject()));
+<<<<<<< HEAD
 =======
         message.setSubject(m.getSubject());
 >>>>>>> first commit
 =======
         message.setSubject(MessageUtils.encodeTexts(m.getSubject()));
 >>>>>>> constantly changed by manolo
+=======
+        updateHeaders(message, action);
+>>>>>>> Fixes HUPA-96 : pass reference ids when replying. Patch by Zsombor 
Gegesy
         message.saveChanges();
         return message;
     }
-    /**
+    
+    protected void updateHeaders(MimeMessage message, A action) {
+        if (action.getInReplyTo() != null) {
+            try {
+                message.addHeader(SConsts.HEADER_IN_REPLY_TO, 
action.getInReplyTo());
+            } catch (MessagingException e) {
+                logger.error("Error while setting header:" + e.getMessage(), 
e);
+            }
+        }
+        if (action.getReferences() != null) {
+            try {
+                message.addHeader(SConsts.HEADER_REFERENCES, 
action.getReferences());
+            } catch (MessagingException e) {
+                logger.error("Error while setting header:" + e.getMessage(), 
e);
+            }
+        }
+    }
+
+       /**
      * Fill the body of the given message with data which the given action 
contain
      * 
      * @param message the message

Modified: 
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/GetMessageDetailsHandler.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/GetMessageDetailsHandler.java?rev=1522168&r1=1522167&r2=1522168&view=diff
==============================================================================
--- 
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/GetMessageDetailsHandler.java
 (original)
+++ 
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/GetMessageDetailsHandler.java
 Thu Sep 12 03:07:36 2013
@@ -56,16 +56,21 @@ import static org.apache.hupa.server.uti
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.util.ArrayList;
+import java.util.Enumeration;
 
 import javax.mail.Flags;
 <<<<<<< HEAD
 <<<<<<< HEAD
 import javax.mail.Flags.Flag;
+<<<<<<< HEAD
 =======
 >>>>>>> first commit
 =======
 import javax.mail.Flags.Flag;
 >>>>>>> Aim to make the front end view work after the server side's IMAPFolder 
 >>>>>>> services RF being working, but there are issues on RF's find* method, 
 >>>>>>> I think.
+=======
+import javax.mail.Header;
+>>>>>>> Fixes HUPA-96 : pass reference ids when replying. Patch by Zsombor 
Gegesy
 import javax.mail.Message;
 import javax.mail.MessagingException;
 import javax.mail.Multipart;
@@ -125,6 +130,8 @@ import com.google.inject.Inject;
 import com.google.inject.Provider;
 import com.sun.mail.imap.IMAPStore;
 
+
+
 public class GetMessageDetailsHandler extends
         AbstractSessionHandler<GetMessageDetails, GetMessageDetailsResult> {
 
@@ -231,7 +238,11 @@ public class GetMessageDetailsHandler ex
 
         mDetails.setMessageAttachments(attachmentList);
 
-        mDetails.setRawHeader(message.getAllHeaders().toString());
+        for (@SuppressWarnings("unchecked")
+        Enumeration<Header> en = message.getAllHeaders(); 
en.hasMoreElements();) {
+            Header header = en.nextElement();
+            mDetails.addHeader(header.getName(), header.getValue());
+        }
         
         return mDetails;
     }

Modified: 
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/SConsts.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/SConsts.java?rev=1522168&r1=1522167&r2=1522168&view=diff
==============================================================================
--- james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/SConsts.java 
(original)
+++ james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/SConsts.java 
Thu Sep 12 03:07:36 2013
@@ -62,5 +62,14 @@ public class SConsts {
     
     public static final String USER_SESS_ATTR = "user";
     public static final String CONTACTS_SESS_ATTR = "contacts";
+<<<<<<< HEAD
 >>>>>>> first commit
+=======
+    
+    public static final String HEADER_IN_REPLY_TO = "In-Reply-To";
+    public static final String HEADER_REFERENCES = "References";
+    public static final String HEADER_MESSAGE_ID = "Message-ID";
+    public static final String HEADER_REFERENCES_SEPARATOR = "\r\n ";
+    
+>>>>>>> Fixes HUPA-96 : pass reference ids when replying. Patch by Zsombor 
Gegesy
 }
\ No newline at end of file

Modified: 
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/data/MessageDetails.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/data/MessageDetails.java?rev=1522168&r1=1522167&r2=1522168&view=diff
==============================================================================
--- 
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/data/MessageDetails.java
 (original)
+++ 
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/data/MessageDetails.java
 Thu Sep 12 03:07:36 2013
@@ -21,22 +21,31 @@ package org.apache.hupa.shared.data;
 
 import java.io.Serializable;
 import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.hupa.shared.SConsts;
 
 public class MessageDetails implements Serializable{
     /**
-     * 
-     */
-    private static final long serialVersionUID = 7611536915564919521L;
-    private String text;
+        * 
+        */
+       private static final long serialVersionUID = 1L;
+
+       private String text;
     private ArrayList<MessageAttachment> aList;
     private long uid;
     private String raw;
+    private Map<String, List<String>> headers = new HashMap<String, 
List<String>>();
 
+    
     public String toString() {
         return "uid=" + String.valueOf(getUid()) +
         " text.length=" + (text != null ? text.length() : 0) + 
         " raw.length=" + (raw != null ? raw.length() : 0) + 
-        " attachments=" + (aList != null ? aList.size() : 0); 
+        " attachments=" + (aList != null ? aList.size() : 0) + 
+        " headers=" + (headers != null ? headers.size() : 0); 
     }
     
     
@@ -66,6 +75,21 @@ public class MessageDetails implements S
         return raw;
     }
     
+    public Map<String, List<String>> getHeaders() {
+               return headers;
+       }
+    
+    public void addHeader(String name, String value) {
+       List<String> list = headers.get(name);
+       if (list == null) {
+               list = new ArrayList<String>();
+               headers.put(name, list);
+       }
+       list.add(value);
+    }
+    
+    
+    
     /**
      * Set the body text of the content
      * 
@@ -93,6 +117,31 @@ public class MessageDetails implements S
     }
 
     /**
+     * 
+     * @return the In-Reply-To header field.
+     */
+    public String getInReplyTo() {
+        return getHeaderValue(SConsts.HEADER_IN_REPLY_TO);
+    }
+
+    public String getHeaderValue(String key) {
+        List<String> h = headers.get(key);
+        return h != null && !h.isEmpty() ? h.get(0) : null;
+    }
+
+    /**
+     * 
+     * @return the References header field.
+     */
+    public String getReferences() {
+        return getHeaderValue(SConsts.HEADER_REFERENCES);
+    }
+
+    public String getMessageId() {
+        return getHeaderValue(SConsts.HEADER_MESSAGE_ID);
+    }    
+    
+    /**
      * Return the attachments 
      * 
      * @return aList

Modified: 
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/ForwardMessage.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/ForwardMessage.java?rev=1522168&r1=1522167&r2=1522168&view=diff
==============================================================================
--- 
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/ForwardMessage.java
 (original)
+++ 
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/ForwardMessage.java
 Thu Sep 12 03:07:36 2013
@@ -63,6 +63,8 @@ public class ForwardMessage extends Send
 >>>>>>> Aim to make the front end view work after the server side's IMAPFolder 
 >>>>>>> services RF being working, but there are issues on RF's find* method, 
 >>>>>>> I think.
 =======
     private ImapFolder folder;
+    private String inReplyTo;
+    private String references;
 
     public ForwardMessage(SMTPMessage msg, ImapFolder folder, long uid) {
 >>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can 
 >>>>>>> display folders in west view with RequestFactory now.
@@ -93,4 +95,24 @@ public class ForwardMessage extends Send
 >>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can 
 >>>>>>> display folders in west view with RequestFactory now.
         return folder;
     }
+    
+    @Override
+    public String getInReplyTo() {
+               return inReplyTo;
+       }
+
+    @Override
+    public String getReferences() {
+               return references;
+       }
+
+  public ForwardMessage setInReplyTo(String inReplyTo) {
+               this.inReplyTo = inReplyTo;
+               return this;
+       }
+   
+  public ForwardMessage setReferences(String references) {
+               this.references = references;
+               return this;
+       }
 }

Modified: 
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/SendMessage.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/SendMessage.java?rev=1522168&r1=1522167&r2=1522168&view=diff
==============================================================================
--- 
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/SendMessage.java
 (original)
+++ 
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/SendMessage.java
 Thu Sep 12 03:07:36 2013
@@ -48,4 +48,12 @@ public class SendMessage implements Acti
         this.msg = msg;
     }
     
+    public String getInReplyTo() {
+               return null;
+       }
+
+    public String getReferences() {
+               return null;
+       }
+
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to