From 50e1fddaf56bc5729a955e212b5566e1cfbb1310 Mon Sep 17 00:00:00 2001 From: Oleg Zhurakousky Date: Tue, 20 Dec 2011 12:09:58 -0500 Subject: [PATCH] INT-2321 Handlers within a chain are no longer registered as beans in the context. --- .../integration/config/xml/ChainParser.java | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/spring-integration-core/src/main/java/org/springframework/integration/config/xml/ChainParser.java b/spring-integration-core/src/main/java/org/springframework/integration/config/xml/ChainParser.java index c639d32e91..b9aeb5e211 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/config/xml/ChainParser.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/config/xml/ChainParser.java @@ -22,7 +22,6 @@ import org.w3c.dom.NodeList; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.config.BeanDefinitionHolder; -import org.springframework.beans.factory.config.RuntimeBeanReference; import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.beans.factory.support.BeanDefinitionReaderUtils; import org.springframework.beans.factory.support.ManagedList; @@ -47,15 +46,15 @@ public class ChainParser extends AbstractConsumerEndpointParser { for (int i = 0; i < children.getLength(); i++) { Node child = children.item(i); if (child.getNodeType() == Node.ELEMENT_NODE && !"poller".equals(child.getLocalName())) { - String childBeanName = this.parseChild((Element) child, parserContext, builder.getBeanDefinition()); + BeanDefinitionHolder holder = this.parseChild((Element) child, parserContext, builder.getBeanDefinition()); if ("gateway".equals(child.getLocalName())){ BeanDefinitionBuilder gwBuilder = BeanDefinitionBuilder.genericBeanDefinition( IntegrationNamespaceUtils.BASE_PACKAGE + ".gateway.RequestReplyMessageHandlerAdapter"); - gwBuilder.addConstructorArgValue(new RuntimeBeanReference(childBeanName)); + gwBuilder.addConstructorArgValue(holder); handlerList.add(gwBuilder.getBeanDefinition()); } else { - handlerList.add(new RuntimeBeanReference(childBeanName)); + handlerList.add(holder); } } } @@ -64,7 +63,7 @@ public class ChainParser extends AbstractConsumerEndpointParser { return builder; } - private String parseChild(Element element, ParserContext parserContext, BeanDefinition parentDefinition) { + private BeanDefinitionHolder parseChild(Element element, ParserContext parserContext, BeanDefinition parentDefinition) { BeanDefinitionHolder holder = null; if (element.getLocalName().equals("bean")) { holder = parserContext.getDelegate().parseBeanDefinitionElement(element, parentDefinition); @@ -79,12 +78,7 @@ public class ChainParser extends AbstractConsumerEndpointParser { holder = new BeanDefinitionHolder(beanDefinition, beanName); } } - if (holder == null) { - return null; - } - holder.getBeanDefinition().setScope(BeanDefinition.SCOPE_PROTOTYPE); - BeanDefinitionReaderUtils.registerBeanDefinition(holder, parserContext.getRegistry()); - return holder.getBeanName(); + return holder; } }