diff --git a/spring-integration-core/src/main/java/org/springframework/integration/config/MessageBusParser.java b/spring-integration-core/src/main/java/org/springframework/integration/config/MessageBusParser.java index c696957320..e4cd9d5da8 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/config/MessageBusParser.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/config/MessageBusParser.java @@ -42,8 +42,6 @@ import org.springframework.util.StringUtils; */ public class MessageBusParser extends AbstractSimpleBeanDefinitionParser { - private static final String REFERENCE_ATTRIBUTE = "ref"; - public static final String MESSAGE_BUS_BEAN_NAME = "internal.MessageBus"; public static final String MESSAGE_BUS_AWARE_POST_PROCESSOR_BEAN_NAME = "internal.MessageBusAwareBeanPostProcessor"; @@ -55,10 +53,9 @@ public class MessageBusParser extends AbstractSimpleBeanDefinitionParser { private static final String DEFAULT_CONCURRENCY_ELEMENT = "default-concurrency"; private static final String DEFAULT_CONCURRENCY_PROPERTY = "defaultConcurrencyPolicy"; - - private static final String CHANNEL_FACTORY_ELEMENT = "channel-factory"; - - private static final String CHANNEL_FACTORY_PROPERTY = "channelFactory"; + + private static final String CHANNEL_FACTORY_ATTRIBUTE = "channel-factory"; + @Override protected String resolveId(Element element, AbstractBeanDefinition definition, ParserContext parserContext) @@ -77,7 +74,9 @@ public class MessageBusParser extends AbstractSimpleBeanDefinitionParser { @Override protected boolean isEligibleAttribute(String attributeName) { - return !ERROR_CHANNEL_ATTRIBUTE.equals(attributeName) && super.isEligibleAttribute(attributeName); + return !ERROR_CHANNEL_ATTRIBUTE.equals(attributeName) && + !CHANNEL_FACTORY_ATTRIBUTE.equals(attributeName) && + super.isEligibleAttribute(attributeName); } @Override @@ -87,10 +86,15 @@ public class MessageBusParser extends AbstractSimpleBeanDefinitionParser { beanDefinition.addPropertyReference(Conventions.attributeNameToPropertyName( ERROR_CHANNEL_ATTRIBUTE), errorChannelRef); } - this.processAdditionalChildElements(beanDefinition, element); + String channelFactoryRef = element.getAttribute(CHANNEL_FACTORY_ATTRIBUTE); + if (StringUtils.hasText(channelFactoryRef)) { + beanDefinition.addPropertyReference(Conventions.attributeNameToPropertyName( + CHANNEL_FACTORY_ATTRIBUTE), channelFactoryRef); + } + this.processChildElements(beanDefinition, element); } - private void processAdditionalChildElements(BeanDefinitionBuilder beanDefinition, Element element) { + private void processChildElements(BeanDefinitionBuilder beanDefinition, Element element) { NodeList childNodes = element.getChildNodes(); for (int i = 0; i < childNodes.getLength(); i++) { Node child = childNodes.item(i); @@ -100,10 +104,6 @@ public class MessageBusParser extends AbstractSimpleBeanDefinitionParser { beanDefinition.addPropertyValue(DEFAULT_CONCURRENCY_PROPERTY, IntegrationNamespaceUtils.parseConcurrencyPolicy((Element) child)); } - else if (CHANNEL_FACTORY_ELEMENT.equals(localName)) { - beanDefinition.addPropertyReference(CHANNEL_FACTORY_PROPERTY, - ((Element) child).getAttribute(REFERENCE_ATTRIBUTE)); - } } } } diff --git a/spring-integration-core/src/main/java/org/springframework/integration/config/spring-integration-core-1.0.xsd b/spring-integration-core/src/main/java/org/springframework/integration/config/spring-integration-core-1.0.xsd index 90891a2710..bc32f7a68f 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/config/spring-integration-core-1.0.xsd +++ b/spring-integration-core/src/main/java/org/springframework/integration/config/spring-integration-core-1.0.xsd @@ -26,10 +26,10 @@ - + @@ -44,7 +44,7 @@ - + @@ -266,15 +266,6 @@ - - - - - Defines a channel factory. - - - - diff --git a/spring-integration-core/src/test/java/org/springframework/integration/config/messageBusWithChannelFactory.xml b/spring-integration-core/src/test/java/org/springframework/integration/config/messageBusWithChannelFactory.xml index e02f9dda0b..141e1a03c1 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/config/messageBusWithChannelFactory.xml +++ b/spring-integration-core/src/test/java/org/springframework/integration/config/messageBusWithChannelFactory.xml @@ -7,14 +7,12 @@ http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration-core-1.0.xsd"> + - - - - +