@Override public <T> MutableMessageBuilder<T> fromMessage(Message<T> message) { return MutableMessageBuilder.fromMessage(message); }
/** * Create a builder for a new {@link Message} instance with the provided payload. * The {@code generateHeaders} flag allows to disable {@link MessageHeaders#ID} * and {@link MessageHeaders#TIMESTAMP} headers generation. * @param payload the payload for the new message * @param generateHeaders whether generate {@link MessageHeaders#ID} * and {@link MessageHeaders#TIMESTAMP} headers * @param <T> The type of the payload. * @return A MutableMessageBuilder. * @since 5.0 */ public static <T> MutableMessageBuilder<T> withPayload(T payload, boolean generateHeaders) { MutableMessage<T> message; if (generateHeaders) { message = new MutableMessage<>(payload); } else { message = new MutableMessage<>(payload, new MutableMessageHeaders(null, MessageHeaders.ID_VALUE_NONE, -1L)); } return fromMessage(message); }
@Test public void testPushAndPopSequenceDetailsWhenNoCorrelationIdMutable() throws Exception { Message<Integer> message1 = MutableMessageBuilder.withPayload(1).build(); assertFalse(message1.getHeaders().containsKey(IntegrationMessageHeaderAccessor.SEQUENCE_DETAILS)); Message<Integer> message2 = MutableMessageBuilder.fromMessage(message1).pushSequenceDetails("bar", 1, 1).build(); assertFalse(message2.getHeaders().containsKey(IntegrationMessageHeaderAccessor.SEQUENCE_DETAILS)); Message<Integer> message3 = MutableMessageBuilder.fromMessage(message2).popSequenceDetails().build(); assertFalse(message3.getHeaders().containsKey(IntegrationMessageHeaderAccessor.SEQUENCE_DETAILS)); }
@Test public void testPushAndPopSequenceDetailsMutable() throws Exception { Message<Integer> message1 = MutableMessageBuilder.withPayload(1).pushSequenceDetails("foo", 1, 2).build(); assertFalse(message1.getHeaders().containsKey(IntegrationMessageHeaderAccessor.SEQUENCE_DETAILS)); Message<Integer> message2 = MutableMessageBuilder.fromMessage(message1).pushSequenceDetails("bar", 1, 1).build(); assertTrue(message2.getHeaders().containsKey(IntegrationMessageHeaderAccessor.SEQUENCE_DETAILS)); Message<Integer> message3 = MutableMessageBuilder.fromMessage(message2).popSequenceDetails().build(); assertFalse(message3.getHeaders().containsKey(IntegrationMessageHeaderAccessor.SEQUENCE_DETAILS)); }
@Test public void testPushAndPopSequenceDetailsWhenNoSequenceMutable() throws Exception { Message<Integer> message1 = MutableMessageBuilder.withPayload(1).setCorrelationId("foo").build(); assertFalse(message1.getHeaders().containsKey(IntegrationMessageHeaderAccessor.SEQUENCE_DETAILS)); Message<Integer> message2 = MutableMessageBuilder.fromMessage(message1).pushSequenceDetails("bar", 1, 1).build(); assertTrue(message2.getHeaders().containsKey(IntegrationMessageHeaderAccessor.SEQUENCE_DETAILS)); Message<Integer> message3 = MutableMessageBuilder.fromMessage(message2).popSequenceDetails().build(); assertFalse(message3.getHeaders().containsKey(IntegrationMessageHeaderAccessor.SEQUENCE_DETAILS)); }
@Override public <T> MutableMessageBuilder<T> fromMessage(Message<T> message) { return MutableMessageBuilder.fromMessage(message); }
@Test public void testPopSequenceDetailsWhenNotPoppedMutable() throws Exception { Message<Integer> message1 = MutableMessageBuilder.withPayload(1).build(); assertFalse(message1.getHeaders().containsKey(IntegrationMessageHeaderAccessor.SEQUENCE_DETAILS)); Message<Integer> message2 = MutableMessageBuilder.fromMessage(message1).popSequenceDetails().build(); assertFalse(message2.getHeaders().containsKey(IntegrationMessageHeaderAccessor.SEQUENCE_DETAILS)); }
@Test public void mutable() { MutableMessageBuilder<String> builder = MutableMessageBuilder.withPayload("test"); Message<String> message1 = builder .setHeader("foo", "bar").build(); Message<String> message2 = MutableMessageBuilder.fromMessage(message1).setHeader("another", 1).build(); assertEquals("bar", message2.getHeaders().get("foo")); assertSame(message1.getHeaders().getId(), message2.getHeaders().getId()); assertTrue(message2 == message1); }
@Test public void mutableFromImmutable() { Message<String> message1 = MessageBuilder.withPayload("test") .setHeader("foo", "bar").build(); Message<String> message2 = MutableMessageBuilder.fromMessage(message1).setHeader("another", 1).build(); assertEquals("bar", message2.getHeaders().get("foo")); assertSame(message1.getHeaders().getId(), message2.getHeaders().getId()); assertNotSame(message1, message2); assertFalse(message2 == message1); }
Message<?> requestMessage = MutableMessageBuilder.fromMessage(message) .setReplyChannel(replyChan) .setHeader(this.messagingTemplate.getSendTimeoutHeader(), null)
/** * Create a builder for a new {@link Message} instance with the provided payload. * The {@code generateHeaders} flag allows to disable {@link MessageHeaders#ID} * and {@link MessageHeaders#TIMESTAMP} headers generation. * @param payload the payload for the new message * @param generateHeaders whether generate {@link MessageHeaders#ID} * and {@link MessageHeaders#TIMESTAMP} headers * @param <T> The type of the payload. * @return A MutableMessageBuilder. * @since 5.0 */ public static <T> MutableMessageBuilder<T> withPayload(T payload, boolean generateHeaders) { MutableMessage<T> message; if (generateHeaders) { message = new MutableMessage<>(payload); } else { message = new MutableMessage<>(payload, new MutableMessageHeaders(null, MessageHeaders.ID_VALUE_NONE, -1L)); } return fromMessage(message); }
Message<?> requestMessage = MutableMessageBuilder.fromMessage(message) .setReplyChannel(replyChan) .setHeader(this.messagingTemplate.getSendTimeoutHeader(), null)