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: [email protected]
For additional commands, e-mail: [email protected]