MailTargetAdapter is now MailTarget. MailTargetParser (f.k.a. MailTargetAdapterParser) no longer creates the endpoint (just the target).

This commit is contained in:
Mark Fisher
2008-04-29 12:25:45 +00:00
parent 746031668b
commit 491bcf7cb1
8 changed files with 33 additions and 55 deletions

View File

@@ -7,6 +7,6 @@ httpinvoker-source=org.springframework.integration.adapter.httpinvoker.config.Ht
httpinvoker-target=org.springframework.integration.adapter.httpinvoker.config.HttpInvokerTargetAdapterParser
jms-source=org.springframework.integration.adapter.jms.config.JmsSourceAdapterParser
jms-target=org.springframework.integration.adapter.jms.config.JmsTargetAdapterParser
mail-target=org.springframework.integration.adapter.mail.config.MailTargetAdapterParser
mail-target=org.springframework.integration.adapter.mail.config.MailTargetParser
rmi-source=org.springframework.integration.adapter.rmi.config.RmiSourceAdapterParser
rmi-target=org.springframework.integration.adapter.rmi.config.RmiTargetAdapterParser

View File

@@ -164,7 +164,7 @@
<xsd:complexType>
<xsd:annotation>
<xsd:documentation>
Defines a mail-sending target channel adapter.
Defines a mail-sending target.
</xsd:documentation>
</xsd:annotation>
<xsd:attribute name="id" type="xsd:string"/>
@@ -173,7 +173,6 @@
<xsd:attribute name="host" type="xsd:string"/>
<xsd:attribute name="username" type="xsd:string"/>
<xsd:attribute name="password" type="xsd:string"/>
<xsd:attribute name="channel" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>

View File

@@ -18,16 +18,11 @@ package org.springframework.integration.adapter.mail.config;
import org.w3c.dom.Element;
import org.springframework.beans.factory.config.RuntimeBeanReference;
import org.springframework.beans.factory.parsing.BeanComponentDefinition;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
import org.springframework.beans.factory.xml.ParserContext;
import org.springframework.integration.ConfigurationException;
import org.springframework.integration.adapter.mail.MailTarget;
import org.springframework.integration.endpoint.TargetEndpoint;
import org.springframework.integration.scheduling.Subscription;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.util.StringUtils;
@@ -36,10 +31,10 @@ import org.springframework.util.StringUtils;
*
* @author Mark Fisher
*/
public class MailTargetAdapterParser extends AbstractSingleBeanDefinitionParser {
public class MailTargetParser extends AbstractSingleBeanDefinitionParser {
protected Class<?> getBeanClass(Element element) {
return TargetEndpoint.class;
return MailTarget.class;
}
protected boolean shouldGenerateId() {
@@ -51,7 +46,6 @@ public class MailTargetAdapterParser extends AbstractSingleBeanDefinitionParser
}
protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) {
RootBeanDefinition adapterDef = new RootBeanDefinition(MailTarget.class);
String mailSenderRef = element.getAttribute("mail-sender");
String host = element.getAttribute("host");
String username = element.getAttribute("username");
@@ -62,7 +56,7 @@ public class MailTargetAdapterParser extends AbstractSingleBeanDefinitionParser
throw new ConfigurationException("The 'host', 'username', and 'password' properties " +
"should not be provided when using a 'mail-sender' reference.");
}
adapterDef.getConstructorArgumentValues().addGenericArgumentValue(new RuntimeBeanReference(mailSenderRef));
builder.addConstructorArgReference(mailSenderRef);
}
else if (StringUtils.hasText(host)) {
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
@@ -73,21 +67,14 @@ public class MailTargetAdapterParser extends AbstractSingleBeanDefinitionParser
if (StringUtils.hasText(password)) {
mailSender.setPassword(password);
}
adapterDef.getConstructorArgumentValues().addGenericArgumentValue(mailSender);
builder.addConstructorArgValue(mailSender);
}
else {
throw new ConfigurationException("Either a 'mail-sender' reference or 'host' property is required.");
}
if (StringUtils.hasText(headerGeneratorRef)) {
adapterDef.getPropertyValues().addPropertyValue(
"headerGenerator", new RuntimeBeanReference(headerGeneratorRef));
builder.addPropertyReference("headerGenerator", headerGeneratorRef);
}
String adapterBeanName = parserContext.getReaderContext().generateBeanName(adapterDef);
parserContext.registerBeanComponent(new BeanComponentDefinition(adapterDef, adapterBeanName));
builder.addConstructorArgReference(adapterBeanName);
String channel = element.getAttribute("channel");
Subscription subscription = new Subscription(channel);
builder.addPropertyValue("subscription", subscription);
}
}

View File

