You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ma...@apache.org on 2009/12/02 18:30:18 UTC

svn commit: r886211 - in /james/hupa/trunk: client/src/main/java/org/apache/hupa/client/mvp/ server/src/main/java/org/apache/hupa/server/handler/ server/src/main/java/org/apache/hupa/server/servlet/ server/src/main/resources/mime/ shared/src/main/java/...

Author: manolo
Date: Wed Dec  2 17:30:17 2009
New Revision: 886211

URL: http://svn.apache.org/viewvc?rev=886211&view=rev
Log:
Use Reply-to header.
Improved the text which is automatically added in the head of reply and forward messages.
Added a log line useful to investigate bug #57

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/AbstractFetchMessagesHandler.java
    james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/GetMessageDetailsHandler.java
    james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/SendMessageHandler.java
    james/hupa/trunk/server/src/main/java/org/apache/hupa/server/servlet/HupaDispatchServlet.java
    james/hupa/trunk/server/src/main/resources/mime/7.msg
    james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/Util.java
    james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/data/AbstractMessage.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=886211&r1=886210&r2=886211&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 Wed Dec  2 17:30:17 2009
@@ -204,7 +204,7 @@
                     message.setFrom(display.getFromText().getText());
                     
                     ArrayList<String> to = new ArrayList<String>();
