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