diff --git a/spring-integration-core/src/main/java/org/springframework/integration/config/xml/RecipientListRouterParser.java b/spring-integration-core/src/main/java/org/springframework/integration/config/xml/RecipientListRouterParser.java index 9408c66a78..352501f0e4 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/config/xml/RecipientListRouterParser.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/config/xml/RecipientListRouterParser.java @@ -51,7 +51,7 @@ public class RecipientListRouterParser extends AbstractConsumerEndpointParser { BeanDefinitionBuilder recipientBuilder = BeanDefinitionBuilder.genericBeanDefinition( "org.springframework.integration.router.RecipientListRouter.Recipient"); recipientBuilder.addConstructorArgReference(childElement.getAttribute("channel")); - String expression = childElement.getAttribute("expression"); + String expression = childElement.getAttribute("selector-expression"); if (StringUtils.hasText(expression)) { BeanDefinition selectorDef = new RootBeanDefinition( "org.springframework.integration.filter.ExpressionEvaluatingSelector"); diff --git a/spring-integration-core/src/main/resources/org/springframework/integration/config/xml/spring-integration-2.0.xsd b/spring-integration-core/src/main/resources/org/springframework/integration/config/xml/spring-integration-2.0.xsd index 0c60d65036..93fc7beb04 100644 --- a/spring-integration-core/src/main/resources/org/springframework/integration/config/xml/spring-integration-2.0.xsd +++ b/spring-integration-core/src/main/resources/org/springframework/integration/config/xml/spring-integration-2.0.xsd @@ -1642,7 +1642,7 @@ - + An expression to be evaluated to determine if this recipient should be included in the recipient diff --git a/spring-integration-core/src/test/java/org/springframework/integration/router/config/RecipientListRouterParserTests-context.xml b/spring-integration-core/src/test/java/org/springframework/integration/router/config/RecipientListRouterParserTests-context.xml index 6bffffdf0b..96cd2bd064 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/router/config/RecipientListRouterParserTests-context.xml +++ b/spring-integration-core/src/test/java/org/springframework/integration/router/config/RecipientListRouterParserTests-context.xml @@ -15,10 +15,16 @@ + + + + + + @@ -32,4 +38,12 @@ + + + + + + + + diff --git a/spring-integration-core/src/test/java/org/springframework/integration/router/config/RecipientListRouterParserTests.java b/spring-integration-core/src/test/java/org/springframework/integration/router/config/RecipientListRouterParserTests.java index 6ee55536a1..4604097e2c 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/router/config/RecipientListRouterParserTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/router/config/RecipientListRouterParserTests.java @@ -17,6 +17,7 @@ package org.springframework.integration.router.config; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import org.junit.Test; @@ -51,6 +52,9 @@ public class RecipientListRouterParserTests { @Qualifier("routingChannelA") private MessageChannel channel; + @Autowired + private MessageChannel simpleDynamicInput; + @Test public void checkMessageRouting() { context.start(); @@ -88,4 +92,23 @@ public class RecipientListRouterParserTests { assertEquals(Boolean.TRUE, accessor.getPropertyValue("ignoreSendFailures")); } + @Test + public void simpleDynamicRouter() { + context.start(); + Message message = new GenericMessage(1); + simpleDynamicInput.send(message); + PollableChannel chanel1 = (PollableChannel) context.getBean("channel1"); + PollableChannel chanel2 = (PollableChannel) context.getBean("channel2"); + assertTrue(chanel1.receive(0).getPayload().equals(1)); + assertNull(chanel2.receive(0)); + } + + + public static class TestBean { + + public boolean accept(int number) { + return number == 1; + } + } + }