You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2013/02/12 10:18:56 UTC
svn commit: r1445073 - in /camel/trunk/components/camel-mail/src:
main/java/org/apache/camel/component/mail/MailProducer.java
test/java/org/apache/camel/component/mail/MailProducerTest.java
Author: davsclaus
Date: Tue Feb 12 09:18:55 2013
New Revision: 1445073
URL: http://svn.apache.org/r1445073
Log:
CAMEL-6063: Mail producer now detects if the message body is a MimeMessage and send that as is. Thanks to Thomas Vautrin for the patch.
Modified:
camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailProducer.java
camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailProducerTest.java
Modified: camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailProducer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailProducer.java?rev=1445073&r1=1445072&r2=1445073&view=diff
==============================================================================
--- camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailProducer.java (original)
+++ camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailProducer.java Tue Feb 12 09:18:55 2013
@@ -27,8 +27,6 @@ import org.slf4j.LoggerFactory;
/**
* A Producer to send messages using JavaMail.
- *
- * @version
*/
public class MailProducer extends DefaultProducer {
private static final transient Logger LOG = LoggerFactory.getLogger(MailProducer.class);
@@ -40,9 +38,18 @@ public class MailProducer extends Defaul
}
public void process(final Exchange exchange) {
- MimeMessage mimeMessage = new MimeMessage(sender.getSession());
try {
- getEndpoint().getBinding().populateMailMessage(getEndpoint(), mimeMessage, exchange);
+ MimeMessage mimeMessage;
+
+ final Object body = exchange.getIn().getBody();
+ if (body instanceof MimeMessage) {
+ // Body is directly a MimeMessage
+ mimeMessage = (MimeMessage) body;
+ } else {
+ // Create a message with exchange data
+ mimeMessage = new MimeMessage(sender.getSession());
+ getEndpoint().getBinding().populateMailMessage(getEndpoint(), mimeMessage, exchange);
+ }
if (LOG.isDebugEnabled()) {
LOG.debug("Sending MimeMessage: {}", MailUtils.dumpMessage(mimeMessage));
}
@@ -55,7 +62,7 @@ public class MailProducer extends Defaul
exchange.setException(e);
}
}
-
+
@Override
public MailEndpoint getEndpoint() {
return (MailEndpoint) super.getEndpoint();
Modified: camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailProducerTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailProducerTest.java?rev=1445073&r1=1445072&r2=1445073&view=diff
==============================================================================
--- camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailProducerTest.java (original)
+++ camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailProducerTest.java Tue Feb 12 09:18:55 2013
@@ -16,6 +16,12 @@
*/
package org.apache.camel.component.mail;
+import javax.mail.Address;
+import javax.mail.Message.RecipientType;
+import javax.mail.Session;
+import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeMessage;
+
import org.apache.camel.Exchange;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.test.junit4.CamelTestSupport;
@@ -38,6 +44,34 @@ public class MailProducerTest extends Ca
Mailbox box = Mailbox.get("someone@localhost");
assertEquals(1, box.size());
}
+
+ @Test
+ public void testProducerBodyIsMimeMessage() throws Exception {
+ Mailbox.clearAll();
+ getMockEndpoint("mock:result").expectedMessageCount(1);
+
+ Address from = new InternetAddress("fromCamelTest@localhost");
+ Address to = new InternetAddress("recipient2@localhost");
+ Session session = Session.getDefaultInstance(System.getProperties());
+ MimeMessage mimeMessage = new MimeMessage(session);
+ mimeMessage.setFrom(from);
+ mimeMessage.addRecipient(RecipientType.TO, to);
+ mimeMessage.setSubject("This is the subject.");
+ mimeMessage.setText("This is the message");
+
+ template.sendBodyAndHeader("direct:start", mimeMessage, "To", "someone@localhost");
+ assertMockEndpointsSatisfied();
+ // need to check the message header
+ Exchange exchange = getMockEndpoint("mock:result").getExchanges().get(0);
+ assertNotNull("The message id should not be null", exchange.getIn().getHeader(MailConstants.MAIL_MESSAGE_ID));
+
+ Mailbox box = Mailbox.get("someone@localhost");
+ assertEquals(0, box.size());
+
+ // Check if the mimeMessagea has override body and headers
+ Mailbox box2 = Mailbox.get("recipient2@localhost");
+ assertEquals(1, box2.size());
+ }
@Override
protected RouteBuilder createRouteBuilder() throws Exception {