From bdb4a866c8caed36ff8938051c3f10ae9bf45113 Mon Sep 17 00:00:00 2001 From: Mark Fisher Date: Fri, 10 Oct 2008 01:52:35 +0000 Subject: [PATCH] Removed ConfigurationException. --- .../xml/config/XPathRouterParser.java | 13 +++---- .../xml/config/XPathSelectorParser.java | 35 +++++++------------ .../integration/ConfigurationException.java | 35 ------------------- .../integration/bus/DefaultMessageBus.java | 7 ++-- .../bus/DefaultMessageBusTests.java | 2 ++ .../config/MessageBusParserTests.java | 3 +- 6 files changed, 23 insertions(+), 72 deletions(-) delete mode 100644 org.springframework.integration/src/main/java/org/springframework/integration/ConfigurationException.java diff --git a/org.springframework.integration.xml/src/main/java/org/springframework/integration/xml/config/XPathRouterParser.java b/org.springframework.integration.xml/src/main/java/org/springframework/integration/xml/config/XPathRouterParser.java index 59c136131d..b06c8cf015 100644 --- a/org.springframework.integration.xml/src/main/java/org/springframework/integration/xml/config/XPathRouterParser.java +++ b/org.springframework.integration.xml/src/main/java/org/springframework/integration/xml/config/XPathRouterParser.java @@ -16,17 +16,17 @@ package org.springframework.integration.xml.config; +import org.w3c.dom.Element; +import org.w3c.dom.NodeList; + import org.springframework.beans.factory.config.BeanDefinition; 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.xml.router.XPathMultiChannelNameResolver; import org.springframework.integration.xml.router.XPathSingleChannelNameResolver; import org.springframework.util.Assert; import org.springframework.util.StringUtils; -import org.w3c.dom.Element; -import org.w3c.dom.NodeList; /** * @author Jonas Partner @@ -56,11 +56,8 @@ public class XPathRouterParser extends AbstractSingleBeanDefinitionParser { boolean xPathExpressionChildPresent = xPathExpressionNodes.getLength() == 1; boolean xPathReferencePresent = StringUtils.hasText(xPathExpressionRef); - if ((xPathExpressionChildPresent && xPathReferencePresent) - || (!xPathExpressionChildPresent && !xPathReferencePresent)) { - throw new ConfigurationException("Exactly one of 'xpath-expression' or 'xpath-expression-ref' is required."); - } - + Assert.isTrue(xPathExpressionChildPresent ^ xPathReferencePresent, + "Exactly one of 'xpath-expression' or 'xpath-expression-ref' is required."); if (multiChannel) { builder.getBeanDefinition().setBeanClass(XPathMultiChannelNameResolver.class); } diff --git a/org.springframework.integration.xml/src/main/java/org/springframework/integration/xml/config/XPathSelectorParser.java b/org.springframework.integration.xml/src/main/java/org/springframework/integration/xml/config/XPathSelectorParser.java index 892eee5297..86fe3e2c38 100644 --- a/org.springframework.integration.xml/src/main/java/org/springframework/integration/xml/config/XPathSelectorParser.java +++ b/org.springframework.integration.xml/src/main/java/org/springframework/integration/xml/config/XPathSelectorParser.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2007 the original author or authors. + * Copyright 2002-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,29 +13,29 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.springframework.integration.xml.config; +import org.w3c.dom.Element; +import org.w3c.dom.NodeList; + import org.springframework.beans.factory.config.BeanDefinition; 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.xml.selector.BooleanTestXPathMessageSelector; import org.springframework.integration.xml.selector.StringValueTestXPathMessageSelector; import org.springframework.util.Assert; import org.springframework.util.StringUtils; -import org.w3c.dom.Element; -import org.w3c.dom.NodeList; /** - * * @author Jonas Partner - * */ public class XPathSelectorParser extends AbstractSingleBeanDefinitionParser { private XPathExpressionParser xpathParser = new XPathExpressionParser(); + @Override protected boolean shouldGenerateId() { return false; @@ -48,39 +48,30 @@ public class XPathSelectorParser extends AbstractSingleBeanDefinitionParser { @Override protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) { - String evaluationType = element.getAttribute("evaluation-result-type"); String xPathExpressionRef = element.getAttribute("xpath-expression-ref"); String stringTestValue = element.getAttribute("string-test-value"); - NodeList xPathExpressionNodes = element.getElementsByTagNameNS(element.getNamespaceURI(), "xpath-expression"); Assert.isTrue(xPathExpressionNodes.getLength() < 2, "Only one xpath-expression child can be specified"); boolean xPathExpressionChildPresent = xPathExpressionNodes.getLength() == 1; boolean xPathReferencePresent = StringUtils.hasText(xPathExpressionRef); - - if ((xPathExpressionChildPresent && xPathReferencePresent) - || (!xPathExpressionChildPresent && !xPathReferencePresent)) { - throw new ConfigurationException("Exactly one of 'xpath-expression' or 'xpath-expression-ref' is required."); - } - + Assert.isTrue(xPathExpressionChildPresent ^ xPathReferencePresent, + "Exactly one of 'xpath-expression' or 'xpath-expression-ref' is required."); if (evaluationType.equals("boolean")) { builder.getBeanDefinition().setBeanClass(BooleanTestXPathMessageSelector.class); Assert.state(!StringUtils.hasText(stringTestValue), - "string-test-value should not be specified when evaluation-result-type is boolean"); + "'string-test-value' should not be specified when 'evaluation-result-type' is boolean"); } else if (evaluationType.equals("string")) { - Assert - .hasText(stringTestValue, - "string-test-value must be specified when evaluation-result-type is string"); + Assert.hasText(stringTestValue, + "'string-test-value' must be specified when 'evaluation-result-type' is string"); builder.addConstructorArgValue(stringTestValue); builder.getBeanDefinition().setBeanClass(StringValueTestXPathMessageSelector.class); - } else { - throw new ConfigurationException("Unrecognised value: " + evaluationType - + " for evaluation-result-type only boolean or string supported"); + throw new IllegalArgumentException("Unsupported value [" + evaluationType + + "] for 'evaluation-result-type', expected boolean or string."); } - if (xPathExpressionChildPresent) { BeanDefinition beanDefinition = xpathParser.parse((Element) xPathExpressionNodes.item(0), parserContext); builder.addConstructorArgValue(beanDefinition); diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/ConfigurationException.java b/org.springframework.integration/src/main/java/org/springframework/integration/ConfigurationException.java deleted file mode 100644 index e22aa52f67..0000000000 --- a/org.springframework.integration/src/main/java/org/springframework/integration/ConfigurationException.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2002-2008 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.integration; - -/** - * Exception that indicates an incorrectly configured integration component. - * - * @author Mark Fisher - */ -@SuppressWarnings("serial") -public class ConfigurationException extends RuntimeException { - - public ConfigurationException(String description) { - super(description); - } - - public ConfigurationException(String description, Throwable cause) { - super(description, cause); - } - -} diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/bus/DefaultMessageBus.java b/org.springframework.integration/src/main/java/org/springframework/integration/bus/DefaultMessageBus.java index ffc2f2d20a..81c69521d0 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/bus/DefaultMessageBus.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/bus/DefaultMessageBus.java @@ -36,7 +36,6 @@ import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationListener; import org.springframework.context.Lifecycle; import org.springframework.context.event.ContextRefreshedEvent; -import org.springframework.integration.ConfigurationException; import org.springframework.integration.channel.ChannelRegistryAware; import org.springframework.integration.channel.MessageChannel; import org.springframework.integration.channel.MessagePublishingErrorHandler; @@ -81,10 +80,8 @@ public class DefaultMessageBus implements MessageBus, ApplicationContextAware, A public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { Assert.notNull(applicationContext, "'applicationContext' must not be null"); - if (applicationContext.getBeanNamesForType(this.getClass()).length > 1) { - throw new ConfigurationException("Only one instance of '" + this.getClass().getSimpleName() - + "' is allowed per ApplicationContext."); - } + Assert.state(!(applicationContext.getBeanNamesForType(this.getClass()).length > 1), + "Only one instance of '" + this.getClass().getSimpleName() + "' is allowed per ApplicationContext."); this.applicationContext = applicationContext; } diff --git a/org.springframework.integration/src/test/java/org/springframework/integration/bus/DefaultMessageBusTests.java b/org.springframework.integration/src/test/java/org/springframework/integration/bus/DefaultMessageBusTests.java index a1a4a66023..dc1a8ea480 100644 --- a/org.springframework.integration/src/test/java/org/springframework/integration/bus/DefaultMessageBusTests.java +++ b/org.springframework.integration/src/test/java/org/springframework/integration/bus/DefaultMessageBusTests.java @@ -35,6 +35,7 @@ import org.springframework.integration.channel.MessageChannel; import org.springframework.integration.channel.PollableChannel; import org.springframework.integration.channel.PublishSubscribeChannel; import org.springframework.integration.channel.QueueChannel; +import org.springframework.integration.config.MessageBusParser; import org.springframework.integration.endpoint.AbstractReplyProducingMessageConsumer; import org.springframework.integration.endpoint.PollingConsumerEndpoint; import org.springframework.integration.endpoint.SourcePollingChannelAdapter; @@ -76,6 +77,7 @@ public class DefaultMessageBusTests { context.refresh(); DefaultMessageBus bus = new DefaultMessageBus(); bus.setTaskScheduler(TestUtils.createTaskScheduler(10)); + context.getBeanFactory().registerSingleton(MessageBusParser.MESSAGE_BUS_BEAN_NAME, bus); bus.setApplicationContext(context); consumer.setChannelRegistry(bus); bus.start(); 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 53c1045512..b02cc8339d 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 @@ -30,7 +30,6 @@ import org.springframework.context.event.SimpleApplicationEventMulticaster; import org.springframework.context.support.AbstractApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.core.task.SyncTaskExecutor; -import org.springframework.integration.ConfigurationException; import org.springframework.integration.bus.DefaultMessageBus; import org.springframework.integration.bus.MessageBus; import org.springframework.integration.bus.MessageBusInterceptorTests; @@ -89,7 +88,7 @@ public class MessageBusParserTests { // tries to get a reference to the message bus assertEquals(BeanCreationException.class, e.getCause().getClass()); assertEquals(e.getBeanName(), MessageBusParser.MESSAGE_BUS_AWARE_POST_PROCESSOR_BEAN_NAME); - assertEquals(ConfigurationException.class, (e.getCause()).getCause().getClass()); + assertEquals(IllegalStateException.class, (e.getCause()).getCause().getClass()); assertEquals(((BeanCreationException) e.getCause()).getBeanName(), MessageBusParser.MESSAGE_BUS_BEAN_NAME); } assertTrue(exceptionThrown);