MailTarget is now MailSendingMessageConsumer, and the "integration/mail" namespace now defines an "outbound-channel-adapter" element.

This commit is contained in:
Mark Fisher
2008-09-22 18:51:34 +00:00
parent 866b4ab3f8
commit bf151ac50a
9 changed files with 78 additions and 76 deletions

View File

@@ -18,8 +18,8 @@ package org.springframework.integration.mail;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.integration.message.Message;
import org.springframework.integration.message.MessageConsumer;
import org.springframework.integration.message.MessageMapper;
import org.springframework.integration.message.MessageTarget;
import org.springframework.mail.MailMessage;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
@@ -27,12 +27,12 @@ import org.springframework.mail.javamail.MimeMailMessage;
import org.springframework.util.Assert;
/**
* A target adapter for sending mail.
* A {@link MessageConsumer} implementation for sending mail.
*
* @author Marius Bogoevici
* @author Mark Fisher
*/
public class MailTarget implements MessageTarget, InitializingBean {
public class MailSendingMessageConsumer implements MessageConsumer, InitializingBean {
private final JavaMailSender mailSender;
@@ -46,12 +46,12 @@ public class MailTarget implements MessageTarget, InitializingBean {
/**
* Create a MailTargetAdapter.
* Create a MailSendingMessageConsumer.
*
* @param mailSender the {@link JavaMailSender} instance to which this
* adapter will delegate.
*/
public MailTarget(JavaMailSender mailSender) {
public MailSendingMessageConsumer(JavaMailSender mailSender) {
Assert.notNull(mailSender, "'mailSender' must not be null");
this.mailSender = mailSender;
}
@@ -83,11 +83,10 @@ public class MailTarget implements MessageTarget, InitializingBean {
this.objectMessageMapper = objectMessageMapper;
}
public final boolean send(Message<?> message) {
public final void onMessage(Message<?> message) {
MailMessage mailMessage = this.convertMessageToMailMessage(message);
this.mailHeaderGenerator.populateMailMessageHeader(mailMessage, message);
this.sendMailMessage(mailMessage);
return true;
}
@SuppressWarnings("unchecked")

View File

@@ -26,7 +26,7 @@ import org.springframework.beans.factory.xml.NamespaceHandlerSupport;
public class MailNamespaceHandler extends NamespaceHandlerSupport {
public void init() {
this.registerBeanDefinitionParser("mail-target", new MailTargetParser());
this.registerBeanDefinitionParser("outbound-channel-adapter", new MailOutboundChannelAdapterParser());
this.registerBeanDefinitionParser("polling-mail-source", new PollingMailSourceParser());
this.registerBeanDefinitionParser("imap-idle-mail-source", new SubscribableImapIdleMailSourceParser());
}

View File

@@ -19,33 +19,28 @@ package org.springframework.integration.mail.config;
import org.w3c.dom.Element;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
import org.springframework.beans.factory.support.BeanDefinitionReaderUtils;
import org.springframework.beans.factory.xml.ParserContext;
import org.springframework.integration.ConfigurationException;
import org.springframework.integration.mail.MailTarget;
import org.springframework.integration.config.AbstractOutboundChannelAdapterParser;
import org.springframework.integration.mail.MailSendingMessageConsumer;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.util.StringUtils;
/**
* Parser for the &lt;mail-target/&gt; element.
* Parser for the &lt;outbound-channel-adapter/&gt; element of the 'mail' namespace.
*
* @author Mark Fisher
*/
public class MailTargetParser extends AbstractSingleBeanDefinitionParser {
public class MailOutboundChannelAdapterParser extends AbstractOutboundChannelAdapterParser {
protected Class<?> getBeanClass(Element element) {
return MailTarget.class;
return MailSendingMessageConsumer.class;
}
protected boolean shouldGenerateId() {
return false;
}
protected boolean shouldGenerateIdAsFallback() {
return true;
}
protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) {
@Override
protected String parseConsumer(Element element, ParserContext parserContext) {
BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(MailSendingMessageConsumer.class);
String mailSenderRef = element.getAttribute("mail-sender");
String host = element.getAttribute("host");
String username = element.getAttribute("username");
@@ -75,6 +70,8 @@ public class MailTargetParser extends AbstractSingleBeanDefinitionParser {
if (StringUtils.hasText(headerGeneratorRef)) {
builder.addPropertyReference("headerGenerator", headerGeneratorRef);
}
return BeanDefinitionReaderUtils.registerWithGeneratedName(
builder.getBeanDefinition(), parserContext.getRegistry());
}
}

View File

@@ -16,11 +16,11 @@
]]></xsd:documentation>
</xsd:annotation>
<xsd:element name="mail-target">
<xsd:element name="outbound-channel-adapter">
<xsd:complexType>
<xsd:annotation>
<xsd:documentation>
Defines a mail-sending target.
Defines an outbound mail-sending Channel Adapter.
</xsd:documentation>
</xsd:annotation>
<xsd:attribute name="id" type="xsd:string"/>
@@ -31,7 +31,7 @@
<xsd:attribute name="password" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="polling-mail-source">
<xsd:complexType>
<xsd:annotation>
@@ -44,12 +44,12 @@
<xsd:attribute name="mail-convertor" type="xsd:string" use="optional"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="imap-idle-mail-source">
<xsd:complexType>
<xsd:annotation>
<xsd:documentation>
Defines a polling mail source.
Defines an IMAP mail source.
</xsd:documentation>
</xsd:annotation>
<xsd:attribute name="id" type="xsd:string" use="required"/>