diff --git a/spring-integration-adapters/src/main/java/org/springframework/integration/adapter/config/spring-integration-adapters-1.0.xsd b/spring-integration-adapters/src/main/java/org/springframework/integration/adapter/config/spring-integration-adapters-1.0.xsd
index e61e00f5af..da8572d532 100644
--- a/spring-integration-adapters/src/main/java/org/springframework/integration/adapter/config/spring-integration-adapters-1.0.xsd
+++ b/spring-integration-adapters/src/main/java/org/springframework/integration/adapter/config/spring-integration-adapters-1.0.xsd
@@ -102,6 +102,7 @@
+
diff --git a/spring-integration-adapters/src/main/java/org/springframework/integration/adapter/mail/config/MailTargetAdapterParser.java b/spring-integration-adapters/src/main/java/org/springframework/integration/adapter/mail/config/MailTargetAdapterParser.java
index 1d743463e0..f0c337fe54 100644
--- a/spring-integration-adapters/src/main/java/org/springframework/integration/adapter/mail/config/MailTargetAdapterParser.java
+++ b/spring-integration-adapters/src/main/java/org/springframework/integration/adapter/mail/config/MailTargetAdapterParser.java
@@ -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);
diff --git a/spring-integration-adapters/src/test/java/org/springframework/integration/adapter/mail/config/MailTargetAdapterParserTests.java b/spring-integration-adapters/src/test/java/org/springframework/integration/adapter/mail/config/MailTargetAdapterParserTests.java
index dcb4367220..be36927d7b 100644
--- a/spring-integration-adapters/src/test/java/org/springframework/integration/adapter/mail/config/MailTargetAdapterParserTests.java
+++ b/spring-integration-adapters/src/test/java/org/springframework/integration/adapter/mail/config/MailTargetAdapterParserTests.java
@@ -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) {
+ }
+ }
+
}
diff --git a/spring-integration-adapters/src/test/java/org/springframework/integration/adapter/mail/config/mailTargetAdapterParserTests.xml b/spring-integration-adapters/src/test/java/org/springframework/integration/adapter/mail/config/mailTargetAdapterParserTests.xml
index 0699350033..53d1bd0200 100644
--- a/spring-integration-adapters/src/test/java/org/springframework/integration/adapter/mail/config/mailTargetAdapterParserTests.xml
+++ b/spring-integration-adapters/src/test/java/org/springframework/integration/adapter/mail/config/mailTargetAdapterParserTests.xml
@@ -24,4 +24,10 @@
+
+
+
+
\ No newline at end of file