You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by bo...@apache.org on 2014/03/14 18:28:53 UTC

svn commit: r1577617 - in /ant/core/trunk: WHATSNEW manual/Tasks/mail.html src/main/org/apache/tools/ant/taskdefs/email/EmailTask.java src/main/org/apache/tools/ant/taskdefs/email/Message.java

Author: bodewig
Date: Fri Mar 14 17:28:53 2014
New Revision: 1577617

URL: http://svn.apache.org/r1577617
Log:
add inputencoding to mail's message when read from a file.  PR 56258

Modified:
    ant/core/trunk/WHATSNEW
    ant/core/trunk/manual/Tasks/mail.html
    ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/email/EmailTask.java
    ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/email/Message.java

Modified: ant/core/trunk/WHATSNEW
URL: http://svn.apache.org/viewvc/ant/core/trunk/WHATSNEW?rev=1577617&r1=1577616&r2=1577617&view=diff
==============================================================================
--- ant/core/trunk/WHATSNEW (original)
+++ ant/core/trunk/WHATSNEW Fri Mar 14 17:28:53 2014
@@ -124,6 +124,11 @@ Other changes:
    Bugzilla Report 55667
    Bugzilla Report 56156
 
+ * the nested <message> elements of <mail> now have an optional
+   inputEncoding attribute that can be used to specify the encoding of
+   files read that don't use the platform's default encoding.
+   Bugzilla Report 56258
+
 Changes from Ant 1.9.2 TO Ant 1.9.3
 ===================================
 

Modified: ant/core/trunk/manual/Tasks/mail.html
URL: http://svn.apache.org/viewvc/ant/core/trunk/manual/Tasks/mail.html?rev=1577617&r1=1577616&r2=1577617&view=diff
==============================================================================
--- ant/core/trunk/manual/Tasks/mail.html (original)
+++ ant/core/trunk/manual/Tasks/mail.html Fri Mar 14 17:28:53 2014
@@ -98,7 +98,19 @@
     <td valign="top">File to send as the body of the email. Property
     values in the file will be expanded.</td>
   </tr>
-      <td valign="top">messagemimetype</td>
+  <tr>
+    <td valign="top">messagefileinputencoding</td>
+    <td valign="top">
+      Specifies the encoding of the input file. Please see
+      <a href="http://docs.oracle.com/javase/7/docs/technotes/guides/intl/encoding.doc.html">
+        Supported Encodings</a> for a list of possible
+      values. Defaults to the platform's default character
+      encoding. <em>Since Ant 1.9.4</em>
+    </td>
+    <td valign="top" align="center">No</td>
+  </tr>
+  <tr>
+    <td valign="top">messagemimetype</td>
     <td valign="top">The content type of the message.  The default is
     <code>text/plain</code>.</td>
     <td align="center" valign="top">No</td>
@@ -253,6 +265,17 @@ attributes:</p>
     These options are mutually exclusive.</td>
     <td align="center" valign="top">No</td>
   </tr>
+  <tr>
+    <td valign="top">inputencoding</td>
+    <td valign="top">
+      Specifies the encoding of the input file. Please see
+      <a href="http://docs.oracle.com/javase/7/docs/technotes/guides/intl/encoding.doc.html">
+        Supported Encodings</a> for a list of possible
+      values. Defaults to the platform's default character
+      encoding. <em>Since Ant 1.9.4</em>
+    </td>
+    <td valign="top" align="center">No</td>
+  </tr>
 </table>
 
 <p>If the <code>src</code> attribute is not specified, then text can be added

Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/email/EmailTask.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/email/EmailTask.java?rev=1577617&r1=1577616&r2=1577617&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/email/EmailTask.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/email/EmailTask.java Fri Mar 14 17:28:53 2014
@@ -78,6 +78,7 @@ public class EmailTask extends Task {
     private boolean failOnError = true;
     private boolean includeFileNames = false;
     private String messageMimeType = null;
+    private String messageFileInputEncoding;
     /* special headers */
     /** sender  */
     private EmailAddress from = null;
@@ -527,6 +528,7 @@ public class EmailTask extends Task {
                 }
                 message.setCharset(charset);
             }
+            message.setInputEncoding(messageFileInputEncoding);
 
             // identify which files should be attached
             Vector<File> files = new Vector<File>();
@@ -601,7 +603,7 @@ public class EmailTask extends Task {
     /**
      * Sets the character set of mail message.
      * Will be ignored if mimeType contains ....; Charset=... substring or
-     * encoding is not a <code>mime</code>.
+     * encoding is not <code>mime</code>.
      * @param charset the character encoding to use.
      * @since Ant 1.6
      */
@@ -619,5 +621,15 @@ public class EmailTask extends Task {
         return charset;
     }
 
+    /**
+     * Sets the encoding to expect when reading the message from a file.
+     * <p>Will be ignored if the message has been specified inline.</p>
+     * @param encoding the name of the charset used
+     * @since Ant 1.9.4
+     */
+    public void setMessageFileInputEncoding(String encoding) {
+        messageFileInputEncoding = encoding;
+    }
+
 }
 

Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/email/Message.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/email/Message.java?rev=1577617&r1=1577616&r2=1577617&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/email/Message.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/email/Message.java Fri Mar 14 17:28:53 2014
@@ -20,10 +20,13 @@ package org.apache.tools.ant.taskdefs.em
 import java.io.BufferedReader;
 import java.io.BufferedWriter;
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.FileReader;
 import java.io.IOException;
+import java.io.InputStreamReader;
 import java.io.OutputStreamWriter;
 import java.io.PrintStream;
+import java.io.Reader;
 
 import org.apache.tools.ant.ProjectComponent;
 
@@ -38,6 +41,7 @@ public class Message extends ProjectComp
     private String mimeType = "text/plain";
     private boolean specified = false;
     private String charset = null;
+    private String inputEncoding;
 
     /** Creates a new empty message  */
     public Message() {
@@ -122,7 +126,7 @@ public class Message extends ProjectComp
                 : new BufferedWriter(new OutputStreamWriter(ps));
             if (messageSource != null) {
                 // Read message from a file
-                FileReader freader = new FileReader(messageSource);
+                Reader freader = getReader(messageSource);
 
                 try {
                     BufferedReader in = new BufferedReader(freader);
@@ -172,5 +176,28 @@ public class Message extends ProjectComp
     public String getCharset() {
       return charset;
     }
+
+    /**
+     * Sets the encoding to expect when reading the message from a file.
+     * <p>Will be ignored if the message has been specified inline.</p>
+     * @param encoding the name of the charset used
+     * @since Ant 1.9.4
+     */
+    public void setInputEncoding(String encoding) {
+        this.inputEncoding = encoding;
+    }
+
+    private Reader getReader(File f) throws IOException {
+        if (inputEncoding != null) {
+            FileInputStream fis = new FileInputStream(f);
+            try {
+                return new InputStreamReader(fis, inputEncoding);
+            } catch (IOException ex) {
+                fis.close();
+                throw ex;
+            }
+        }
+        return new FileReader(f);
+    }
 }