From 3faa104f646c6054ce097d0677a22477239e7225 Mon Sep 17 00:00:00 2001 From: Oleg Zhurakousky Date: Thu, 18 Jun 2009 21:56:34 +0000 Subject: [PATCH] restructured the code for reuse by subclasses --- .../integration/config/xml/RouterParser.java | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/RouterParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/RouterParser.java index b9c7717d09..c9cb37f80e 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/RouterParser.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/RouterParser.java @@ -27,6 +27,7 @@ import org.springframework.util.StringUtils; * Parser for the <router/> element. * * @author Mark Fisher + * @author Oleg Zhurakousky */ public class RouterParser extends AbstractConsumerEndpointParser { @@ -36,9 +37,18 @@ public class RouterParser extends AbstractConsumerEndpointParser { if (!StringUtils.hasText(ref)) { parserContext.getReaderContext().error("The '" + REF_ATTRIBUTE + "' attribute is required.", element); } - BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition( - IntegrationNamespaceUtils.BASE_PACKAGE + ".config.RouterFactoryBean"); + BeanDefinitionBuilder builder = this.createBuilder(); builder.addPropertyReference("targetObject", ref); + return doParse(element, parserContext, builder); + } + /** + * + * @param element + * @param parserContext + * @return + */ + protected BeanDefinitionBuilder doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) { + if (StringUtils.hasText(element.getAttribute(METHOD_ATTRIBUTE))) { String method = element.getAttribute(METHOD_ATTRIBUTE); builder.addPropertyValue("targetMethodName", method); @@ -53,5 +63,12 @@ public class RouterParser extends AbstractConsumerEndpointParser { IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "ignore-channel-name-resolution-failures"); return builder; } + /** + * + * @return + */ + BeanDefinitionBuilder createBuilder(){ + return BeanDefinitionBuilder.genericBeanDefinition(IntegrationNamespaceUtils.BASE_PACKAGE + ".config.RouterFactoryBean"); + } }