@Test
public void fromBodyAndMessageCloned() {
byte[] bytes = "foo".getBytes();
MessageProperties properties = new MessageProperties();
Address replyTo = new Address("address");
Message message1 = MessageBuilder.withClonedBody(bytes)
.andProperties(this.setAll(MessagePropertiesBuilder.fromClonedProperties(properties))
.setReplyToAddress(replyTo)
.setReplyToAddressIfAbsent(new Address("addressxxxx"))
.build())
.build();
assertNotSame(bytes, message1.getBody());
assertTrue(Arrays.equals(bytes, message1.getBody()));
assertEquals(replyTo.toString(), message1.getMessageProperties().getReplyToAddress().toString());
Address foo = new Address("foo");
Message message2 = MessageBuilder.fromClonedMessage(message1)
.setReplyToAddress(foo)
.build();
assertNotSame(message1.getBody(), message2.getBody());
assertTrue(Arrays.equals(bytes, message2.getBody()));
assertEquals(message1.getMessageProperties(), MessageBuilder.fromMessage(message2)
.setReplyToAddress(replyTo).build().getMessageProperties());
assertEquals(foo.toString(), message2.getMessageProperties().getReplyToAddress().toString());
Message message3 = MessageBuilder.fromClonedMessage(message1)
.setReplyToAddressIfAbsent(foo)
.build();
assertEquals(replyTo.toString(), message3.getMessageProperties().getReplyToAddress().toString());
Message message4 = MessageBuilder.fromClonedMessage(message1)
.setReplyToAddress(null)
.setReplyToAddressIfAbsent(foo)
.build();
assertEquals(foo.toString(), message4.getMessageProperties().getReplyToAddress().toString());
}