From 1af6e18437ce96c1fce0472d7abc750c519558cc Mon Sep 17 00:00:00 2001 From: Mark Fisher Date: Wed, 10 Dec 2008 17:44:25 +0000 Subject: [PATCH] Enforcing the input channel attribute is provided for any top-level endpoint element. Also, now uses parserContext.error(). --- .../config/xml/AbstractConsumerEndpointParser.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/AbstractConsumerEndpointParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/AbstractConsumerEndpointParser.java index 48b9838d9f..a99be5cf87 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/AbstractConsumerEndpointParser.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/AbstractConsumerEndpointParser.java @@ -26,7 +26,6 @@ import org.springframework.beans.factory.xml.AbstractBeanDefinitionParser; import org.springframework.beans.factory.xml.ParserContext; import org.springframework.integration.channel.DirectChannel; import org.springframework.integration.config.ConsumerEndpointFactoryBean; -import org.springframework.util.Assert; import org.springframework.util.xml.DomUtils; /** @@ -65,15 +64,18 @@ public abstract class AbstractConsumerEndpointParser extends AbstractBeanDefinit BeanDefinitionBuilder handlerBuilder = this.parseHandler(element, parserContext); IntegrationNamespaceUtils.setReferenceIfAttributeDefined(handlerBuilder, element, "output-channel"); AbstractBeanDefinition handlerBeanDefinition = handlerBuilder.getBeanDefinition(); - if (!element.hasAttribute(this.getInputChannelAttributeName())) { + String inputChannelAttributeName = this.getInputChannelAttributeName(); + if (!element.hasAttribute(inputChannelAttributeName)) { + if (!parserContext.isNested()) { + parserContext.getReaderContext().error("The '" + inputChannelAttributeName + + "' attribute is required for top-level endpoint elements.", element); + } return handlerBeanDefinition; } BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(ConsumerEndpointFactoryBean.class); String handlerBeanName = BeanDefinitionReaderUtils.registerWithGeneratedName(handlerBeanDefinition, parserContext.getRegistry()); builder.addConstructorArgReference(handlerBeanName); - String inputChannelAttributeName = this.getInputChannelAttributeName(); String inputChannelName = element.getAttribute(inputChannelAttributeName); - Assert.hasText(inputChannelName, "the '" + inputChannelAttributeName + "' attribute is required"); if (!parserContext.getRegistry().containsBeanDefinition(inputChannelName)) { BeanDefinitionBuilder channelDef = BeanDefinitionBuilder.genericBeanDefinition(DirectChannel.class); BeanDefinitionHolder holder = new BeanDefinitionHolder(channelDef.getBeanDefinition(), inputChannelName);