From 70bb85f7a16d877c95c4003c23d03bfa3580d1ad Mon Sep 17 00:00:00 2001 From: Mark Fisher Date: Fri, 26 Sep 2008 21:12:27 +0000 Subject: [PATCH] MailOutboundChannelAdapterParser now configures the "port" and "javamail-properties" on the MailSender if defined. --- .../MailOutboundChannelAdapterParser.java | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/org.springframework.integration.mail/src/main/java/org/springframework/integration/mail/config/MailOutboundChannelAdapterParser.java b/org.springframework.integration.mail/src/main/java/org/springframework/integration/mail/config/MailOutboundChannelAdapterParser.java index 19c6443814..f14d75604e 100644 --- a/org.springframework.integration.mail/src/main/java/org/springframework/integration/mail/config/MailOutboundChannelAdapterParser.java +++ b/org.springframework.integration.mail/src/main/java/org/springframework/integration/mail/config/MailOutboundChannelAdapterParser.java @@ -20,9 +20,11 @@ import org.w3c.dom.Element; import org.springframework.beans.factory.support.AbstractBeanDefinition; import org.springframework.beans.factory.support.BeanDefinitionBuilder; +import org.springframework.beans.factory.support.BeanDefinitionReaderUtils; import org.springframework.beans.factory.xml.ParserContext; import org.springframework.integration.ConfigurationException; import org.springframework.integration.config.AbstractOutboundChannelAdapterParser; +import org.springframework.integration.config.IntegrationNamespaceUtils; import org.springframework.integration.mail.MailSendingMessageConsumer; import org.springframework.mail.javamail.JavaMailSenderImpl; import org.springframework.util.StringUtils; @@ -43,6 +45,7 @@ public class MailOutboundChannelAdapterParser extends AbstractOutboundChannelAda BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(MailSendingMessageConsumer.class); String mailSenderRef = element.getAttribute("mail-sender"); String host = element.getAttribute("host"); + String port = element.getAttribute("port"); String username = element.getAttribute("username"); String password = element.getAttribute("password"); if (StringUtils.hasText(mailSenderRef)) { @@ -53,15 +56,23 @@ public class MailOutboundChannelAdapterParser extends AbstractOutboundChannelAda builder.addConstructorArgReference(mailSenderRef); } else if (StringUtils.hasText(host)) { - JavaMailSenderImpl mailSender = new JavaMailSenderImpl(); - mailSender.setHost(host); + BeanDefinitionBuilder mailSenderBuilder = + BeanDefinitionBuilder.genericBeanDefinition(JavaMailSenderImpl.class); + mailSenderBuilder.addPropertyValue("host", host); if (StringUtils.hasText(username)) { - mailSender.setUsername(username); + mailSenderBuilder.addPropertyValue("username", username); } if (StringUtils.hasText(password)) { - mailSender.setPassword(password); + mailSenderBuilder.addPropertyValue("password", password); } - builder.addConstructorArgValue(mailSender); + if (StringUtils.hasText(port)) { + mailSenderBuilder.addPropertyValue("port", port); + } + IntegrationNamespaceUtils.setValueIfAttributeDefined( + mailSenderBuilder, element, "javamail-properties", "javaMailProperties"); + String mailSenderBeanName = BeanDefinitionReaderUtils.registerWithGeneratedName( + mailSenderBuilder.getBeanDefinition(), parserContext.getRegistry()); + builder.addConstructorArgReference(mailSenderBeanName); } else { throw new ConfigurationException("Either a 'mail-sender' reference or 'host' property is required.");