Added the (optional) 'header-generator' attribute for the <mail-target/> element (INT-145).
This commit is contained in:
@@ -102,6 +102,7 @@
|
||||
</xsd:annotation>
|
||||
<xsd:attribute name="id" type="xsd:string"/>
|
||||
<xsd:attribute name="mail-sender" type="xsd:string"/>
|
||||
<xsd:attribute name="header-generator" type="xsd:string"/>
|
||||
<xsd:attribute name="host" type="xsd:string"/>
|
||||
<xsd:attribute name="username" type="xsd:string"/>
|
||||
<xsd:attribute name="password" type="xsd:string"/>
|
||||
|
||||
@@ -56,6 +56,7 @@ public class MailTargetAdapterParser extends AbstractSingleBeanDefinitionParser
|
||||
String host = element.getAttribute("host");
|
||||
String username = element.getAttribute("username");
|
||||
String password = element.getAttribute("password");
|
||||
String headerGeneratorRef = element.getAttribute("header-generator");
|
||||
if (StringUtils.hasText(mailSenderRef)) {
|
||||
if (StringUtils.hasText(host) || StringUtils.hasText(username) || StringUtils.hasText(password)) {
|
||||
throw new MessagingConfigurationException("The 'host', 'username', and 'password' properties " +
|
||||
@@ -77,6 +78,10 @@ public class MailTargetAdapterParser extends AbstractSingleBeanDefinitionParser
|
||||
else {
|
||||
throw new MessagingConfigurationException("Either a 'mail-sender' reference or 'host' property is required.");
|
||||
}
|
||||
if (StringUtils.hasText(headerGeneratorRef)) {
|
||||
adapterDef.getPropertyValues().addPropertyValue(
|
||||
"headerGenerator", new RuntimeBeanReference(headerGeneratorRef));
|
||||
}
|
||||
String adapterBeanName = parserContext.getReaderContext().generateBeanName(adapterDef);
|
||||
parserContext.registerBeanComponent(new BeanComponentDefinition(adapterDef, adapterBeanName));
|
||||
builder.addPropertyReference("handler", adapterBeanName);
|
||||
|
||||
@@ -16,16 +16,21 @@
|
||||
|
||||
package org.springframework.integration.adapter.mail.config;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.beans.DirectFieldAccessor;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.support.ClassPathXmlApplicationContext;
|
||||
import org.springframework.integration.adapter.mail.MailHeaderGenerator;
|
||||
import org.springframework.integration.adapter.mail.MailTargetAdapter;
|
||||
import org.springframework.integration.endpoint.DefaultMessageEndpoint;
|
||||
import org.springframework.integration.handler.MessageHandler;
|
||||
import org.springframework.integration.message.Message;
|
||||
import org.springframework.mail.MailMessage;
|
||||
|
||||
/**
|
||||
* @author Mark Fisher
|
||||
@@ -52,4 +57,25 @@ public class MailTargetAdapterParserTests {
|
||||
assertTrue(handler instanceof MailTargetAdapter);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAdapterWithHeaderGeneratorReference() {
|
||||
ApplicationContext context = new ClassPathXmlApplicationContext(
|
||||
"mailTargetAdapterParserTests.xml", this.getClass());
|
||||
DefaultMessageEndpoint endpoint = (DefaultMessageEndpoint) context.getBean("adapterWithHeaderGeneratorReference");
|
||||
MessageHandler handler = endpoint.getHandler();
|
||||
assertNotNull(handler);
|
||||
assertTrue(handler instanceof MailTargetAdapter);
|
||||
DirectFieldAccessor fieldAccessor = new DirectFieldAccessor(handler);
|
||||
MailHeaderGenerator headerGenerator =
|
||||
(MailHeaderGenerator) fieldAccessor.getPropertyValue("mailHeaderGenerator");
|
||||
assertEquals(TestHeaderGenerator.class, headerGenerator.getClass());
|
||||
}
|
||||
|
||||
|
||||
public static class TestHeaderGenerator implements MailHeaderGenerator {
|
||||
|
||||
public void populateMailMessageHeader(MailMessage mailMessage, Message<?> message) {
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -24,4 +24,10 @@
|
||||
</constructor-arg>
|
||||
</bean>
|
||||
|
||||
<si:mail-target id="adapterWithHeaderGeneratorReference" mail-sender="mailSender" channel="testChannel"
|
||||
header-generator="testHeaderGenerator"/>
|
||||
|
||||
<bean id="testHeaderGenerator"
|
||||
class="org.springframework.integration.adapter.mail.config.MailTargetAdapterParserTests$TestHeaderGenerator"/>
|
||||
|
||||
</beans>
|
||||
Reference in New Issue
Block a user