public void aTerminatingServiceMethod(Message<?> message) { String payload = "Foo ".concat(message.getPayload().toString()).concat(" (Terminating)"); enricherReplyChannel.send(MessageBuilder.withPayload(payload).copyHeaders(message.getHeaders()).build()); }
@Override public Message<?> beforeHandle(Message<?> message, MessageChannel channel, MessageHandler handler) { return MessageBuilder.withPayload(((String) message.getPayload()).toUpperCase()) .copyHeaders(message.getHeaders()) .build(); }
@Override public Message<?> preSend(Message<?> message, MessageChannel channel) { Object payload; if (Thread.currentThread().equals(message.getPayload())) { // running on calling thread - need to return a Future. payload = new AsyncResult<>(Thread.currentThread()); } else { payload = Thread.currentThread(); } return MessageBuilder.withPayload(payload) .copyHeaders(message.getHeaders()) .build(); }
@Test public void testCopySameHeaderValuesNotModifiedSameMessage() throws Exception { Date current = new Date(); Map<String, Object> originalHeaders = new HashMap<String, Object>(); originalHeaders.put("b", "xyz"); originalHeaders.put("c", current); Message<?> original = MessageBuilder.withPayload("foo").setHeader("a", 123).copyHeaders(originalHeaders).build(); Map<String, Object> newHeaders = new HashMap<String, Object>(); newHeaders.put("a", 123); newHeaders.put("b", "xyz"); newHeaders.put("c", current); Message<?> result = MessageBuilder.fromMessage(original).copyHeaders(newHeaders).build(); assertEquals(original, result); }
@Test public void singleIntegerHeaderOnlyWithIntegerPayload() throws Exception { MessageHandler handler = this.getHandler("singleIntegerHeaderOnly", Integer.class); Map<String, Object> headers = new HashMap<String, Object>(); headers.put("foo", new Integer(123)); headers.put("bar", new Integer(456)); Message<?> message = MessageBuilder.withPayload(new Integer(789)) .copyHeaders(headers).build(); handler.handleMessage(message); assertNull(bean.lastPayload); assertEquals(new Integer(123), bean.lastHeaders.get("foo")); assertNull(bean.lastHeaders.get("bar")); }
@Test public void singleObjectHeaderOnlyWithIntegerPayload() throws Exception { MessageHandler handler = this.getHandler("singleObjectHeaderOnly", Object.class); Map<String, Object> headers = new HashMap<String, Object>(); headers.put("foo", new Integer(123)); headers.put("bar", new Integer(456)); Message<?> message = MessageBuilder.withPayload(new Integer(789)) .copyHeaders(headers).build(); handler.handleMessage(message); assertNull(bean.lastPayload); assertEquals(new Integer(123), bean.lastHeaders.get("foo")); assertNull(bean.lastHeaders.get("bar")); }
@Test public void singleIntegerHeaderOnlyWithStringPayload() throws Exception { MessageHandler handler = this.getHandler("singleIntegerHeaderOnly", Integer.class); Map<String, Object> headers = new HashMap<String, Object>(); headers.put("foo", new Integer(123)); headers.put("bar", new Integer(456)); Message<?> message = MessageBuilder.withPayload("test") .copyHeaders(headers).build(); handler.handleMessage(message); assertNull(bean.lastPayload); assertEquals(new Integer(123), bean.lastHeaders.get("foo")); assertNull(bean.lastHeaders.get("bar")); }
@Test public void singleIntegerHeaderOnlyWithIntegerPayloadAndStringHeader() throws Exception { MessageHandler handler = this.getHandler("singleIntegerHeaderOnly", Integer.class); Map<String, Object> headers = new HashMap<String, Object>(); headers.put("foo", "999"); headers.put("bar", new Integer(456)); Message<?> message = MessageBuilder.withPayload(new Integer(789)) .copyHeaders(headers).build(); handler.handleMessage(message); assertNull(bean.lastPayload); assertEquals(new Integer(999), bean.lastHeaders.get("foo")); assertNull(bean.lastHeaders.get("bar")); }
@Test public void singleStringHeaderOnlyWithIntegerPayload() throws Exception { MessageHandler handler = this.getHandler("singleStringHeaderOnly", String.class); Map<String, Object> headers = new HashMap<String, Object>(); headers.put("foo", "1"); headers.put("bar", "2"); Message<?> message = MessageBuilder.withPayload(new Integer(123)) .copyHeaders(headers).build(); handler.handleMessage(message); assertNull(bean.lastPayload); assertEquals("1", bean.lastHeaders.get("foo")); assertNull(bean.lastHeaders.get("bar")); }
@Test public void singleObjectHeaderOnlyWithObjectPayload() throws Exception { MessageHandler handler = this.getHandler("singleObjectHeaderOnly", Object.class); Map<String, Object> headers = new HashMap<String, Object>(); headers.put("foo", "123"); headers.put("bar", "456"); Message<?> message = MessageBuilder.withPayload(new Object()) .copyHeaders(headers).build(); handler.handleMessage(message); assertNull(bean.lastPayload); assertEquals("123", bean.lastHeaders.get("foo")); assertNull(bean.lastHeaders.get("bar")); }
@Test public void propertiesOnlyNoAnnotationsWithIntegerPayload() throws Exception { MessageHandler handler = this.getHandler("propertiesOnlyNoAnnotations", Properties.class); Integer payload = new Integer(123); Map<String, Object> headers = new HashMap<String, Object>(); headers.put("foo", "1"); headers.put("bar", "2"); Message<?> message = MessageBuilder.withPayload(payload).copyHeaders(headers).build(); handler.handleMessage(message); assertNull(bean.lastPayload); assertTrue(bean.lastHeaders.containsKey("foo")); assertTrue(bean.lastHeaders.containsKey("bar")); }
@Test public void singleObjectHeaderOnlyWithStringPayload() throws Exception { MessageHandler handler = this.getHandler("singleObjectHeaderOnly", Object.class); Map<String, Object> headers = new HashMap<String, Object>(); headers.put("foo", "123"); headers.put("bar", "456"); Message<?> message = MessageBuilder.withPayload("test") .copyHeaders(headers).build(); handler.handleMessage(message); assertNull(bean.lastPayload); assertEquals("123", bean.lastHeaders.get("foo")); assertNull(bean.lastHeaders.get("bar")); }
private void testAggregatorDefinitionSuccess(String configProperty) { ApplicationContext ac = this.bootStrap(configProperty); MessageChannel inChannel = (MessageChannel) ac.getBean("inChannel"); for (int i = 0; i < 5; i++) { Map<String, Object> headers = stubHeaders(i, 5, 1); Message<Integer> message = MessageBuilder.withPayload(i).copyHeaders(headers).build(); inChannel.send(message); } PollableChannel output = (PollableChannel) ac.getBean("outChannel"); Message<?> receivedMessage = output.receive(10000); assertNotNull(receivedMessage); assertEquals(0 + 1 + 2 + 3 + 4, receivedMessage.getPayload()); }
@Test public void singleStringHeaderOnlyWithStringPayload() throws Exception { MessageHandler handler = this.getHandler("singleStringHeaderOnly", String.class); Map<String, Object> headers = new HashMap<String, Object>(); headers.put("foo", "1"); headers.put("bar", "2"); Message<?> message = MessageBuilder.withPayload("test") .copyHeaders(headers).build(); handler.handleMessage(message); assertNull(bean.lastPayload); assertEquals("1", bean.lastHeaders.get("foo")); assertNull(bean.lastHeaders.get("bar")); }
@Test public void twoMapsWithAnnotationsWithStringPayload() throws Exception { MessageHandler handler = this.getHandler("twoMapsWithAnnotations", Map.class, Map.class); Map<String, Object> headers = new HashMap<String, Object>(); headers.put("foo", "1"); headers.put("bar", "2"); Message<?> message = MessageBuilder.withPayload("test").copyHeaders(headers).build(); handler.handleMessage(message); assertNull(bean.lastPayload); assertEquals("1", bean.lastHeaders.get("foo")); assertEquals("2", bean.lastHeaders.get("bar")); assertEquals("1", bean.lastHeaders.get("foo2")); assertEquals("2", bean.lastHeaders.get("bar2")); }
@Test public void mapOnlyNoAnnotationsWithMapPayload() throws Exception { MessageHandler handler = this.getHandler("mapOnlyNoAnnotations", Map.class); Map<String, Object> payload = new HashMap<String, Object>(); payload.put("payload", 1); Map<String, Object> headers = new HashMap<String, Object>(); Message<?> message = MessageBuilder.withPayload(payload).copyHeaders(headers).build(); handler.handleMessage(message); assertEquals(payload, bean.lastPayload); assertNull(bean.lastHeaders); }
@Test public void mapAndAnnotatedStringHeaderWithStringPayload() throws Exception { MessageHandler handler = this.getHandler( "mapAndAnnotatedStringHeaderExpectingMapAsHeaders", Map.class, String.class); Map<String, Object> headers = new HashMap<String, Object>(); headers.put("foo", "1"); headers.put("bar", "2"); Message<?> message = MessageBuilder.withPayload("test") .copyHeaders(headers).build(); handler.handleMessage(message); assertNull(bean.lastPayload); assertEquals("1", bean.lastHeaders.get("foo")); assertEquals("2", bean.lastHeaders.get("bar")); assertEquals("1", bean.lastHeaders.get("foo2")); }
@Test public void propertiesOnlyNoAnnotationsWithPropertiesPayload() throws Exception { MessageHandler handler = this.getHandler("propertiesOnlyNoAnnotations", Properties.class); Properties payload = new Properties(); payload.setProperty("payload", "1"); Map<String, Object> headers = new HashMap<String, Object>(); Message<?> message = MessageBuilder.withPayload(payload).copyHeaders(headers).build(); handler.handleMessage(message); assertEquals(payload, bean.lastPayload); assertNull(bean.lastHeaders); }
@Test public void propertiesOnlyNoAnnotationsWithMapPayload() throws Exception { MessageHandler handler = this.getHandler("propertiesOnlyNoAnnotations", Properties.class); Map<String, Object> payload = new HashMap<String, Object>(); payload.put("payload", 1); Map<String, Object> headers = new HashMap<String, Object>(); Message<?> message = MessageBuilder.withPayload(payload).copyHeaders(headers).build(); handler.handleMessage(message); assertEquals(payload, bean.lastPayload); assertNull(bean.lastHeaders); }
@Override @SuppressWarnings("unchecked") public Message<?> convert(Document source) { return MessageBuilder.withPayload(source.get("payload")) .copyHeaders((Map<String, ?>) source.get("headers")) .build(); }