Passing containing BeanDefinition when parsing an inner-bean.

This commit is contained in:
Mark Fisher
2009-01-29 13:31:34 +00:00
parent 0a652749c3
commit b735f84d3c
2 changed files with 18 additions and 15 deletions

View File

@@ -27,7 +27,6 @@ import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.BeanDefinitionReaderUtils;
import org.springframework.beans.factory.support.ManagedList;
import org.springframework.beans.factory.xml.ParserContext;
import org.springframework.integration.handler.AbstractReplyProducingMessageHandler;
/**
* Parser for the <chain> element.
@@ -56,20 +55,25 @@ public class ChainParser extends AbstractConsumerEndpointParser {
}
private String parseChild(Element element, ParserContext parserContext, BeanDefinition parentDefinition) {
BeanDefinition beanDefinition;
BeanDefinitionHolder holder = null;
if (element.getLocalName().equals("bean")) {
beanDefinition = parserContext.getDelegate().parseBeanDefinitionElement(element).getBeanDefinition();
holder = parserContext.getDelegate().parseBeanDefinitionElement(element, parentDefinition);
}
else {
beanDefinition = parserContext.getDelegate().parseCustomElement(element, parentDefinition);
BeanDefinition beanDefinition = parserContext.getDelegate().parseCustomElement(element, parentDefinition);
if (beanDefinition == null) {
parserContext.getReaderContext().error("child BeanDefinition must not be null", element);
}
else {
String beanName = BeanDefinitionReaderUtils.generateBeanName(beanDefinition, parserContext.getRegistry());
holder = new BeanDefinitionHolder(beanDefinition, beanName);
}
}
if (beanDefinition == null) {
parserContext.getReaderContext().error("child BeanDefinition must not be null", element);
if (holder == null) {
return null;
}
String beanName = BeanDefinitionReaderUtils.generateBeanName(beanDefinition, parserContext.getRegistry());
BeanDefinitionHolder holder = new BeanDefinitionHolder(beanDefinition, beanName);
BeanDefinitionReaderUtils.registerBeanDefinition(holder, parserContext.getRegistry());
return beanName;
return holder.getBeanName();
}
}