restructured the code for reuse by subclasses

This commit is contained in:
Oleg Zhurakousky
2009-06-18 21:56:34 +00:00
parent d7bd3da8e6
commit 3faa104f64

View File

@@ -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");
}
}