Removing dependencies on ConfigurationException.

This commit is contained in:
Mark Fisher
2008-10-10 00:57:05 +00:00
parent 01c9efef66
commit b68f7ca17a
9 changed files with 35 additions and 56 deletions

View File

@@ -30,7 +30,6 @@ import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.context.Lifecycle;
import org.springframework.integration.ConfigurationException;
import org.springframework.integration.mail.monitor.AsyncMonitoringStrategy;
import org.springframework.integration.mail.monitor.MailTransportUtils;
import org.springframework.integration.mail.monitor.MonitoringStrategy;
@@ -71,10 +70,8 @@ public class DefaultFolderConnection implements Lifecycle, DisposableBean, Folde
this.storeUri = new URLName(storeUri);
this.monitoringStrategy = monitoringStrategy;
this.polling = polling;
if (!polling && monitoringStrategy.getClass().isAssignableFrom(AsyncMonitoringStrategy.class)) {
throw new ConfigurationException(
"Folder connection requires an AsyncMonitoringStrategy if polling is disabled.");
}
Assert.isTrue(polling || AsyncMonitoringStrategy.class.isAssignableFrom(monitoringStrategy.getClass()),
"Folder connection requires an AsyncMonitoringStrategy if polling is disabled.");
}

View File

@@ -22,11 +22,11 @@ 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.Assert;
import org.springframework.util.StringUtils;
/**
@@ -49,13 +49,13 @@ public class MailOutboundChannelAdapterParser extends AbstractOutboundChannelAda
String username = element.getAttribute("username");
String password = element.getAttribute("password");
if (StringUtils.hasText(mailSenderRef)) {
if (StringUtils.hasText(host) || StringUtils.hasText(username) || StringUtils.hasText(password)) {
throw new ConfigurationException("The 'host', 'username', and 'password' properties " +
"should not be provided when using a 'mail-sender' reference.");
}
Assert.isTrue(!StringUtils.hasText(host) && !StringUtils.hasText(username) && !StringUtils.hasText(password),
"The 'host', 'username', and 'password' properties " +
"should not be provided when using a 'mail-sender' reference.");
builder.addConstructorArgReference(mailSenderRef);
}
else if (StringUtils.hasText(host)) {
else {
Assert.hasText(host, "Either a 'mail-sender' reference or 'host' property is required.");
BeanDefinitionBuilder mailSenderBuilder =
BeanDefinitionBuilder.genericBeanDefinition(JavaMailSenderImpl.class);
mailSenderBuilder.addPropertyValue("host", host);
@@ -74,9 +74,6 @@ public class MailOutboundChannelAdapterParser extends AbstractOutboundChannelAda
mailSenderBuilder.getBeanDefinition(), parserContext.getRegistry());
builder.addConstructorArgReference(mailSenderBeanName);
}
else {
throw new ConfigurationException("Either a 'mail-sender' reference or 'host' property is required.");
}
return builder.getBeanDefinition();
}

View File

@@ -21,12 +21,12 @@ import org.w3c.dom.Element;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
import org.springframework.beans.factory.xml.ParserContext;
import org.springframework.integration.ConfigurationException;
import org.springframework.integration.mail.DefaultFolderConnection;
import org.springframework.integration.mail.PollingMailSource;
import org.springframework.integration.mail.monitor.MonitoringStrategy;
import org.springframework.integration.mail.monitor.PollingMonitoringStrategy;
import org.springframework.integration.mail.monitor.Pop3PollingMonitoringStrategy;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
/**
@@ -46,28 +46,24 @@ public class PollingMailSourceParser extends AbstractSingleBeanDefinitionParser
return true;
}
protected void doParse(Element element, ParserContext parserContext,
BeanDefinitionBuilder builder) {
protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) {
String mailConvertorRef = element.getAttribute("convertor");
String uri = element.getAttribute("store-uri");
String propertiesRef = element.getAttribute("javaMailProperties");
if (!StringUtils.hasLength(uri)) {
throw new ConfigurationException("A store-uri is required");
}
Assert.hasText(uri, "the 'store-uri' attribute is required");
BeanDefinitionBuilder folderConnectionBuilder = BeanDefinitionBuilder
.genericBeanDefinition(DefaultFolderConnection.class);
String storeType = uri.substring(0, 4).toLowerCase();
MonitoringStrategy monitoringStrategy = null;
if (storeType.equals("pop3")) {
if (uri.toLowerCase().startsWith("pop3")) {
monitoringStrategy = new Pop3PollingMonitoringStrategy();
} else if (storeType.equals("imap")) {
monitoringStrategy = new PollingMonitoringStrategy();
} else {
throw new ConfigurationException(
"No monitoring strategy for store-uri " + uri);
}
else if (uri.toLowerCase().startsWith("imap")) {
monitoringStrategy = new PollingMonitoringStrategy();
}
else {
throw new IllegalArgumentException(
"unable to determine monitoring strategy for store-uri [" + uri + "]");
}
folderConnectionBuilder.addConstructorArgValue(uri);
folderConnectionBuilder.addConstructorArgValue(monitoringStrategy);
// set polling true
@@ -78,16 +74,12 @@ public class PollingMailSourceParser extends AbstractSingleBeanDefinitionParser
propertiesRef);
}
String folderConnectionName = parserContext.getReaderContext()
.registerWithGeneratedName(
folderConnectionBuilder.getBeanDefinition());
.registerWithGeneratedName(folderConnectionBuilder.getBeanDefinition());
builder.addDependsOn(folderConnectionName);
builder.addConstructorArgValue(folderConnectionBuilder
.getBeanDefinition());
builder.addConstructorArgValue(folderConnectionBuilder.getBeanDefinition());
if (StringUtils.hasText(mailConvertorRef)) {
builder.addPropertyReference("convertor", mailConvertorRef);
}
}
}
}