INT-1604 polishing

This commit is contained in:
Mark Fisher
2010-11-11 18:08:45 -05:00
parent 373884d40d
commit 22db707b5d
2 changed files with 22 additions and 19 deletions

View File

@@ -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() {

View File

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