@@ -42,8 +42,8 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
* @author Marius Bogoevici
*/
@RunWith(value = SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:/org/springframework/integration/adapter/mail/mailTargetAdapter.xml"})
public class MailTargetAdapterContextTests {
@ContextConfiguration(locations = {"classpath:/org/springframework/integration/adapter/mail/mailTarget.xml"})
public class MailTargetContextTests {
@Autowired
private MailTarget mailTarget;

View File

@@ -38,7 +38,7 @@ import org.springframework.mail.SimpleMailMessage;
/**
* @author Marius Bogoevici
*/
public class MailTargetAdapterTests {
public class MailTargetTests {
private MailTarget mailTarget;

View File

@@ -18,7 +18,6 @@ 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;
@@ -27,44 +26,40 @@ import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.integration.adapter.mail.MailHeaderGenerator;
import org.springframework.integration.adapter.mail.MailTarget;
import org.springframework.integration.endpoint.TargetEndpoint;
import org.springframework.integration.message.Message;
import org.springframework.integration.message.Target;
import org.springframework.mail.MailMessage;
import org.springframework.mail.MailSender;
/**
* @author Mark Fisher
*/
public class MailTargetAdapterParserTests {
public class MailTargetParserTests {
@Test
public void testAdapterWithMailSenderReference() {
public void testTargetWithMailSenderReference() {
ApplicationContext context = new ClassPathXmlApplicationContext(
"mailTargetAdapterParserTests.xml", this.getClass());
TargetEndpoint endpoint = (TargetEndpoint) context.getBean("adapterWithMailSenderReference");
Target target = endpoint.getTarget();
assertNotNull(target);
assertTrue(target instanceof MailTarget);
"mailTargetParserTests.xml", this.getClass());
MailTarget target = (MailTarget) context.getBean("targetWithMailSenderReference");
DirectFieldAccessor fieldAccessor = new DirectFieldAccessor(target);
MailSender mailSender = (MailSender) fieldAccessor.getPropertyValue("mailSender");
assertNotNull(mailSender);
}
@Test
public void testAdapterWithHostProperty() {
public void testTargetWithHostProperty() {
ApplicationContext context = new ClassPathXmlApplicationContext(
"mailTargetAdapterParserTests.xml", this.getClass());
TargetEndpoint endpoint = (TargetEndpoint) context.getBean("adapterWithHostProperty");
Target target = endpoint.getTarget();
assertNotNull(target);
assertTrue(target instanceof MailTarget);
"mailTargetParserTests.xml", this.getClass());
MailTarget target = (MailTarget) context.getBean("targetWithHostProperty");
DirectFieldAccessor fieldAccessor = new DirectFieldAccessor(target);
MailSender mailSender = (MailSender) fieldAccessor.getPropertyValue("mailSender");
assertNotNull(mailSender);
}
@Test
public void testAdapterWithHeaderGeneratorReference() {
public void testTargetWithHeaderGeneratorReference() {
ApplicationContext context = new ClassPathXmlApplicationContext(
"mailTargetAdapterParserTests.xml", this.getClass());
TargetEndpoint endpoint = (TargetEndpoint) context.getBean("adapterWithHeaderGeneratorReference");
Target target = endpoint.getTarget();
assertNotNull(target);
assertTrue(target instanceof MailTarget);
"mailTargetParserTests.xml", this.getClass());
MailTarget target = (MailTarget) context.getBean("targetWithHeaderGeneratorReference");
DirectFieldAccessor fieldAccessor = new DirectFieldAccessor(target);
MailHeaderGenerator headerGenerator =
(MailHeaderGenerator) fieldAccessor.getPropertyValue("mailHeaderGenerator");

View File

@@ -7,14 +7,10 @@
http://www.springframework.org/schema/integration
http://www.springframework.org/schema/integration/spring-integration-1.0.xsd">
<si:message-bus/>
<si:mail-target id="targetWithMailSenderReference" mail-sender="mailSender"/>
<si:channel id="testChannel"/>
<si:mail-target id="adapterWithMailSenderReference" mail-sender="mailSender" channel="testChannel"/>
<si:mail-target id="adapterWithHostProperty" host="somehost" username="someuser" password="somepassword"
channel="testChannel"/>
<si:mail-target id="targetWithHostProperty"
host="somehost" username="someuser" password="somepassword"/>
<bean id="mailSender" class="org.springframework.integration.adapter.mail.StubJavaMailSender">
<constructor-arg>
@@ -24,10 +20,11 @@
</constructor-arg>
</bean>
<si:mail-target id="adapterWithHeaderGeneratorReference" mail-sender="mailSender" channel="testChannel"
<si:mail-target id="targetWithHeaderGeneratorReference"
mail-sender="mailSender"
header-generator="testHeaderGenerator"/>
<bean id="testHeaderGenerator"
class="org.springframework.integration.adapter.mail.config.MailTargetAdapterParserTests$TestHeaderGenerator"/>
class="org.springframework.integration.adapter.mail.config.MailTargetParserTests$TestHeaderGenerator"/>
</beans>