private List<String> sendAndReceiveMessage(DirectChannel channel, int timeout, Message<?> input) { MessagingTemplate messagingTemplate = new MessagingTemplate(); messagingTemplate.setReceiveTimeout(timeout); @SuppressWarnings("unchecked") Message<List<String>> message = (Message<List<String>>) messagingTemplate.sendAndReceive(channel, input); return message == null ? null : message.getPayload(); }
@Test public void expressionWithDateType() { MessagingTemplate template = new MessagingTemplate(); MessageChannel channel = context.getBean("expressionWithDateTypeInput", MessageChannel.class); Message<?> result = template.sendAndReceive(channel, new GenericMessage<>("test")); assertNotNull(result); Object headerValue = result.getHeaders().get("currentDate"); assertEquals(Date.class, headerValue.getClass()); Date date = (Date) headerValue; assertTrue(new Date().getTime() - date.getTime() < 1000); }
@Test public void literalValue() { MessagingTemplate template = new MessagingTemplate(); template.setDefaultDestination(literalValueInput); Message<?> result = template.sendAndReceive(new GenericMessage<>("foo")); Map<String, Object> headers = result.getHeaders(); assertEquals("http://test", headers.get(WebServiceHeaders.SOAP_ACTION)); }
@Test public void expression() { MessagingTemplate template = new MessagingTemplate(); template.setDefaultDestination(expressionInput); Message<?> result = template.sendAndReceive(new GenericMessage<>("foo")); Map<String, Object> headers = result.getHeaders(); assertEquals("http://foo", headers.get(WebServiceHeaders.SOAP_ACTION)); }
@Test public void ref() { MessagingTemplate template = new MessagingTemplate(); MessageChannel channel = context.getBean("ref", MessageChannel.class); Message<?> result = template.sendAndReceive(channel, new GenericMessage<>("test")); assertNotNull(result); assertEquals(TestBean.class, result.getHeaders().get("testHeader").getClass()); TestBean testBeanForRef = context.getBean("testBean1", TestBean.class); assertSame(testBeanForRef, result.getHeaders().get("testHeader")); }
@Test public void expressionWithLongType() { MessagingTemplate template = new MessagingTemplate(); MessageChannel channel = context.getBean("expressionWithLongTypeInput", MessageChannel.class); Message<?> result = template.sendAndReceive(channel, new GenericMessage<>("test")); assertNotNull(result); assertEquals(Long.class, result.getHeaders().get("number").getClass()); assertEquals(12345L, result.getHeaders().get("number")); }
@Test public void refWithMethod() { MessagingTemplate template = new MessagingTemplate(); MessageChannel channel = context.getBean("refWithMethod", MessageChannel.class); Message<?> result = template.sendAndReceive(channel, new GenericMessage<>("test")); assertNotNull(result); assertEquals(String.class, result.getHeaders().get("testHeader").getClass()); assertEquals("testBeanForMethodInvoker", result.getHeaders().get("testHeader")); }
@Test public void innerBeanWithMethod() { MessagingTemplate template = new MessagingTemplate(); MessageChannel channel = context.getBean("innerBeanWithMethod", MessageChannel.class); Message<?> result = template.sendAndReceive(channel, new GenericMessage<>("test")); assertNotNull(result); assertEquals(String.class, result.getHeaders().get("testHeader").getClass()); assertEquals("testBeanForInnerBeanWithMethod", result.getHeaders().get("testHeader")); }
@Test public void priorityExpression() { MessagingTemplate template = new MessagingTemplate(); MessageChannel channel = context.getBean("priorityExpressionInput", MessageChannel.class); Message<?> result = template.sendAndReceive(channel, new GenericMessage<>(Collections.singletonMap("priority", "-10"))); assertNotNull(result); assertEquals(new Integer(-10), new IntegrationMessageHeaderAccessor(result).getPriority()); }
@Test public void innerBean() { MessagingTemplate template = new MessagingTemplate(); MessageChannel channel = context.getBean("innerBean", MessageChannel.class); Message<?> result = template.sendAndReceive(channel, new GenericMessage<>("test")); assertNotNull(result); assertEquals(TestBean.class, result.getHeaders().get("testHeader").getClass()); TestBean testBeanForInnerBean = new TestBean("testBeanForInnerBean"); assertEquals(testBeanForInnerBean, result.getHeaders().get("testHeader")); }
@Test public void priority() { MessagingTemplate template = new MessagingTemplate(); MessageChannel channel = context.getBean("priorityInput", MessageChannel.class); Message<?> result = template.sendAndReceive(channel, new GenericMessage<>("test")); assertNotNull(result); assertEquals(new Integer(42), new IntegrationMessageHeaderAccessor(result).getPriority()); }
@Test public void expirationDateValue() { MessagingTemplate template = new MessagingTemplate(); MessageChannel channel = context.getBean("expirationDateValueInput", MessageChannel.class); Message<?> result = template.sendAndReceive(channel, new GenericMessage<>("test")); assertNotNull(result); assertEquals(new Long(1111), new IntegrationMessageHeaderAccessor(result).getExpirationDate()); }
@Test public void expirationDateRef() { MessagingTemplate template = new MessagingTemplate(); MessageChannel channel = context.getBean("expirationDateRefInput", MessageChannel.class); Message<?> result = template.sendAndReceive(channel, new GenericMessage<>("test")); assertNotNull(result); assertEquals(new Long(9999), new IntegrationMessageHeaderAccessor(result).getExpirationDate()); }
@Test public void priorityExplicitOverwriteTrue() { MessageChannel channel = this.context.getBean("priorityExplicitOverwriteTrueInput", MessageChannel.class); MessagingTemplate template = new MessagingTemplate(); template.setDefaultDestination(channel); Message<?> result = template.sendAndReceive(new GenericMessage<String>("test")); assertNotNull(result); assertEquals(new Integer(42), new IntegrationMessageHeaderAccessor(result).getPriority()); }
@Test public void gateway() throws Exception { Message<?> message1 = MessageBuilder.withPayload("test-1").setHeader("destinationNumber", 1).build(); Message<?> message2 = MessageBuilder.withPayload("test-2").setHeader("destinationNumber", 2).build(); MessagingTemplate template = new MessagingTemplate(); Message<?> result1 = template.sendAndReceive(gatewayChannel, message1); Message<?> result2 = template.sendAndReceive(gatewayChannel, message2); assertNotNull(result1); assertNotNull(result2); assertEquals("test-1!", result1.getPayload()); assertEquals("test-2!!", result2.getPayload()); }
@Test public void expressionUsingHeader() { MessagingTemplate template = new MessagingTemplate(); MessageChannel channel = context.getBean("headerExpressionInput", MessageChannel.class); Message<?> message = MessageBuilder.withPayload("test").setHeader("testHeader1", "foo").build(); Message<?> result = template.sendAndReceive(channel, message); assertNotNull(result); assertEquals("foobar", result.getHeaders().get("testHeader2")); }
@Test public void correlationIdValueWithType() { MessagingTemplate template = new MessagingTemplate(); MessageChannel channel = context.getBean("correlationIdValueWithTypeInput", MessageChannel.class); Message<?> result = template.sendAndReceive(channel, new GenericMessage<>("test")); assertNotNull(result); Object correlationId = new IntegrationMessageHeaderAccessor(result).getCorrelationId(); assertEquals(Long.class, correlationId.getClass()); assertEquals(123L, correlationId); }
@Test public void expressionUsingPayload() { MessagingTemplate template = new MessagingTemplate(); MessageChannel channel = context.getBean("payloadExpressionInput", MessageChannel.class); Message<?> result = template.sendAndReceive(channel, new GenericMessage<>(new TestBean("foo"))); assertNotNull(result); assertEquals("foobar", result.getHeaders().get("testHeader")); }
@Test public void correlationIdValue() { MessagingTemplate template = new MessagingTemplate(); MessageChannel channel = context.getBean("correlationIdValueInput", MessageChannel.class); Message<?> result = template.sendAndReceive(channel, new GenericMessage<>("test")); assertNotNull(result); assertEquals("ABC", new IntegrationMessageHeaderAccessor(result).getCorrelationId()); }
@Test public void correlationIdRef() { MessagingTemplate template = new MessagingTemplate(); MessageChannel channel = context.getBean("correlationIdRefInput", MessageChannel.class); Message<?> result = template.sendAndReceive(channel, new GenericMessage<>("test")); assertNotNull(result); assertEquals(123, new IntegrationMessageHeaderAccessor(result).getCorrelationId()); }