-                    String[] toRaw = display.getToText().getText().split(",");
+                    String[] toRaw = display.getToText().getText().split("[,;]+");
                     if (toRaw != null) {
                         for (int i = 0; i < toRaw.length;i++) {
                             String toRecip = toRaw[i].trim();
@@ -216,7 +216,7 @@
                     message.setTo(to);
                     
                     ArrayList<String> cc = new ArrayList<String>();
-                    String[] ccRaw = display.getCcText().getText().split(",");
+                    String[] ccRaw = display.getCcText().getText().split("[,;]+");
                     if (ccRaw != null) {
                         for (int i = 0; i < ccRaw.length;i++) {
                             String ccRecip = ccRaw[i].trim();
@@ -343,23 +343,26 @@
         display.getMessageHTML().setHTML("");
 
         if (type.equals(Type.FORWARD)) {
-            display.getSubjectText().setText("Fwd: " + oldmessage.getSubject());
-            display.getMessageHTML().setHTML(wrapMessage(oldmessage, oldDetails));
+            if (! oldmessage.getSubject().toLowerCase().startsWith("fwd:"))
+                display.getSubjectText().setText("Fwd: " + oldmessage.getSubject());
         } else if (type.equals(Type.REPLY) || type.equals(Type.REPLY_ALL)) {
-            display.getSubjectText().setText("Re: " + oldmessage.getSubject());
-            display.getMessageHTML().setHTML(wrapMessage(oldmessage, oldDetails));
-
-            if (type.equals(Type.REPLY)) {
+            if (! oldmessage.getSubject().toLowerCase().startsWith("re:"))
+                display.getSubjectText().setText("Re: " + oldmessage.getSubject());
+            
+            if (oldmessage.getReplyto() != null) {
+                display.getToText().setText(oldmessage.getReplyto());
+            } else if (type.equals(Type.REPLY)) {
                 display.getToText().setText(oldmessage.getFrom());
             } else {
                 oldmessage.getCc().remove(user.getName());
                 display.getCcText().setText(Util.listToString(oldmessage.getCc()));
                 oldmessage.getTo().remove(user.getName());
-
                 display.getToText().setText(Util.listToString(oldmessage.getTo()));
-
             }
         }
+        
+        display.getMessageHTML().setHTML(wrapMessage(oldmessage, oldDetails, type));
+        
         if (mailto != null)
             display.getToText().setText(mailto);
         firePresenterChangedEvent();
@@ -388,12 +391,31 @@
         // DO Nothing
     }
     
-    private String wrapMessage(Message message, MessageDetails details){
+    private String generateHeader(Message message, Type type) {
+        String ret = "<br><br>";
+        if (type.equals(Type.FORWARD)) {
+            ret += "--------- Forwarded message --------- <br>";
+            ret += "From: " + message.getFrom().replaceAll("<", "&lt;").replaceAll(">", "&gt;") + "<br>"; 
+            ret += "Date: " + message.getReceivedDate() + "<br>";
+            ret += "Subject: " + message.getSubject() + "<br>";
+            ArrayList<String> to = new ArrayList<String>();
+            to.addAll(message.getTo());
+            to.addAll(message.getCc());
+            ret += "To: " + Util.listToString(to).replaceAll("<", "&lt;").replaceAll(">", "&gt;") + "<br>";
+        } else if (type.equals(Type.REPLY) || type.equals(Type.REPLY_ALL)) {
+            ret += "On " + message.getReceivedDate();
+            ret += ", " + message.getFrom().replaceAll("<", "&lt;").replaceAll(">", "&gt;"); 
+            ret += ". wrote:<br>";
+        }
+        return ret + "<br>";
+    }
+    private String wrapMessage(Message message, MessageDetails details, Type type) {
         String ret;
         ret = "<font size=2 style='font-family: arial'>";
-        ret += "<br><br>On " + message.getReceivedDate() + ", " + message.getFrom() +". wrote:<br>";
+        ret += generateHeader(message, type);
         ret += "<blockquote style='border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;'>";
-        ret += details.getText();
+        if (details != null)
+            ret += details.getText();
         ret += "</blockquote></font>";
         return ret;
     }

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=886211&r1=886210&r2=886211&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 Wed Dec  2 17:30:17 2009
@@ -129,6 +129,17 @@
                 }
             }
             msg.setFrom(from);
+
+            String replyto = null;
+            if (m.getReplyTo() != null && m.getReplyTo().length >0 ) {
+                replyto = m.getReplyTo()[0].toString().trim();
+                try {
+                    replyto = MimeUtility.decodeText(replyto);
+                } catch (UnsupportedEncodingException e) {
+                    logger.debug("Unable to decode replyto " + replyto, e);
+                }
+            }
+            msg.setReplyto(replyto);
             
             ArrayList<String> to = new ArrayList<String>();
             // Add to addresses

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=886211&r1=886210&r2=886211&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 Wed Dec  2 17:30:17 2009
@@ -131,7 +131,6 @@
 
         StringBuffer sbPlain = new StringBuffer();
         ArrayList<MessageAttachment> attachmentList = new ArrayList<MessageAttachment>();
-
         
         boolean isHTML = handleParts(message, con, sbPlain, attachmentList);
 
@@ -144,6 +143,7 @@
         mDetails.setMessageAttachments(attachmentList);
 
         mDetails.setRawHeader(message.getAllHeaders().toString());
+        
         return mDetails;
     }
 

Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/SendMessageHandler.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/SendMessageHandler.java?rev=886211&r1=886210&r2=886211&view=diff
==============================================================================
--- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/SendMessageHandler.java (original)
+++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/SendMessageHandler.java Wed Dec  2 17:30:17 2009
@@ -47,6 +47,13 @@
      * @see net.customware.gwt.dispatch.server.ActionHandler#getActionType()
      */
     public Class<SendMessage> getActionType() {
+        try {
+            
+        } catch (Exception e) {
+            // TODO: handle exception
+        } finally {
+            
+        }
         return SendMessage.class;
     }
 

Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/servlet/HupaDispatchServlet.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/servlet/HupaDispatchServlet.java?rev=886211&r1=886210&r2=886211&view=diff
==============================================================================
--- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/servlet/HupaDispatchServlet.java (original)
+++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/servlet/HupaDispatchServlet.java Wed Dec  2 17:30:17 2009
@@ -50,7 +50,9 @@
     public Result execute( Action<?> action ) throws ActionException {
         try {
             logger.info("HupaDispatchServlet: executing: " + action.getClass().getName().replaceAll("^.*\\.",""));
-            return super.execute(action);
+            Result res = super.execute(action);
+            logger.info("HupaDispatchServlet: finished: " + action.getClass().getName().replaceAll("^.*\\.",""));
+            return res;
         } catch (ActionException e) {
             logger.error("HupaDispatchServlet returns an ActionException:" + e.getMessage());
             e.printStackTrace();

Modified: james/hupa/trunk/server/src/main/resources/mime/7.msg
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/resources/mime/7.msg?rev=886211&r1=886210&r2=886211&view=diff
==============================================================================
--- james/hupa/trunk/server/src/main/resources/mime/7.msg (original)
+++ james/hupa/trunk/server/src/main/resources/mime/7.msg Wed Dec  2 17:30:17 2009
@@ -1,7 +1,9 @@
                                                                                                                                                                                                                                                             
 Return-Path: <no...@foo.com>
 MIME-Version: 1.0
-From: Mickey <no...@foo.com>
+From: Mickey <mi...@foo.com>
+To: Donald <do...@foo.com>
+Reply-to: list@foo.com
 Date: Thu, 29 Oct 2009 08:05:36 +0100
 Message-ID: <50...@mail.gmail.com>
 Subject: html with inline images

Modified: james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/Util.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/Util.java?rev=886211&r1=886210&r2=886211&view=diff
==============================================================================
--- james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/Util.java (original)
+++ james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/Util.java Wed Dec  2 17:30:17 2009
@@ -52,7 +52,7 @@
         for (int i = 0; i < list.size(); i++) {
             sb.append(list.get(i));
             if (i < list.size()-1) {
-                sb.append(", ");
+                sb.append(",    ");
             }
         }
         return sb.toString();

Modified: james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/data/AbstractMessage.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/data/AbstractMessage.java?rev=886211&r1=886210&r2=886211&view=diff
==============================================================================
--- james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/data/AbstractMessage.java (original)
+++ james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/data/AbstractMessage.java Wed Dec  2 17:30:17 2009
@@ -30,6 +30,7 @@
     private static final long serialVersionUID = 5208272852772006815L;
     private String from;
     private String subject;
+    private String replyto;
     private ArrayList<String> to;
     private ArrayList<String> cc;
     private boolean hasAttachment;
@@ -48,6 +49,7 @@
         return "From='" + from 
              + "' To='" + toList
              + "' CC='" + ccList
+             + "' ReplyTo='" + replyto
              + "' Subject='" + subject
              + "' Attachments=" + hasAttachment;
     }
@@ -114,6 +116,13 @@
         this.to = to;
     }
     
+    public String getReplyto() {
+        return replyto;
+    }
+
+    public void setReplyto(String replyto) {
+        this.replyto = replyto;
+    }
 
 
 }



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