From cb8075535f7386a6c5ab013d141d9d0f1832bef0 Mon Sep 17 00:00:00 2001 From: Mark Fisher Date: Thu, 18 Jun 2009 16:27:12 +0000 Subject: [PATCH] Added check for BeanFactory type else fallback to non-hierarchical registry check. --- .../config/xml/AbstractConsumerEndpointParser.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) 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 2c02b7bdc5..02dc0ebd10 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 @@ -78,7 +78,16 @@ public abstract class AbstractConsumerEndpointParser extends AbstractBeanDefinit String handlerBeanName = BeanDefinitionReaderUtils.registerWithGeneratedName(handlerBeanDefinition, parserContext.getRegistry()); builder.addPropertyReference("handler", handlerBeanName); String inputChannelName = element.getAttribute(inputChannelAttributeName); - if (!((BeanFactory) parserContext.getRegistry()).containsBean(inputChannelName)) { + boolean channelExists = false; + if (parserContext.getRegistry() instanceof BeanFactory) { + // BeanFactory also checks ancestor contexts in a hierarchy + channelExists = ((BeanFactory) parserContext.getRegistry()).containsBean(inputChannelName); + } + else { + channelExists = parserContext.getRegistry().containsBeanDefinition(inputChannelName); + } + if (!channelExists) { + // create a default DirectChannel instance BeanDefinitionBuilder channelDef = BeanDefinitionBuilder.genericBeanDefinition( IntegrationNamespaceUtils.BASE_PACKAGE + ".channel.DirectChannel"); BeanDefinitionHolder holder = new BeanDefinitionHolder(channelDef.getBeanDefinition(), inputChannelName);