From de223a560f7d501c11f9a63437b7f5ebd7dda685 Mon Sep 17 00:00:00 2001 From: Mark Fisher Date: Tue, 8 Jun 2010 21:58:58 +0000 Subject: [PATCH] INT-1158 --- .../config/ImapIdleChannelAdapterParser.java | 31 ++++++------------- ...pIdleChannelAdapterParserTests-context.xml | 15 +++++++-- 2 files changed, 22 insertions(+), 24 deletions(-) diff --git a/spring-integration-mail/src/main/java/org/springframework/integration/mail/config/ImapIdleChannelAdapterParser.java b/spring-integration-mail/src/main/java/org/springframework/integration/mail/config/ImapIdleChannelAdapterParser.java index 19b90aa012..b9a1a0f711 100644 --- a/spring-integration-mail/src/main/java/org/springframework/integration/mail/config/ImapIdleChannelAdapterParser.java +++ b/spring-integration-mail/src/main/java/org/springframework/integration/mail/config/ImapIdleChannelAdapterParser.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2009 the original author or authors. + * Copyright 2002-2010 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,12 +18,12 @@ package org.springframework.integration.mail.config; import org.w3c.dom.Element; +import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.support.BeanDefinitionBuilder; -import org.springframework.beans.factory.support.BeanDefinitionReaderUtils; import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser; import org.springframework.beans.factory.xml.ParserContext; +import org.springframework.integration.config.xml.IntegrationNamespaceUtils; import org.springframework.util.Assert; -import org.springframework.util.StringUtils; /** * Parser for the <imap-idle-channel-adapter> element in the 'mail' namespace. @@ -51,32 +51,21 @@ public class ImapIdleChannelAdapterParser extends AbstractSingleBeanDefinitionPa protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) { String channel = element.getAttribute("channel"); Assert.hasText(channel, "the 'channel' attribute is required"); - builder.addConstructorArgReference(this.parseImapMailReceiver(element, parserContext)); + builder.addConstructorArgValue(this.parseImapMailReceiver(element, parserContext)); builder.addPropertyReference("outputChannel", channel); - String taskExecutorRef = element.getAttribute("task-executor"); - if (StringUtils.hasText(taskExecutorRef)) { - builder.addPropertyReference("taskExecutor", taskExecutorRef); - } - String autoStartup = element.getAttribute("auto-startup"); - if (StringUtils.hasText(autoStartup)) { - builder.addPropertyValue("autoStartup", autoStartup); - } + IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, "task-executor"); + IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "auto-startup"); } - private String parseImapMailReceiver(Element element, ParserContext parserContext) { + private BeanDefinition parseImapMailReceiver(Element element, ParserContext parserContext) { String uri = element.getAttribute("store-uri"); Assert.hasText(uri, "the 'store-uri' attribute is required"); BeanDefinitionBuilder receiverBuilder = BeanDefinitionBuilder.genericBeanDefinition( BASE_PACKAGE + ".ImapMailReceiver"); receiverBuilder.addConstructorArgValue(uri); - String propertiesRef = element.getAttribute("java-mail-properties"); - if (StringUtils.hasText(propertiesRef)) { - receiverBuilder.addPropertyReference("javaMailProperties", propertiesRef); - } - receiverBuilder.addPropertyValue("shouldDeleteMessages", - !"false".equals(element.getAttribute("should-delete-messages"))); - return BeanDefinitionReaderUtils.registerWithGeneratedName( - receiverBuilder.getBeanDefinition(), parserContext.getRegistry()); + IntegrationNamespaceUtils.setReferenceIfAttributeDefined(receiverBuilder, element, "java-mail-properties"); + receiverBuilder.addPropertyValue("shouldDeleteMessages", element.getAttribute("should-delete-messages")); + return receiverBuilder.getBeanDefinition(); } } diff --git a/spring-integration-mail/src/test/java/org/springframework/integration/mail/config/ImapIdleChannelAdapterParserTests-context.xml b/spring-integration-mail/src/test/java/org/springframework/integration/mail/config/ImapIdleChannelAdapterParserTests-context.xml index 3ca8b78dd4..75385ccef5 100644 --- a/spring-integration-mail/src/test/java/org/springframework/integration/mail/config/ImapIdleChannelAdapterParserTests-context.xml +++ b/spring-integration-mail/src/test/java/org/springframework/integration/mail/config/ImapIdleChannelAdapterParserTests-context.xml @@ -3,12 +3,15 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:task="http://www.springframework.org/schema/task" xmlns:util="http://www.springframework.org/schema/util" + xmlns:context="http://www.springframework.org/schema/context" xmlns:mail="http://www.springframework.org/schema/integration/mail" xmlns:integration="http://www.springframework.org/schema/integration" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd + http://www.springframework.org/schema/context + http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd http://www.springframework.org/schema/integration @@ -16,6 +19,12 @@ http://www.springframework.org/schema/integration/mail http://www.springframework.org/schema/integration/mail/spring-integration-mail.xsd"> + + + + false + + - + bar