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:
@@ -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>
|
||||
|
||||
@@ -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/>
|
||||
|
||||
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user