aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/email/Message.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/email/Message.java')
-rw-r--r--framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/email/Message.java203
1 files changed, 203 insertions, 0 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/email/Message.java b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/email/Message.java
new file mode 100644
index 00000000..c121f5d7
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/email/Message.java
@@ -0,0 +1,203 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.tools.ant.taskdefs.email;
+
+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;
+
+/**
+ * Class representing an email message.
+ *
+ * @since Ant 1.5
+ */
+public class Message extends ProjectComponent {
+ private File messageSource = null;
+ private StringBuffer buffer = new StringBuffer();
+ private String mimeType = "text/plain";
+ private boolean specified = false;
+ private String charset = null;
+ private String inputEncoding;
+
+ /** Creates a new empty message */
+ public Message() {
+ }
+
+
+ /**
+ * Creates a new message based on the given string
+ *
+ * @param text the message
+ */
+ public Message(String text) {
+ addText(text);
+ }
+
+
+ /**
+ * Creates a new message using the contents of the given file.
+ *
+ * @param file the source of the message
+ */
+ public Message(File file) {
+ messageSource = file;
+ }
+
+
+ /**
+ * Adds a textual part of the message
+ *
+ * @param text some text to add
+ */
+ public void addText(String text) {
+ buffer.append(text);
+ }
+
+
+ /**
+ * Sets the source file of the message
+ *
+ * @param src the source of the message
+ */
+ public void setSrc(File src) {
+ this.messageSource = src;
+ }
+
+
+ /**
+ * Sets the content type for the message
+ *
+ * @param mimeType a mime type e.g. "text/plain"
+ */
+ public void setMimeType(String mimeType) {
+ this.mimeType = mimeType;
+ specified = true;
+ }
+
+
+ /**
+ * Returns the content type
+ *
+ * @return the mime type
+ */
+ public String getMimeType() {
+ return mimeType;
+ }
+
+
+ /**
+ * Prints the message onto an output stream
+ *
+ * @param ps The print stream to write to
+ * @throws IOException if an error occurs
+ */
+ public void print(PrintStream ps)
+ throws IOException {
+ // We need character encoding aware printing here.
+ // So, using BufferedWriter over OutputStreamWriter instead of PrintStream
+ BufferedWriter out = null;
+ try {
+ out
+ = charset != null ? new BufferedWriter(new OutputStreamWriter(ps, charset))
+ : new BufferedWriter(new OutputStreamWriter(ps));
+ if (messageSource != null) {
+ // Read message from a file
+ Reader freader = getReader(messageSource);
+
+ try {
+ BufferedReader in = new BufferedReader(freader);
+ String line = null;
+ while ((line = in.readLine()) != null) {
+ out.write(getProject().replaceProperties(line));
+ out.newLine();
+ }
+ } finally {
+ freader.close();
+ }
+ } else {
+ out.write(getProject().replaceProperties(buffer.substring(0)));
+ out.newLine();
+ }
+ out.flush();
+ } finally {
+ //do not close the out writer as it is reused afterwards by the mail task
+ }
+ }
+
+
+ /**
+ * Returns true if the mimeType has been set.
+ *
+ * @return false if the default value is in use
+ */
+ public boolean isMimeTypeSpecified() {
+ return specified;
+ }
+
+ /**
+ * Sets the character set of mail message.
+ * Will be ignored if mimeType contains ....; Charset=... substring.
+ * @param charset the character set name.
+ * @since Ant 1.6
+ */
+ public void setCharset(String charset) {
+ this.charset = charset;
+ }
+ /**
+ * Returns the charset of mail message.
+ *
+ * @return Charset of mail message.
+ * @since Ant 1.6
+ */
+ 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);
+ }
+}
+