From 22db707b5dc6b40b4f6b3f9e75fbb519c3a16119 Mon Sep 17 00:00:00 2001 From: Mark Fisher Date: Thu, 11 Nov 2010 18:08:45 -0500 Subject: [PATCH] INT-1604 polishing --- .../config/TwitterNamespaceHandler.java | 3 +- .../TwitterReceivingMessageSourceParser.java | 38 ++++++++++--------- 2 files changed, 22 insertions(+), 19 deletions(-) diff --git a/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/config/TwitterNamespaceHandler.java b/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/config/TwitterNamespaceHandler.java index d6640e1843..ff8e886454 100644 --- a/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/config/TwitterNamespaceHandler.java +++ b/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/config/TwitterNamespaceHandler.java @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.springframework.integration.twitter.config; import org.springframework.integration.config.xml.AbstractIntegrationNamespaceHandler; @@ -26,7 +27,7 @@ import org.springframework.integration.config.xml.AbstractIntegrationNamespaceHa */ public class TwitterNamespaceHandler extends AbstractIntegrationNamespaceHandler { - public static String BASE_PACKAGE = "org.springframework.integration.twitter"; + static String BASE_PACKAGE = "org.springframework.integration.twitter"; public void init() { diff --git a/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/config/TwitterReceivingMessageSourceParser.java b/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/config/TwitterReceivingMessageSourceParser.java index 0d2615f166..0481fd44c2 100644 --- a/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/config/TwitterReceivingMessageSourceParser.java +++ b/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/config/TwitterReceivingMessageSourceParser.java @@ -21,9 +21,7 @@ import static org.springframework.integration.twitter.config.TwitterNamespaceHan import org.w3c.dom.Element; import org.springframework.beans.BeanMetadataElement; -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.xml.ParserContext; import org.springframework.integration.config.xml.AbstractPollingInboundChannelAdapterParser; import org.springframework.integration.config.xml.IntegrationNamespaceUtils; @@ -39,8 +37,26 @@ public class TwitterReceivingMessageSourceParser extends AbstractPollingInboundC @Override protected BeanMetadataElement parseSource(Element element, ParserContext parserContext) { - String elementName = element.getLocalName().trim(); + String className = determineClassName(element, parserContext); + BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(className); + String templateBeanName = element.getAttribute("twitter-template"); + if (StringUtils.hasText(templateBeanName)) { + builder.addConstructorArgReference(templateBeanName); + } + else { + BeanDefinitionBuilder templateBuilder = BeanDefinitionBuilder.genericBeanDefinition( + BASE_PACKAGE + ".core.Twitter4jTemplate"); + builder.addConstructorArgValue(templateBuilder.getBeanDefinition()); + } + IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "auto-startup"); + IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "query"); + return builder.getBeanDefinition(); + } + + + private static String determineClassName(Element element, ParserContext parserContext) { String className = null; + String elementName = element.getLocalName().trim(); if ("inbound-channel-adapter".equals(elementName)) { className = BASE_PACKAGE + ".inbound.TimelineReceivingMessageSource"; } @@ -56,21 +72,7 @@ public class TwitterReceivingMessageSourceParser extends AbstractPollingInboundC else { parserContext.getReaderContext().error("element '" + elementName + "' is not supported by this parser.", element); } - BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(className); - String templateBeanName = element.getAttribute("twitter-template"); - - if (!StringUtils.hasText(templateBeanName)){ - BeanDefinitionBuilder templateBuilder = - BeanDefinitionBuilder.genericBeanDefinition("org.springframework.integration.twitter.core.Twitter4jTemplate"); - builder.addConstructorArgValue(templateBuilder.getBeanDefinition()); - } else { - builder.addConstructorArgReference(templateBeanName); - } - - IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "auto-startup"); - IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "query"); - String name = BeanDefinitionReaderUtils.registerWithGeneratedName(builder.getBeanDefinition(), parserContext.getRegistry()); - return new RuntimeBeanReference(name); + return className; } }