diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/AbstractChannelAdapterParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/AbstractChannelAdapterParser.java index 107cdddcac..972a7f5ae6 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/config/AbstractChannelAdapterParser.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/AbstractChannelAdapterParser.java @@ -25,8 +25,8 @@ import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.beans.factory.support.BeanDefinitionReaderUtils; import org.springframework.beans.factory.xml.AbstractBeanDefinitionParser; import org.springframework.beans.factory.xml.ParserContext; -import org.springframework.integration.ConfigurationException; import org.springframework.integration.channel.DirectChannel; +import org.springframework.util.Assert; import org.springframework.util.StringUtils; /** @@ -60,10 +60,8 @@ public abstract class AbstractChannelAdapterParser extends AbstractBeanDefinitio private String createDirectChannel(Element element, ParserContext parserContext) { String channelId = element.getAttribute("id"); - if (!StringUtils.hasText(channelId)) { - throw new ConfigurationException("The channel-adapter's 'id' attribute is required when no 'channel' " + Assert.hasText(channelId, "The channel-adapter's 'id' attribute is required when no 'channel' " + "reference has been provided, because that 'id' would be used for the created channel."); - } BeanDefinitionBuilder channelBuilder = BeanDefinitionBuilder.genericBeanDefinition(DirectChannel.class); BeanDefinitionHolder holder = new BeanDefinitionHolder(channelBuilder.getBeanDefinition(), channelId); BeanDefinitionReaderUtils.registerBeanDefinition(holder, parserContext.getRegistry()); diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/AbstractEndpointParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/AbstractEndpointParser.java index 1199eee125..f689c4c66f 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/config/AbstractEndpointParser.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/AbstractEndpointParser.java @@ -25,7 +25,6 @@ import org.springframework.beans.factory.support.BeanDefinitionReaderUtils; import org.springframework.beans.factory.support.ManagedList; import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser; import org.springframework.beans.factory.xml.ParserContext; -import org.springframework.integration.ConfigurationException; import org.springframework.integration.endpoint.MessageEndpoint; import org.springframework.util.Assert; import org.springframework.util.StringUtils; @@ -85,9 +84,7 @@ public abstract class AbstractEndpointParser extends AbstractSingleBeanDefinitio protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) { if (this.shouldCreateAdapter(element)) { String ref = element.getAttribute(REF_ATTRIBUTE); - if (!StringUtils.hasText(ref)) { - throw new ConfigurationException("The '" + REF_ATTRIBUTE + "' attribute is required."); - } + Assert.hasText(ref, "The '" + REF_ATTRIBUTE + "' attribute is required."); if (StringUtils.hasText(element.getAttribute(METHOD_ATTRIBUTE))) { String method = element.getAttribute(METHOD_ATTRIBUTE); String adapterBeanName = this.parseAdapter(ref, method, element, parserContext); @@ -98,9 +95,7 @@ public abstract class AbstractEndpointParser extends AbstractSingleBeanDefinitio } } String inputChannel = element.getAttribute(INPUT_CHANNEL_ATTRIBUTE); - if (!StringUtils.hasText(inputChannel)) { - throw new ConfigurationException("the '" + INPUT_CHANNEL_ATTRIBUTE + "' attribute is required"); - } + Assert.hasText(inputChannel, "the '" + INPUT_CHANNEL_ATTRIBUTE + "' attribute is required"); Element pollerElement = DomUtils.getChildElementByTagName(element, POLLER_ELEMENT); if (pollerElement != null) { IntegrationNamespaceUtils.configureTrigger(pollerElement, builder); diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/AbstractOutboundChannelAdapterParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/AbstractOutboundChannelAdapterParser.java index 6973d08b57..fa37eb762f 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/config/AbstractOutboundChannelAdapterParser.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/AbstractOutboundChannelAdapterParser.java @@ -22,10 +22,8 @@ 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.endpoint.OutboundChannelAdapter; import org.springframework.util.Assert; -import org.springframework.util.StringUtils; import org.springframework.util.xml.DomUtils; /** @@ -43,9 +41,7 @@ public abstract class AbstractOutboundChannelAdapterParser extends AbstractChann String consumerBeanName = this.parseAndRegisterConsumer(element, parserContext); adapterBuilder.addConstructorArgReference(consumerBeanName); if (pollerElement != null) { - if (!StringUtils.hasText(channelName)) { - throw new ConfigurationException("outbound channel adapter with a 'poller' requires a 'channel' to poll"); - } + Assert.hasText(channelName, "outbound channel adapter with a 'poller' requires a 'channel' to poll"); IntegrationNamespaceUtils.configureTrigger(pollerElement, adapterBuilder); Element txElement = DomUtils.getChildElementByTagName(pollerElement, "transactional"); if (txElement != null) { diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/AbstractPollingInboundChannelAdapterParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/AbstractPollingInboundChannelAdapterParser.java index d23411e4aa..8f02113f75 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/config/AbstractPollingInboundChannelAdapterParser.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/AbstractPollingInboundChannelAdapterParser.java @@ -21,10 +21,9 @@ import org.w3c.dom.Element; import org.springframework.beans.factory.support.AbstractBeanDefinition; import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.beans.factory.xml.ParserContext; -import org.springframework.integration.ConfigurationException; import org.springframework.integration.endpoint.SourcePollingChannelAdapter; import org.springframework.integration.scheduling.IntervalTrigger; -import org.springframework.util.StringUtils; +import org.springframework.util.Assert; import org.springframework.util.xml.DomUtils; /** @@ -37,9 +36,7 @@ public abstract class AbstractPollingInboundChannelAdapterParser extends Abstrac @Override protected AbstractBeanDefinition doParse(Element element, ParserContext parserContext, String channelName) { String source = this.parseSource(element, parserContext); - if (!StringUtils.hasText(source)) { - throw new ConfigurationException("failed to parse source"); - } + Assert.hasText(source, "failed to parse source"); Element pollerElement = DomUtils.getChildElementByTagName(element, "poller"); BeanDefinitionBuilder adapterBuilder = BeanDefinitionBuilder.genericBeanDefinition(SourcePollingChannelAdapter.class); adapterBuilder.addPropertyReference("source", source); diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/IntegrationNamespaceUtils.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/IntegrationNamespaceUtils.java index ffe8f63664..e939bb19f7 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/config/IntegrationNamespaceUtils.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/IntegrationNamespaceUtils.java @@ -24,11 +24,11 @@ import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.beans.factory.xml.BeanDefinitionParserDelegate; import org.springframework.beans.factory.xml.ParserContext; import org.springframework.core.Conventions; -import org.springframework.integration.ConfigurationException; import org.springframework.integration.scheduling.CronTrigger; import org.springframework.integration.scheduling.IntervalTrigger; import org.springframework.integration.scheduling.Trigger; import org.springframework.transaction.support.DefaultTransactionDefinition; +import org.springframework.util.Assert; import org.springframework.util.StringUtils; /** @@ -143,10 +143,8 @@ public abstract class IntegrationNamespaceUtils { Trigger trigger = null; String interval = pollerElement.getAttribute("interval"); String cron = pollerElement.getAttribute("cron"); - if (!(StringUtils.hasText(interval) ^ StringUtils.hasText(cron))) { - throw new ConfigurationException( - "A element must include either an 'interval' or a 'cron' expression (but not both)."); - } + Assert.isTrue(StringUtils.hasText(interval) ^ StringUtils.hasText(cron), + "A element must include either an 'interval' or a 'cron' expression (but not both)."); if (StringUtils.hasText(interval)) { Long period = Long.valueOf(interval); IntervalTrigger intervalTrigger = new IntervalTrigger(period); diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/MessageBusParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/MessageBusParser.java index 4683d7560e..093ff30e4a 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/config/MessageBusParser.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/MessageBusParser.java @@ -28,10 +28,10 @@ import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.beans.factory.support.ManagedList; import org.springframework.beans.factory.xml.AbstractSimpleBeanDefinitionParser; import org.springframework.beans.factory.xml.ParserContext; -import org.springframework.integration.ConfigurationException; import org.springframework.integration.bus.DefaultMessageBus; import org.springframework.integration.bus.MessageBus; import org.springframework.integration.bus.MessageBusAwareBeanPostProcessor; +import org.springframework.util.Assert; /** * Parser for the <message-bus> element of the integration namespace. @@ -59,10 +59,8 @@ public class MessageBusParser extends AbstractSimpleBeanDefinitionParser { @Override protected String resolveId(Element element, AbstractBeanDefinition definition, ParserContext parserContext) throws BeanDefinitionStoreException { - if (parserContext.getRegistry().containsBeanDefinition(MESSAGE_BUS_BEAN_NAME)) { - throw new ConfigurationException("Only one instance of '" + MessageBus.class.getSimpleName() - + "' is allowed per ApplicationContext."); - } + Assert.state(!parserContext.getRegistry().containsBeanDefinition(MESSAGE_BUS_BEAN_NAME), + "Only one instance of '" + MessageBus.class.getSimpleName() + "' is allowed per ApplicationContext."); return MESSAGE_BUS_BEAN_NAME; } diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/WireTapParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/WireTapParser.java index a13931396f..524ebb913d 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/config/WireTapParser.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/WireTapParser.java @@ -21,8 +21,8 @@ import org.w3c.dom.Element; 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.channel.interceptor.WireTap; +import org.springframework.util.Assert; import org.springframework.util.StringUtils; /** @@ -35,9 +35,7 @@ public class WireTapParser implements BeanDefinitionRegisteringParser { public String parse(Element element, ParserContext parserContext) { BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(WireTap.class); String targetRef = element.getAttribute("channel"); - if (!StringUtils.hasText(targetRef)) { - throw new ConfigurationException("the 'channel' attribute is required"); - } + Assert.hasText(targetRef, "the 'channel' attribute is required"); builder.addConstructorArgReference(targetRef); String selectorRef = element.getAttribute("selector"); if (StringUtils.hasText(selectorRef)) { diff --git a/org.springframework.integration/src/test/java/org/springframework/integration/config/MessageBusParserTests.java b/org.springframework.integration/src/test/java/org/springframework/integration/config/MessageBusParserTests.java index bd1e642bde..aca15e2b8c 100644 --- a/org.springframework.integration/src/test/java/org/springframework/integration/config/MessageBusParserTests.java +++ b/org.springframework.integration/src/test/java/org/springframework/integration/config/MessageBusParserTests.java @@ -72,7 +72,7 @@ public class MessageBusParserTests { } catch (BeanDefinitionStoreException e) { exceptionThrown = true; - assertEquals(ConfigurationException.class, e.getCause().getClass()); + assertEquals(IllegalStateException.class, e.getCause().getClass()); } assertTrue(exceptionThrown); }