- From: Thomas Gambet via cvs-syncmail <cvsmail@w3.org>
- Date: Tue, 29 Sep 2009 16:08:27 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2006/unicorn/src/org/w3c/unicorn/output
In directory hutz:/tmp/cvs-serv6789/src/org/w3c/unicorn/output
Modified Files:
MailOutputModule.java
Log Message:
refactored with new OutputModule class
+ implemented multipart messages
Index: MailOutputModule.java
===================================================================
RCS file: /sources/public/2006/unicorn/src/org/w3c/unicorn/output/MailOutputModule.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- MailOutputModule.java 28 Sep 2009 16:41:18 -0000 1.10
+++ MailOutputModule.java 29 Sep 2009 16:08:25 -0000 1.11
@@ -8,10 +8,12 @@
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.util.Date;
+import java.util.List;
import java.util.Map;
import java.util.ArrayList;
import java.util.Properties;
import org.w3c.unicorn.util.Message;
+
import javax.mail.*;
import javax.mail.internet.*;
import org.w3c.unicorn.UnicornCall;
@@ -19,6 +21,8 @@
import org.w3c.unicorn.util.Property;
import org.w3c.unicorn.util.UnicornAuthenticator;
+import javax.mail.internet.MimeBodyPart;
+
/**
* This module allows to send the response by mail.
*
@@ -26,31 +30,31 @@
*/
public class MailOutputModule extends OutputModule {
- private OutputFormater firstOutputFormater;
-
- private OutputFormater mailOutputFormater;
-
- private String mimeType;
+private List<OutputFormater> mailOutputFormaters;
private String recipient;
+ private String mailFormat;
+
public MailOutputModule(Map<String, String> mapOfOutputParameters, Map<String, String> mapOfSpecificParameters) {
super(mapOfOutputParameters, mapOfSpecificParameters);
- recipient = mapOfSpecificParameters.get("email");
- mimeType = mapOfOutputParameters.get("mimetype");
+ recipient = specificParameters.get("email");
- String format = mapOfOutputParameters.get("format");
- String lang = mapOfOutputParameters.get("lang");
+ mailFormat = specificParameters.get("format");
- firstOutputFormater = OutputFactory.createOutputFormater(format, lang, mimeType);
+ mailOutputFormaters = new ArrayList<OutputFormater>();
+
+ mailOutputFormaters.add(OutputFactory.createOutputFormater("text", outputParameters.get("lang")));
- if (mapOfSpecificParameters.get("format") != null)
- format = mapOfSpecificParameters.get("format");
- if (mapOfSpecificParameters.get("mimetype") != null)
- mimeType = mapOfSpecificParameters.get("mimetype");
+ if (mailFormat == null) {
+ mailFormat = defaultOutputFormater.getFormat();
+ }
+
+ if (!"text".equals(mailFormat)) {
+ mailOutputFormaters.add(OutputFactory.createOutputFormater(mailFormat, outputParameters.get("lang")));
+ }
- mailOutputFormater = OutputFactory.createOutputFormater(format, lang, mimeType);
}
@SuppressWarnings("unchecked")
@@ -65,6 +69,9 @@
} else {
messages.add(pendingMess);
}
+ if (mailOutputFormaters == null && mailOutputFormaters.get(0) == null)
+ throw new UnicornException();
+
displayOnIndex(mapOfStringObject, aWriter);
messages.remove(pendingMess);
}
@@ -72,17 +79,19 @@
@SuppressWarnings("unchecked")
public void produceOutput(Map<String, Object> mapOfStringObject, final Writer aWriter) {
-
- // TODO http://java.sun.com/developer/EJTechTips/2004/tt0625.html#1 for multipart messages
-
-
if (recipient == null)
return;
+ if (mailOutputFormaters == null && mailOutputFormaters.get(0) == null)
+ return;
- ArrayList<Message> messages = ((ArrayList<Message>) mapOfStringObject.get("messages"));
- messages.add(new Message(Message.Level.INFO, "Observation effectuée le " + new Date()));
+ // TODO http://java.sun.com/developer/EJTechTips/2004/tt0625.html#1 for multipart messages
+
+
try {
+ ArrayList<Message> messages = ((ArrayList<Message>) mapOfStringObject.get("messages"));
+ messages.add(new Message(Message.Level.INFO, "Observation effectuée le " + new Date()));
+
mapOfStringObject.put("baseUri", "http://qa-dev.w3.org:8001/unicorn/");
Properties mailProps = Property.getProps("mail.properties");
@@ -94,13 +103,7 @@
debug = true;
session.setDebug(debug);
- javax.mail.Message msg = new MimeMessage(session);
-
- InternetAddress addressFrom = new InternetAddress(mailProps.getProperty("unicorn.mail.from"), "Unicorn");
- msg.setFrom(addressFrom);
- msg.setRecipient(javax.mail.Message.RecipientType.TO, new InternetAddress(recipient));
- // Setting the Subject and Content Type
UnicornCall uniCall = (UnicornCall) mapOfStringObject.get("unicorncall");
boolean passed = uniCall.isPassed();
@@ -111,14 +114,34 @@
subject += "FAILED: ";
subject += "Task \"" + uniCall.getTask().getLongName(outputParameters.get("lang")) + "\" for \"" + uniCall.getDocumentName() + "\"";
+ javax.mail.Message msg = new MimeMessage(session);
+ InternetAddress addressFrom = new InternetAddress(mailProps.getProperty("unicorn.mail.from"), "Unicorn");
+ msg.setFrom(addressFrom);
+ msg.setRecipient(javax.mail.Message.RecipientType.TO, new InternetAddress(recipient));
msg.setSubject(subject);
- CharArrayWriter writer = new CharArrayWriter();
- mailOutputFormater.produceOutput(mapOfStringObject, writer);
- writer.close();
- msg.setContent(writer.toString(), mimeType);
+ if (mailOutputFormaters.size() > 1) {
+ // New multipart message
+ Multipart mp = new MimeMultipart("alternative");
+ for (OutputFormater outputFormater : mailOutputFormaters) {
+ MimeBodyPart bodyPart = new MimeBodyPart();
+ bodyPart.addHeader("Content-Type", outputFormater.getMimeType() + ", charset=UTF-8");
+ CharArrayWriter writer = new CharArrayWriter();
+ outputFormater.produceOutput(mapOfStringObject, writer);
+ writer.close();
+ bodyPart.setContent(writer.toString(), outputFormater.getMimeType());
+ mp.addBodyPart(bodyPart);
+ }
+ msg.setContent(mp);
+ } else {
+ CharArrayWriter writer = new CharArrayWriter();
+ mailOutputFormaters.get(0).produceOutput(mapOfStringObject, writer);
+ writer.close();
+ msg.setContent(writer.toString(), mailOutputFormaters.get(0).getMimeType());
+ }
Transport.send(msg);
+
} catch (AddressException e) {
// TODO Auto-generated catch block
e.printStackTrace();
@@ -132,11 +155,11 @@
}
public void produceError(Map<String, Object> mapOfStringObject, final Writer aWriter) {
- if (outputParameters.get("mimetype").equals("text/html")) {
+ if (getMimeType().equals("text/html")) {
displayOnIndex(mapOfStringObject, aWriter);
return;
}
- firstOutputFormater.produceError(mapOfStringObject, aWriter);
+ defaultOutputFormater.produceError(mapOfStringObject, aWriter);
}
}
\ No newline at end of file
Received on Tuesday, 29 September 2009 16:08:38 UTC