INT-2315 headerValueRouter chain mapping minOcc=0

now <header-value-router> doesn't require mapping when it is defined inside <chain>.
Tests for <header-value-router> inside <chain>.
This commit is contained in:
Artem Bilan
2011-12-19 09:51:45 +02:00
committed by Mark Fisher
parent 6f10e92f77
commit 83700f73f4
3 changed files with 49 additions and 3 deletions

View File

@@ -2514,7 +2514,7 @@ endpoint itself is a Polling Consumer for a channel with a queue.
<xsd:complexContent>
<xsd:extension base="commonHeaderValueRouterType">
<xsd:sequence>
<xsd:element name="mapping" type="mappingValueChannelType" minOccurs="1" maxOccurs="unbounded">
<xsd:element name="mapping" type="mappingValueChannelType" minOccurs="0" maxOccurs="unbounded">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
@@ -3641,4 +3641,4 @@ endpoint itself is a Polling Consumer for a channel with a queue.
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
</xsd:schema>
</xsd:schema>

View File

@@ -71,6 +71,17 @@
</payload-type-router>
</chain>
<chain input-channel="headerValueRouterInput">
<header-value-router header-name="routingHeader"/>
</chain>
<chain input-channel="headerValueRouterWithMappingInput">
<header-value-router header-name="routingHeader">
<mapping value="isString" channel="strings"/>
<mapping value="isNumber" channel="numbers"/>
</header-value-router>
</chain>
<chain id="chainWithClaimChecks" input-channel="claimCheckInput" output-channel="claimCheckOutput">
<claim-check-in/>
<claim-check-out/>

View File

@@ -47,6 +47,7 @@ import org.springframework.util.StringUtils;
* @author Mark Fisher
* @author Iwein Fuld
* @author Dave Turanski
* @author Artem Bilan
*/
@ContextConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
@@ -86,7 +87,13 @@ public class ChainParserTests {
@Autowired
private MessageChannel payloadTypeRouterInput;
@Autowired
private MessageChannel headerValueRouterInput;
@Autowired
private MessageChannel headerValueRouterWithMappingInput;
@Autowired
@Qualifier("claimCheckInput")
private MessageChannel claimCheckInput;
@@ -190,6 +197,34 @@ public class ChainParserTests {
assertEquals(123, reply2.getPayload());
}
@Test // INT-2315
public void chainWithHeaderValueRouter() throws Exception {
Message<?> message1 = MessageBuilder.withPayload("test").setHeader("routingHeader", "strings").build();
Message<?> message2 = MessageBuilder.withPayload(123).setHeader("routingHeader", "numbers").build();
this.headerValueRouterInput.send(message1);
this.headerValueRouterInput.send(message2);
Message<?> reply1 = this.strings.receive(0);
Message<?> reply2 = this.numbers.receive(0);
assertNotNull(reply1);
assertNotNull(reply2);
assertEquals("test", reply1.getPayload());
assertEquals(123, reply2.getPayload());
}
@Test // INT-2315
public void chainWithHeaderValueRouterWithMapping() throws Exception {
Message<?> message1 = MessageBuilder.withPayload("test").setHeader("routingHeader", "isString").build();
Message<?> message2 = MessageBuilder.withPayload(123).setHeader("routingHeader", "isNumber").build();
this.headerValueRouterWithMappingInput.send(message1);
this.headerValueRouterWithMappingInput.send(message2);
Message<?> reply1 = this.strings.receive(0);
Message<?> reply2 = this.numbers.receive(0);
assertNotNull(reply1);
assertNotNull(reply2);
assertEquals("test", reply1.getPayload());
assertEquals(123, reply2.getPayload());
}
@Test // INT-1165
public void chainWithSendTimeout() {
Object endpoint = this.context.getBean("chainWithSendTimeout");